我在PHP中編寫了PHP中的兩個數據對象,它們非常相似,但應保存在兩個單獨的表中。因此,我將把它們編碼爲超類的子類。兩個類似結構化對象的數據庫設計
超類將保存大部分兩個類的重複函數,用於訪問數據庫表中的數據。每個類的特定功能/錯誤檢查/ DB訪問功能將在子類中實現。
我該如何在數據庫中實現這一點?我正在考慮超類的表的需要。
設計一: TableA和TableB將引用TableSuperClass,並且所有通常結構化的數據都將鏈接到TableSuperClass而不是子類(TableA和TableB)本身。給TableA,TableB,TableSuperClass和CommonData。使用TableA和TableB存儲特定於A/B類的事物。
設計二: TableA和TableB將具有大部分相同的結構,每個具有幾個額外的列以滿足他們的特定需求。沒有超級班的桌子。 A和B共有的數據將存儲在兩個獨立的表中。所以基本上是表A,表B,表A,表B數據
這兩種設計的優點和缺點是什麼?
感謝
在設計之一,爲什麼你有一個CommonData表?這不是TableSuperClass的一部分嗎?在設計二中,爲什麼你有TableAData和TableBData,如果它們是相同的,爲什麼不用CommonData或者是「這個記錄涉及到表A,id = 10」的組合鍵。最後,我認爲這取決於你的查詢的數據和性質 - 如果你能提供更多的信息,我們可以給你提供更好的指導。這兩種方式都可能有其優點 – Prescott 2012-02-17 04:19:27
考慮閱讀關於數據庫對象繼承的Doctrine 2手冊:http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/inheritance-mapping.html。不要說使用Doctrine 2,即使它非常酷。但我認爲這可能會給你一些好的想法,並且實際上討論你的兩種方法以及其他一些方法。 – Cerad 2012-02-17 04:23:47