好.所以我知道DB中的主键是什么.如果数据库中有表,则主键是表中每行唯一的单个值.例如:
id | name | whatever ------------------------- 1 Alice .... 2 Bob .... 45 Eve .... 988 .... ....
所以我需要一个好的,简单的例子来解释究竟什么是外键.因为我只是不明白:)
编辑:好的,这很容易,我想我的问题太复杂了.
所以最后一个问题,对外键的唯一限制是它们是我所指的表中的有效主键值吗?
外键是指向另一个表的主键的字段.
例:
Table Name - Users UserID UserName UserRoleID 1 JohnD 1 2 CourtneyC 1 3 Benjamin 2 Table Name - UserRoles UserRoleID Desc 1 Admin 2 Moderator
您可以看到Users.UserRoleID是指向主键UserRoles.UserRoleID的外键
使用外键使得在其他表上建立关系变得简单,允许您以一种很好的方式将多个表的数据链接在一起:
例:
SELECT a.UserID, a.UserName, b.Desc as [UserRole] FROM Users a INNER JOIN UserRoles b ON a.UserRoleID = b.UserRoleID
输出将是:
UserID UserName User Role 1 JohnD Admin 2 CourneyC Admin 3 Benjamin Moderator
假设你有另一个领域,这是本土城市:
id | name | city ------------------------- 1 Alice San Francisco 2 Bob New York 45 Eve New York 988 Bill San Francisco
现在,在许多行中重复相同的城市是没有意义的.这可能会导致拼写错误,空间占用过多,难以在其他问题中提出结果.所以你使用外键:
id | name | fk_city ------------------------- 1 Alice 1 2 Bob 2 45 Eve 2 988 Bill 1
家乡城市表:
id | name ------------------------- 1 | San Francisco 2 | New York
希望它能让你更清楚.:-)
更新:关于你的最后一个问题:是的.:-)