2012-08-16 31 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