我对Foreign Keys
和Primary Keys
感到困惑。
我的数据规范化如下:
这是表Users
,其中列出了所有用户,ID为Primary Key
:
CREATE TABLE Users
(
Id INT IDENTITY,
Name NVARCHAR(60),
Email NVARCHAR(60),
Password BINARY(60),
PRIMARY KEY (Id)
)
有FreeTime
表,其中存储了空闲时间的可能性(如阅读,运动,旅行等......),Id为Primary Key
:
CREATE TABLE FreeTime
(
Id INT IDENTITY,
Description NVARCHAR(60),
PRIMARY KEY (Id)
)
下面的表UserFreeTime
为每个用户存储所有选定的FreeTimeId
(每个用户可以选择尽可能多的自由时间消费方式):
CREATE TABLE UserFreeTime
(
UserId INT,
FreeTimeId INT
)
那么UserFreeTime
表,UserId
和FreeTimeId
应该是外键还是主键?或者我根本不需要这张桌子的任何钥匙?
答案 0 :(得分:3)
您正在寻找类似的东西。
CREATE TABLE UserFreeTime
(
UserId INT,
FreeTimeId INT,
PRIMARY KEY(UserId, FreeTimeId),
FOREIGN KEY(Userid) REFERENCES Users(Id),
FOREIGN KEY(FreetimeId) REFERENCES FreeTime(Id)
)
此处使用主键可确保用户可以拥有多个不同的空闲时间活动,但任何一对用户的空闲时间都不能重复。
作为旁注,我强烈建议在表格和列中使用小写字母。
答案 1 :(得分:0)
回答你的问题。让我们先了解什么是主键,什么是外键。
http://www.dotnettricks.com/learn/sqlserver/difference-between-primary-key-and-foreign-key
简而言之。
在你的情况下:
希望它有所帮助!