0

我是 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_ID (PK)
InvoiceNumber
Date
DueDate

详细_部分:

Detailed_ID (PK)
Person_ID (FK)
Amount
Info

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

每张发票分为两个部分:

  • 概括
  • 详细的

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

详细部分显示此人的姓名、金额和其他信息。

我对这一切都错了吗?解决此问题的最佳方法是什么?谢谢!

编辑:

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

4

1 回答 1

1

PK/FK 分配似乎没问题。虽然我会建议以下内容:

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