当前位置:  开发笔记 > 编程语言 > 正文

什么是外键?

如何解决《什么是外键?》经验,为你挑选了2个好方法。

好.所以我知道DB中的主键是什么.如果数据库中有表,则主键是表中每行唯一的单个值.例如:

id   | name    | whatever
-------------------------
1      Alice     ....
2      Bob       ....
45     Eve       ....
988    ....      ....

所以我需要一个好的,简单的例子来解释究竟什么是外键.因为我只是不明白:)


编辑:好的,这很容易,我想我的问题太复杂了.

所以最后一个问题,对外键的唯一限制是它们是我所指的表中的有效主键值吗?



1> TheTXI..:

外键是指向另一个表的主键的字段.

例:

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



2> Paulo Guedes..:

假设你有另一个领域,这是本土城市:

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

希望它能让你更清楚.:-)

更新:关于你的最后一个问题:是的.:-)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有