2016-11-06 15 views
0

私のERモデルは構造化された属性です。 属性userは、とりわけ、authentification属性を持っています。 algosalthashstretch:このathentification属性は他の属性にリンクされています。SQL Serverで構造化属性を定義する方法は?

Saltinghashingは右、種類のパスワードを保護する方法がありますか?

しかし、これらの属性が属性authentificationにリンクされており、すべてがテーブルuserの一部であることを定義するにはどうすればよいですか。

私のコード:

CREATE TABLE [user] 
(
ID INT PRIMARY KEY 
LastLogin Time, 
Admin BIT, 
Email VARCHAR(50) NOT NULL UNIQUE, 

-- "auth" for "authentification" 
auth algo CHECK(algo='sha1' OR algo='sha256'), 
auth stretch INT, 
auth salt VARCHAR(32), 
auth hash VARCHAR(24) 
) 

答えて

0

あなたはそれを正規化し、userテーブルで参照されている別のテーブルに認証タイプを移動する必要があります。

create table auth_type 
(
    id  integer primary key, 
    algorithm varchar(10) not null, 
    stretch integer not null 
    salt  VARCHAR(32) not null 
    hash  VARCHAR(24) not null, 
    constraint check_algo CHECK(algo='sha1' OR algo='sha256') 
); 

CREATE TABLE [user] 
(
    ID  INT PRIMARY KEY 
    LastLogin datetime2, -- I think only a time is probably not enough 
    Admin  BIT, 
    Email  VARCHAR(50) NOT NULL UNIQUE, 
    auth_id integer not null, 
    foreign key fk_user_auth (auth_id) references auth(id) 
); 
+0

はあなたに感謝。 SQL Server管理スタジオ2014の属性の階層をどこで確認できるか教えてください。 (接続が私のER-Modellで表現されている通りに働くことを確認するため) – noclue123

+0

とハッシングとソルトはパスワードを保護するためです( - >暗号化)、そうですか?だから今このコードでこれは私がハッシングと塩漬けに必要なものですか、何か他のものが必要でしょうか? – noclue123

+0

申し訳ありませんが私はSSMSを使用していません - 属性の塩とハッシュがあなたから提案されました。私はあなたが何をしたいのかわからない –

関連する問題