加入表格与外键/参考

时间:2014-07-14 14:00:17

标签: sql database

想象一下,我有两张桌子,他们有一对多的关系。有一个存储关系的Join表,或者在其中一个表中发出外键是否更好?看看这两种情况:

Situation A:
Table 1: CreditCard
Table 2: Person

将creditCard_id作为Person表的一部分

似乎很有意义
Situation B:
Table 1: Order
Table 2: Person

这次我想我会将order_id和person_id放在Join表中?

我在上面犯了错误吗?有没有标准/更好的方法来确定这个?

2 个答案:

答案 0 :(得分:1)

对于1对多的关系,人们通常把外键放在较重的桌子上或者#34;很多"表。 因此,从您的示例中,都可以使用CreditCard和Order表,这样您就可以删除重复的数据。

想象一下哪个更好:

  • FK前往"很多"表
    表人:
    ID NAME
    1 A
    2 B

    表信用卡:
    ID PEOPLE_ID
    1 1
    2 1

  • FK进入" 1"表:
    表人:
    ID NAME CreditCard_ID
    1 A 1
    1 A 2
    2 B 3

    表信用卡:
    ID
    1
    2
    3

注意:在第二个示例中查看ID和名称的重复方式(ID = 1,NAME = A),如果将FK放在错误的表格中,就会发生这种情况。

答案 1 :(得分:0)

我会做三张桌子;一个包含所有信息(姓名,地址等)的人员表,一张包含所有信息(到期日期,安全号码等等)的信用卡表,然后是另一张表与PersonID和CreditCardID连接的表。但是我知道什么,我还在学校大声笑,等着别人回答你。