如何在sql server中定义结构化属性?

时间:2016-11-06 10:00:49

标签: sql sql-server tsql

在我的ER模型中是一个结构化属性。 属性 user 除其他外还包含 authentification 属性。此 athentification 属性已链接到其他属性: algo salt { {1}} hash

stretch Salting 是保护密码的方法,对吗?

但是,如何定义这些属性是否与 hashing 属性相关联,并且所有属性都属于表authentification的一部分?

我的代码:

user

1 个答案:

答案 0 :(得分: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)
);