【发布时间】:2016-01-09 01:47:53
【问题描述】:
拥有两个属性相同但含义和关系不同的表是不是很糟糕?
即table1 的属性 = table2 的属性。
但是table1 与table3 有关系
和
table2 与 table4 有关系。
这被认为是不好的做法吗?还是应该将table1 和table2 整理到一张表中?
虽然如果将其整理到一张表中,那么table1 是否也会与table4 有关系?
【问题讨论】:
-
当两个表的模式相同时,它可能意味着一些问题(即连接结果在没有进一步知识的情况下无法解释,当您确实有一个元组时,您必须知道从哪个连接产生,以及其他一些),但是,当它们具有不同的含义时,它们必须是单独的表,因为否则用户可能会编写他们不应该使用的连接,这可能会影响代码的正确性。
-
你指的是虚假元组吗?请注意,虽然 table1 和 table2 具有相同的属性,但它们并不相关。另外,另一个可能与此无关的问题,但是仅基于不同属性的脱节实体是否被认为是不好的做法?
-
如果“有关系”意味着“有外键”,那么这意味着这些表的属性存在差异。将公共属性放在一个表中(超类型)。将特定于一种或其他情况的属性放入引用超类型表的单独表(子类型)中。 Google for the Orthogonal Design Principle of Orthogonal Design - 一种设计原则,表明表格不应重复彼此的属性。
-
在数据库设计中这通常不是好的做法。如果您在谈论实体和 ER 建模,那么这完全是另一回事。根据您的 ER 模型的用途,您可能希望在 ER 模型中执行此类操作。正交设计原则是关系建模的设计规则,而不是 ER 建模。
-
属性相同但表格含义不同
标签: database entity-framework database-design relational-database entity-relationship