【问题标题】:Defining weak relationship in Entity relationship model在实体关系模型中定义弱关系
【发布时间】:2016-12-11 07:04:48
【问题描述】:

在创建实体关系模型时,我遇到了一个困惑:

这是两个实体的示例:

公司(comp_id(pk),comp_name)

topCompanies (rank(pk), comp_id(fk)) *包含前十名或 百家公司

这不是一个专门化的例子,因为实体 topCompanies 不能单独存在,它只包含所有 comp_id(s),比如前十名或前一百名。所以这意味着 topCompanies 是一个弱实体,因为它不能单独存在。现在他们可以拥有“是”关系还是“是”关系仅限于继承/专业化示例?如果不是,我应该如何描述他们的关系?

另外,阅读 ERD 时有什么约定吗?从左到右/从右到左?

【问题讨论】:

  • 我不明白你关于 ER 图的常规方向的问题。图表上的文本按照其编写语言的常规方向阅读,但图表本身没有与顺序相关的元素。我建议你更仔细地研究 ER。请注意,没有您在问题标题中提到的弱关系之类的东西 - 弱实体具有识别关系。

标签: inheritance relationship data-modeling erd entity-relationship-model


【解决方案1】:

首先,让我们弄清楚术语。实体和表不是一回事。表(物理模型)表示关系(逻辑模型),在ER(概念模型)中分为实体关系和关系关系,分别记录有关实体集和关系集的事实。

company 实体集由两个表中的 comp_id 列表示。 company 关系/表将company 实体集(通过其标识符/键)与名称的值集相关联。 topCompanies 关系/表将company 实体集(通过其标识符/键)与rank 相关联。

rank 是实体集还是值集? ER 通常要求确定关系的任何集合都是实体集,因此假设有一个名为ranking 的实体集,由rank 列标识和表示。这个ranking 实体集与company 实体集有关系,这就是我们在topCompanies 表中看到的。

因此,topCompanies 既不是弱实体也不是company 的子类型。弱实体集由其父实体集的键和本地区分属性标识。子类型实体集由与超类型相同的键标识。但是,topCompanies 关系/表根本不依赖于comp_id。相反,comp_id 依赖于 rank

这是一个描述它的实体关系图:

【讨论】:

    【解决方案2】:

    topCompany 是 Company 的子集。你的关系是对的。 topCompany 是一家公司

    所以 topCompany 有一个指向 Company 的外键。它并不弱,因为它有一个主键(等级)。

    【讨论】:

    • 如果你从你的模型中去掉了“公司”,那么 topCompany 除了是整数列表之外没有任何意义,因此你就是公司。
    • 在这个意义上是弱的。但是 ERD 术语中的弱意味着没有主键的实体。 topCompany 确实有。所以它并不弱
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2016-05-10
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多