我正在爲各種項目計時的個人項目工作,但我不確定構建數據庫的最佳方式。我是否應該將所有的MySQL表彼此關聯?
結構的簡化細目如下:
- 每個客戶端可以有多個報告。
- 每個報表可以有多個行項目。
- 每個訂單項都可以有多個時間記錄。
最終會有更多的關係,但這是應用程序的基礎。正如您所看到的,每件商品都與其下面的商品以一對多的關係相關。
我的問題是,我應該將每個表格與上面的每個「父」表關聯起來嗎?像這樣的事情:
clients
id
reports
id
client_id
line_items
id
report_id
client_id
time_records
id
report_id
line_item_id
client_id
而且,隨着級聯,越來越多的外鍵被添加到每個新表中。
我最初的反應是,這不是正確的做法,但我很想得到第二個(和第三個!)意見。
您是如何(概念上)區分訂單項和時間記錄的?訂單項是一項任務嗎? – jwiscarson
是的,訂單項是一項任務。例如,一個訂單項可能會讀取「內置計時應用程序」,並且它會包含多個時間記錄(此處爲30分鐘,12分鐘時間等),這些時間記錄會累計到訂單項上的總時間。 –
鑑於此,我認爲您當前的設計完全可以接受(減去子表中的額外ID)。 – jwiscarson