2017-09-22 77 views
0

我正在嘗試爲處理工作訂單工單上的服務活動的SQL數據庫創建一些表關係。我有這些表格的一對一關係,並有一個問題。 我有用於創建工單票據的WOT(工單票)表。 WOT可以在與其關聯的不同日期有多個服務活動。 每項服務活動可以使用多個部件(用於修理)。 這僅僅是基本的想法,但我已經創建了下面的表和關係:SQL表關係

WOT Table: 

WOT> wotnum - PK

Service Activity Table: 

service_activity>服務ID - PK

service_activity> wotnum - FK(鏈接到WOT表中的PK)

Part Used Table: 

partused> partusedid - PK

partused>服務ID - FK(鏈接到PK在服務活動表)

每個表的上面具有其它列,以及(未示出),但它們對於表格是唯一的,例如日期字段,部件號等。

service_activity>serviceid (PK)字段是autoin crement字段以及partused>partusedid (PK)字段也是如此。

我的問題是,在數據輸入過程中,如何確保partused> serviceid字段(FK)與service_activity>serviceid field (PK)同步,而無需實際手動輸入partused>serviceid field (FK)

儘管我對錶格和關係有一個體面的理解(現在很關鍵),但對於通過表格在實際數據輸入過程中如何相互作用的思考過程,我有點新手。我想這個答案可能很簡單,但我還沒有把握它。如果我目前的解決方案看起來不夠,我會歡迎提供一個建議。我需要一些幫助才能朝着正確的方向前進。

+0

你是什麼意思「沒有實際上必須手動輸入partused> serviceid字段」?您認爲如果不是手動輸入該字段,您還有什麼其他方式?我甚至不確定在這種情況下「手動」的含義。 –

+0

我認爲他需要更好地瞭解FK的工作原理:p – achecopar

回答

0

如果您已正確添加FK,當您在數據輸入過程中手動輸入partused.serviceid列數據時,它將自動參考service_activity.serviceid列。

例如:如果您只有一個service_activity與serviceid = 456

  1. 當你與partused.serviceid = 500 partused表嘗試插入數據,它會拋出一個錯誤,並且插入將不會被允許。

  2. 當您嘗試在partused.serviceid = 456中使用的表部分中插入數據時,它將成功,因爲其他表中的引用行確實存在。

+1

謝謝!我認爲這回答了我的問題。我打算和這個表結構一起去看看會發生什麼。 – gitpicker

+0

@gitpicker好的!如果你認爲它回答了你的問題,請接受我的回答:) – achecopar