首先,我读过几个类似的问题,其中有一些类似于C& P的“技术”答案,我需要的是一个清晰的例子。正常值为3NF。
在这个项目中,在管理面板中,您必须创建城市和区域,每个区域必须属于一个城市。还创建酒店并在相应的区域分配它们,最后为每个特定的酒店创建别名,因为人们知道同一家酒店的名称不同。表、旅店和hotels_alias将填充一个自动补充输入。
价格计算是根据服务(标准,私人和VIP)根据区域和乘客人数和季节,我仍然没有创建逻辑或表格来计算每个乘客和季节的价格。这就是为什么它们不在下面的图表中。
我发现的一个很好的解释是身份识别和非身份识别的关系有什么区别?
不过,我有些怀疑。
hotels_alias不可能没有表、酒店,而没有区域表,就不可能存在,而没有城市,就不可能存在这种情况。由于一个城市被划分为多个区域,酒店属于这些区域,属于城市的区域,酒店别名属于酒店,如果没有酒店,就不可能存在。
到目前为止,很明显,城市是一个强大的或父实体,而区域、酒店和hotels_alias是子实体。
在EER图中,您可以看到它有一个标识关系。第一个问题是:尽管是子实体,但有自己的ID是正确的吗?这个ID是PK,NN和AI?在某些示例中,这些子实体没有自己的ID,因此它们的PK由相关表中的两个FKs组成,如N: n (zones_has_servicees)关系中的那样。
事实上,如果子表不必有自己的ID,因为它们必须能够通过父表来标识自己,那么您如何才能更新或删除一个区域、一个酒店或一个酒店别名?
DELETE FROM zones WHERE name = 'name'这是正确的吗?我应该为name列创建一个索引吗?如果有什么好处,如果使用名称colum,而不是它自己的ID?子表可以拥有自己的ID并使用这个ID和其父表的ID创建复合PK吗?这种类型的关系是否有任何功能,还是只适用于像InnoDB这样的引擎?若要执行对删除级联操作?
如果我有两个同名的区域会发生什么?例如:酒店区,这两个城市的坎昆和都有这一地区。删除将是?:
DELETE FROM zones WHERE name = 'name' AND cities_id = ID那么,理解父实体和子实体是什么,所以WordPress创建了如下所示的关系,您可以看到它使用的是与wp_postmeta和wp_posts的弱关系。假设没有wp_postmeta就不可能存在wp_posts,对吗?它对评论和用户也是这样做的。
发布于 2017-10-22 22:12:46
首先,示例1不是EER图(而称为表图)。要被称为ER或EER图,您必须使用表示实体关系模型概念和区分实体集与关系的符号(如Chen的表示法)。在ER模型中,实体关系和关系关系都是使用表来实现的,它们都不能映射到FK约束,而FK约束只是一种完整性机制。许多人将ER模型与旧的网络数据模型混为一谈。
第二,识别关系与弱实体集一起使用,其中规则(父)实体集的主键构成弱(子)实体集的主键的一部分。当一个实体集由它自己的属性标识时,它就是一个常规的实体集。
要从弱实体关系中删除行,通常可以通过其主键标识行。弱实体集通常有一个复合主键,由父键和附加弱键组成。弱键只需要与父键一起是唯一的。例如,如果zones是由cities_id和name标识的,则可以通过指定以下属性来删除区域:
DELETE FROM zones WHERE cities_id = 1 AND name = 'name';如果您将复合主键声明为PK,那么它将自动被索引,并由DBMS唯一地约束它。弱实体集的优点是,在某些情况下,这种识别方法比引入无意义的代理密钥更自然。
拥有一个由唯一代理项ID和另一个属性(如父属性ID )组成的复合主键的表不是个好主意。除了不正确地强制执行意外的重复值之外,它不必要地使原本简单的代理表PK变得过于复杂。
您的WordPress图没有说明弱实体集或标识关系(正如前面提到的,它不是EER图)。您提到的每个表都有自己的代理项密钥。请注意,ER模型中没有弱关系这样的东西。
https://stackoverflow.com/questions/46877216
复制相似问题