我希望在同一个数据库表格中存储两个(不同)类的数据,但有几个共享属性。
系统类的粗略看法:
JobApplication : IActivity
Id: Int
ActivityType : Int
Title : String
CompanyName : String
CompanyAdress : String
Meeting : IActivity
Id: Int
ActivityType : Int
Title : String
Text : String
这两个类都有一些共同的属性:ActivityType和Title
以下是我对这些类的数据库结构的想法,将它们保存在同一个表中:
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设置,ActivityTypeProperties定义活动应具有的属性。
您是否认为这是一种最佳结构,如果没有,您对更好的解决方案有什么想法吗?我想优先考虑将活动数据保存在同一个表中,而不必为每个活动类型创建数据库表。
答案 0 :(得分:0)
为每种活动类型创建单独的表有什么问题?这些类型是否会由用户即时创建和删除?如果是,那么是的,您希望类型是可以从表中插入或删除的记录。否则,如果类型是稳定的,那么使用一个“超级”表为每种类型创建一个表来容纳类型具有共同点的属性要容易得多。有关详细信息,请参阅this answer。