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

您如何处理关系数据库中的m..n关系?

何辰沛
2023-03-14
问题内容

让我们看一个例子-书。一本书可以有1..n位作者。作者可以拥有1..m本书。代表一本书的所有作者的一种好方法是什么?

我想到了一个创建Books表和Authors表的想法。Authors表具有一个主要AuthorID密钥,即作者的姓名。图书表具有主要的图书ID和有关图书的元数据(书名,出版日期等)。但是,需要一种将书籍链接到作者以及将作者链接到书籍的方法。这就是问题所在。

假设我们有三本鲍勃的书。但是,他在一本书中以鲍勃(Bob)博士的身份撰写。他写的另一个是鲍勃博士,第三个写的是罗伯特博士。我希望能够确定一个事实,即这些作者实际上是同一个人,但以不同的名字出名。我还想将鲍勃与另一位撰写过不同书籍的鲍勃区分开来。

现在,我们还要在应用程序的另一部分中添加一个Person表,该表跟踪有趣的人。假设鲍勃是一个有趣的人。我不仅要说三本书的作者都是鲍勃,而且要说这个有趣的鲍勃与作者鲍勃是同一个人。

那么,在确保书的作者被封面上的姓名标识的同时,针对这种潜在的复杂映射存在哪些策略?


问题答案:

添加另一个名为BookAuthors的表,其中包含BookID,AuthorID和NameUsed的列。NameUsed的NULL值表示将其从“作者”表中拉出。这称为交集表。



 类似资料:
  • 这样我就可以 但我的问题是,这对我来说并不合适--它看起来确实像是一种变通方法,而不是真正的Spring方式来实现这个需求。所以.. 我目前正在努力使用Spring的创建关系资源。我想创建一个新组,并将其与调用用户关联,如下所示: 但是唯一的结果是响应。我不知道为什么。这可能与我的另一个问题有关,也可能与我的另一个问题无关(请参见此处),我试图通过在JSON有效负载中设置相关资源来实现同样的问题-

  • 我正在尝试处理PostgreSQL数据库中的JSON列。我可以使用以下方式连接到数据库: 问题始于铸造JSON字段。Spark不能识别的结构格式。当我打印模式时: root |--time: time(nullable=true) |--name: string(nullable=true) |--params: string(nullable=true) 当我尝试将字符串强制转换为struct时

  • 问题内容: 在数据库中建立适当的关系对数据完整性以外的其他功能没有帮助吗? 它们会改善还是阻碍性能? 问题答案: 我不得不说,适当的关系将比省略它们更好地帮助人们理解数据(或数据的意图),特别是因为维护它们的总成本非常低。 它们的存在不会影响性能,除非是在体系结构方面(正如其他人指出的那样,数据完整性有时会导致外键冲突,这可能会产生某些影响),但是IMHO的许多好处(如果正确使用,则不胜枚举)。

  • 本文向大家介绍Hive与关系型数据库的关系?相关面试题,主要包含被问及Hive与关系型数据库的关系?时的应答技巧和注意事项,需要的朋友参考一下 没有关系,hive是数据仓库,不能和数据库一样进行实时的CURD操作。 是一次写入多次读取的操作,可以看成是ETL工具。

  • 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

  • 现在我面临着他们在大学里没有教我的东西... 似乎我可以选择两个数据库引擎--MyISAM或InnoDB。 我知道我可以用InnoDB存储引擎构建关系数据库,但是就我所见,我不能用MyISAM存储引擎构建关系数据库,因为我不能链接表。