SQL - 表关系,主要(PK / FK)

时间:2012-08-16 03:19:09

标签: sql foreign-keys primary-key table-relationships

我是SQL新手,我对表关系有疑问。目前,我的数据库中有以下表格:

人:

Person_ID (PK)
Name
Company_ID(FK)
Phone
Email

公司

Company_ID (PK)
Name
Address
City
State
Invoice_ID (FK)

发票:

Invoice_ID (PK)
Summary_ID (FK)
Detailed_ID (FK)

Summary_Section:

Summary_ID (PK)
InvoiceNumber
Date
DueDate

Detailed_Section:

Detailed_ID (PK)
Person_ID (FK)
Amount
Info

基本上,每家公司都有多人,并收到一张发票​​。

每张发票分为两部分:

  • 摘要
  • 详细

摘要部分显示公司名称,公司地址,发票号,发票日期和&到期日。

详细部分显示了该人的姓名,金额和数量。其他信息。

我是否认为这一切都错了?最好的方法是什么?谢谢!

编辑:

关注:我在这种情况下是否正确分配了外键/主键?

1 个答案:

答案 0 :(得分:1)

PK / FK分配似乎没问题。虽然我建议如下:

  1. 如果您使用任何类型的框架,请尝试与其约定保持一致。例如,Ruby on Rails通常将主键(如果它只是一列)调用为所有表的id。注意:表中的列名不必是唯一的。
  2. 您真的需要将数据库中的摘要和详细部分分开吗?您可以将Invoice,Summary和Detailed组合在一个表中,然后只检索/显示所需的列。这既是设计问题,也是工程问题。
    • 设计:两张发票可以共享一个部分吗?
    • 工程:您认为可以编辑/检索这些部分多少次?