当前位置: 首页 > 面试题库 >

多对多表设计问题

郤望
2023-03-14
问题内容

最初,我的数据库中有两个表[Property]和[Employee]。

每个雇员可以有一个“家庭财产”,因此雇员表中有一个“财产”的HomePropertyID FK字段。

后来,我需要对这种情况进行建模,即尽管员工只有一个“房屋财产”,但确实在多个财产上工作或涵盖了多个财产。

因此,我创建了一个[Employee2Property]表,该表具有EmployeeID和PropertyID FK字段以对这种多对多关系进行建模。

现在,我发现我需要在员工和财产之间建立其他多对多关系。例如,如果有多名员工是某物业的经理,或者有多名员工在某物业执行维护工作,等等。

我的问题是:

  1. 我应该为这些情况中的每种情况创建单独的多对多表,还是仅创建一个表,例如[PropertyAssociatonType],该表列出了员工可以与属性建立的关联类型,并且只需向[Employee2Property]添加FK字段例如,PropertyAssociationTypeID可以解释什么是关联?我对优缺点或是否还有其他更好的方法感到好奇。
  2. 我是愚蠢的,这一切都错了吗?

感谢您的任何建议:)


问题答案:

这是一个非常有效的问题。答案是:这取决于

以下内容建议使用单个“类型化” M:N关系:

  • 您通常想要处理所有与类型无关的员工-财产关系
  • 关联的数量一直在变化,即发明了新的类型。
  • 员工财产关系有时会更改其类型。

如果这些陈述是错误的然后是正确的,那么您最好使用单独的关系。



 类似资料:
  • 我是第一次接触火恢复,我想知道是否有人能告诉我这个解决方案是否适用于多对多的关系。我有一个名册的集合和学生的集合,这是相关的多对多。因为我最经常需要的关于学生的信息只是他们的名字,所以有一张像{ 我是根据这个答案来解决问题的。 我将非常感谢任何建议!谢谢你们

  • 问题内容: 任何人都可以解释在设计带有示例的表时如何实现一对一,一对多和多对多关系吗? 问题答案: 一对一: 使用外键访问被引用的表: 您还必须在外键列()上设置唯一约束,以防止子表()中的多行与引用表()中的同一行相关。 一对多 :在关系的许多方面使用外键链接回“一个”侧: 多对多 :使用联结表(例如): 查询示例:

  • 问题内容: 我有一个包含 产品* 列表的表 订单 。对于与特定订单相对应的每个 产品 ,我需要存储一个 地址 列表,在该 地址 中应将单个产品(每个订单基于每个产品)发送到 * 所以我有这张表,在 订单 和 产品 上有很多很多,我需要的是将上表中的每个条目映射到 地址 列表。所以我需要像 并将上表中的条目映射到地址列表,我需要上述PK和地址ID(我的地址表的主键)上的多对多表 这里PK_Order

  • 当我保存final dataframe时,上面所有的dataframe都将被评估。我的做法好吗?还是需要缓存/持久化中间数据流?

  • 问题内容: 您如何处理在Java中仅具有单一继承的问题?这是我的具体问题: 我有三个(简化的)课程: 这是我认为最基本的实现,但是我想进行其他实现。 可以说我想添加一个新的变量,比如wordLength,但是我想使用继承来添加它。意思是我不想修改那个原始的AbstractWord类。即与此类似: 我知道java不允许我这样做,但是它使我的代码非常难看。现在,每当我添加一个字段时,我都将其添加到Ab

  • 问题内容: 我有桌子: 而且我需要实现“用户评论”功能(例如Facebook)。我应该以1:n关系制作table:等等吗?还是为所有人创建一张桌子(但我不知道该如何设计)? 问题答案: 您可以创建另一个表(尽管称其更好)。表中的每一行(,等等)都将引用此表中的唯一行。实体表可能具有指示实体类型的字段(以帮助反向连接)。 然后,您可以有一个以通用方式引用的表。 因此,例如,您将得到下表: 您可以在每