我试图设计一个模式,其中一个表的列是不固定的。例如:我有一个Employee表,其中表的列不固定并且各不相同(Employee的属性不固定且不同)。需要频繁添加新的属性/列。在雇员表如何设计一个模式,其中一个表的列没有固定
空列本身即不归
而不是添加空列的,这些列分离出来,在他们各自的表例如:如果地址是要添加,然后创建表的地址栏[EmployeeId,AddressValue]。
创建表ExtensionColumnName [EMPLOYEEID,的ColumnName]和ExtensionColumnValue [EMPLOYEEID,ColumnValue]。 ExtensionColumnName将ColumnName作为“Address”,ExtensionColumnValue将ColumnValue作为地址值。
Employee表
雇员
名称ExtensionColumnName表
ColumnNameId
雇员
的ColumnNameExtensionColumnValue表
雇员
ColumnNameId
上校umnValue
有一个缺点是模式随每个新属性而改变的前两种方法。请注意,添加一个新属性是很常见的,也是一项要求。
我不知道这是好还是不好的设计。如果有人有类似的决定作出,请给上之类的东西外键/数据的完整性,索引,性能,洞察报告等
OMG小马,我最终提出了架构。我对这种模式的问题感兴趣。例如:如果EMPLOYEE_ATTRIBUTES中的VALUE列是一个ID(某个其他表的主键),那么它就成了一个问题。这可以通过具有单独的元表来表示,该表表示这种属性是查找和对应的查找表名。这将涉及一些动态的SQL或反射,我失去了类型安全。 – hIpPy 2010-06-04 14:55:10