Sql 我可以使用弱实体的多对多关系吗

Sql 我可以使用弱实体的多对多关系吗,sql,oracle,database-design,relational-database,entity-relationship,Sql,Oracle,Database Design,Relational Database,Entity Relationship,我有一个实体,例如员工(关键员工ID),每个员工都可以承担多重责任,而每个责任都可以分配给多个员工 我有3个选择: 当关键字是employe实体中的职责名称和员工ID时,创建弱实体-职责。而那些与实体的关系将是多对多的 当关系将承担属性责任时,创建关系employe employe 将属性作为键添加到employe(ID、职责) 第一种选择是可能的!!!正确的选择是什么。你有一种多对多的关系。规范的解决方案是使用三个表: 雇员 责任 雇主责任 最后一个表是一个连接表,每个员工和每个职责有一行

我有一个实体,例如
员工(关键员工ID)
,每个员工都可以承担多重责任,而每个责任都可以分配给多个员工

我有3个选择:

  • 当关键字是employe实体中的职责名称和员工ID时,创建弱实体-职责。而那些与实体的关系将是多对多的
  • 当关系将承担属性责任时,创建关系employe employe
  • 将属性作为键添加到employe(ID、职责)

  • 第一种选择是可能的!!!正确的选择是什么。

    你有一种多对多的关系。规范的解决方案是使用三个表:

    • 雇员
    • 责任
    • 雇主责任

    最后一个表是一个连接表,每个员工和每个职责有一行。

    您有一个多对多关系。规范的解决方案是使用三个表:

    • 雇员
    • 责任
    • 雇主责任

    最后一个表是一个连接表,每个员工和每个职责有一行。

    通常的警告:假设我正确理解了问题

    @戈登林诺夫是正确的。您已经有一个Employee表。如果每个员工可以有多个职责,那么您需要一个员工职责表,每个员工和职责组合有一条记录。您很可能还需要一个责任表,Employee_Responsibility由两个外键组成:Employee_id和Responsibility_id

    我不知道你在“责任”上保留了什么数据。我想至少会有一些文字来描述它。这样的文本不能成为一个好的键,因为它可能很长,并且可能会不时更改,因此您应该具有某种职责id、短代码或任意整数标识符或类似的内容,因此您需要一个职责表来将代码与文本相关联。可能还有其他数据

    如果是您建议的解决方案,让我按相反的顺序来处理:

    如果我理解您的数字3,您不能将责任添加到员工记录中,因为一名员工可以有多个责任。如果一名员工有两项职责,那么将迫使您为他创建两个员工记录,并复制所有其他数据

    第2项不起作用,因为没有其他员工与责任相关。如果Bob负责“鞋类部门职员”,那么谁将是关系中的另一位员工?我想你可以把他和另一个鞋类部门的职员联系起来,我们叫他查理吧。但如果查理辞职,鲍勃是否就不再是鞋类部门的职员了?可能不会。这就是说,如果“责任”的性质是它确实涉及到另一名员工——就像“责任”意味着“管理这组员工”,那就不同了。我想那不是你想的


    第一,它不是一个弱小的实体,因为你说过责任不是员工独有的。弱实体是指存在依赖于其他实体的实体。就像您有订单一样,您可能会有一个订单头,用于标识订单号、下订单日期、客户名称和地址、付款方式等。然后您将有订单项,即一组订购的单个物品。订单项目挂起订单。如果没有订单,则不能有订单项,并且给定的订单项只能是一个订单的一部分。(多个订单可能包含相同的产品,但这是不同的。订单项记录可能会包含某种产品id作为记录的一部分,但也会包含不适用于其他订单的数据,如数量)。但在这种情况下,责任不是员工独有的。许多员工都可以承担同样的责任。

    通常的警告:假设我正确理解了问题

    @戈登林诺夫是正确的。您已经有一个Employee表。如果每个员工可以有多个职责,那么您需要一个员工职责表,每个员工和职责组合有一条记录。您很可能还需要一个责任表,Employee_Responsibility由两个外键组成:Employee_id和Responsibility_id

    我不知道你在“责任”上保留了什么数据。我想至少会有一些文字来描述它。这样的文本不能成为一个好的键,因为它可能很长,并且可能会不时更改,因此您应该具有某种职责id、短代码或任意整数标识符或类似的内容,因此您需要一个职责表来将代码与文本相关联。可能还有其他数据

    如果是您建议的解决方案,让我按相反的顺序来处理:

    如果我理解您的数字3,您不能将责任添加到员工记录中,因为一名员工可以有多个责任。如果一名员工有两项职责,那么将迫使您为他创建两个员工记录,并复制所有其他数据

    第2项不起作用,因为没有其他员工与责任相关。如果Bob负责“鞋类部门职员”,那么谁将是关系中的另一位员工?我想你可以把他和另一个鞋类部门的职员联系起来,我们叫他查理吧。但如果查理辞职,鲍勃是否就不再是鞋类部门的职员了?可能不会。这就是说,如果“责任”的性质是它确实涉及到另一名员工——就像“责任”意味着“管理这组员工”,那就不同了。我想那不是你想的

    第一,它不是一个弱小的实体,因为你说过责任不是员工独有的。弱小的实体是什么