2012-08-16 27 views
0

我是SQL新手,我有一个关于表关系的问题。目前,我有我的数据库中下表:SQL-表关系,主要(PK/FK)

人:

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 

基本上,每家公司都有多人和接收一张发票。

每个发票被分成两个部分:

  • 摘要
  • 详细

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

详细部分显示该人的姓名,金额,&附加信息。

我对这一切都错了吗?什么是最好的方式去做这件事?谢谢!

编辑:

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

+0

你有什么具体问题? – RedFilter 2012-08-16 03:21:43

+2

假设所有外键都链接回相同名称的主键,这些关系对我来说看起来很好。 – Adrian 2012-08-16 03:31:08

回答

1

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

  1. 如果您使用的是任何一种框架,请尽量与其惯例保持一致。例如,Ruby on Rails通常将主键(如果它只是一列)作为所有表的ID进行调用。注意:跨表的列名不必是唯一的。
  2. 您是否真的需要将数据库中的摘要和详细部分分开?您可以在一张表中合并发票,汇总和详细信息,然后只检索/显示所需的列。这既是一个设计和工程问题。
    • 设计:两张发票可以共享一个部分吗?
    • 工程:您认为可以编辑/检索这些部分多少次?
+0

好点,我将结合发票表格并对PK进行更改。谢谢! – Dom 2012-08-16 03:48:46