复合键为外键?

pau*_*lio 2 sql-server sql-server-2008

我有下表......

TABLE: Accounts
  ID (int, PK, Identity)
  AccountType (int, PK)
  Username (varchar)
  Password (varchar)
Run Code Online (Sandbox Code Playgroud)

我已经使用ID和AccountType列创建了一个复合键,以便人们可以使用相同的用户名/密码但不同的AccountTypes.

这是否意味着对于我尝试并链接到的每个外表我都必须创建两列?

我正在使用SQL Server 2008

Qua*_*noi 8

这是否意味着对于我尝试并链接到的每个外表我都必须创建两列?

是的你将会.

但是,最好使用单独的表来存储用户名/密码并将此表链接到user_accounts(使用复合主键).

我已经使用ID和AccountType列创建了一个复合键,以便人们可以使用相同的用户名/密码但不同的AccountTypes.

对于当前的设计,具有相同id但不同的人AccountType可以具有不同的用户名和密码.

这是你应该如何做到的:

CREATE TABLE t_user (id INT NOT NULL IDENTITY PRIMARY KEY, Username VARCHAR(100) NOT NULL, YouShouldAlwaysUseSaltedAndHashedPasswords VARCHAR(64) NOT NULL)

CREATE TABLE t_user_account (user_id INT NOT NULL, account_id INT NOT NULL, PRIMARY KEY (user_id, account_id), FOREIGN KEY (user_id) REFERENCES t_user (user_id))
Run Code Online (Sandbox Code Playgroud)