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'来代替(一个高效的键/值存储作为列数据类型) –