0
我希望將兩個(不同)類的數據存儲在同一個數據庫表中,但有幾個共享屬性。這是一個最佳的表結構嗎? (動態表屬性)
一粗一看就係統類:
JobApplication : IActivity
Id: Int
ActivityType : Int
Title : String
CompanyName : String
CompanyAdress : String
Meeting : IActivity
Id: Int
ActivityType : Int
Title : String
Text : String
的類都有幾個共同屬性:ActivityType和標題
以下是我對這些類數據庫結構的理念,讓他們在同一個表:
Table: Activity
Id : Int
ActivityTypeId : Int
Table: Properties
Id : Int
PropertyName : Int (Title, Text, CompanyName etc)
Table: ActivityProperties
Id : Int
ActivityId : Int
PropretyId : Int
Value : String
Table: ActivityType
Id : Int
Title : String
Table: ActivityTypeProperties
Id : Int
ActivityId : Int
PropertyId : Int
的想法是,活動通過ActivityProperties和ActivityTypeProper設置其屬性值關係定義了活動應具有的屬性。
你會說這是一個最佳結構,如果沒有,你有任何想法更好的解決方案?我想優先考慮將活動的數據保存在同一個表中,而不必爲每個活動類型創建一個數據庫表。
你在ActivityTypeProperties中有什麼在形式上被稱爲實體屬性值(EAV)。有些情況下,這是一個實際的選擇,但它可能會導致一些問題。谷歌EAV數據庫,看看它的優點和缺點,看看它是給你的。 –
隨時發佈一個答案。我不知道這種模式被稱爲EAV。謝謝你明確表示! – Johnson
您正在使用哪些DBMS?有了Postgres,你可能會考慮使用'hstore'來代替(一個高效的鍵/值存儲作爲列數據類型) –