我正在为一个新的应用程序设计一个数据库。
对于许多表,我都有类似的"一般";属性(例如:createdate, targetDate, actualDate, author,…)
是将这些属性放在单独的表中,并与使用这些属性的所有表创建一个FK更好,还是将它们作为附加属性放在每个表中更好?
是否存在多个属性/表,其中一个选项比另一个更可取?
现在,让我们假设您有许多表: 均与相同的 现在,如果可能存在一些规则,根据这些规则,表中的某些字段在两个列集之间具有函数依赖甚至等价,那么对于ti和tj都有这些字段,其中i <>J使它变得冗余,这迟早会容易导致不一致。 因此,为了应对这种情况,在这种情况下,有一个creationDate
,targetDate
和actualDate
域有一定的关系。generic_attributes
表并通过外键或多对多表将您的记录链接到它们是有意义的。
- generic_attributes(id, att1,…)attm)
或
- generic_attributes(id, name)和
- generic_attribute_values(id, generic_attribute_id, value)
但是,如果存在相互关联,特别是功能依赖或条件功能依赖,甚至功能等价,那么单独的属性表是很有意义的。
否则,如果这些表完全不相关,则可以任选其一。