【发布时间】:2019-09-15 16:41:38
【问题描述】:
我设计我的数据库并有 3 个表:
1) Authors 表有 ID、Name、Surname 和 Paper_ID。
姓名和姓氏组合是唯一的。
2) Topics 表具有 TopicName、SOTAResult 和 Paper_ID。
TopicName、SOTAResult 是唯一的。
3) Papers 表有 Title(unique)、Result、Abstract。
我是这样设计的,因为一篇论文有多个作者和多个主题,但只有一个结果。 我的问题是,我想将 Papers 表中 results 列的最大值分配给 Topics 表中的 SOTAResult 列。 更清楚地说,SOTAResult 应该是一个主题的论文结果的最大值。 我也想知道我是否根据需要正确构建了这个数据库,还是应该专门更改一些内容。
【问题讨论】:
-
我预计在 Authors 中包含 paper_id 会导致问题,尤其是因为姓名和姓氏组合是唯一的——这意味着作者只能拥有一篇论文。同样可能适用于主题。考虑为 paper_author 和 Paper_topics 添加联结表。
-
应该如何处理 Authors-Papers 一对多的关系?
-
从
authors表中删除paper_id,因为作者不只有一篇论文。而是将author_id添加到papers表中,因为每篇论文都属于一个作者,或者我理解这一点。但是主题与作者和论文有什么关系呢?是否应该与论文存在 m:n 关系,例如主题是“数学”、“物理”和“化学”,论文 #1 处理“数学”和“物理”,而论文 #2 处理“物理”和“化学”? -
one-to_many 表也是 many_to_one 表,具体取决于您如何使用它。顺便说一句,我认为这个数据库主要是关于论文及其属性的,你的观点可能是它是关于作者和他们所做的事情,这会影响设计方法。
-
是的,你完全正确!我应该寻找作者-论文和论文-主题关系的多对多关系。这种关系假设有论文 p1、p2 和 p3。还有作者 a1,a2,a3 和 a1 写 p1; a2 写入 p1,p3; a3 写入 p2,p3。此外还有主题 t1,t2,t3 和 p1 有主题 t1,t3; p2 有 t2,t3; p3 有 t1,t2,t3。此外,每篇论文只有 1 个结果(整数)。这个结果应该转移到本文的所有主题中,以便可以找到该主题的 SOTAResult。 t1 有 SOTA1,t2 有 SOTA2 等等。
标签: mysql database-design groupwise-maximum