实体之间的联系有哪三种

等等,我昨天去超市买东西了。
我在结账处排队。
前面的老人买了两件东西,都是打折的。
结账的时候收银员说两件商品的折扣不能一起算,必须分开算。
这让我想起了一对多的关系。
一种产品(实体组E1 )可以有多种折扣(实体组E2 ),但该产品只能对应一种最终结算方式。
与图书馆中的书籍和读者不同,书籍和读者之间可以有多种关系。
这与剧院里的座位和观众不同。
座位和观众是一一对应的,不能混用。
这很有趣。
再想一想,项目经理和公司里的任务。
一名项目经理可以负责多项任务,但通常由一名项目经理负责一项任务。
这是另一个典型的例子。
但话虽如此,在实际应用中,这三种关系是否曾经互换使用过,让人有点困惑呢?

er图有几种关系

嘿,兄弟,我们来谈谈数据库中的ER图。
这是我多年来一直陷入的陷阱。
我记得有一次,当我设计一个学校数据库时,我需要解释实体之间的关系。
当时我以为国家和总统是一对对立的。
一国对应一位总统,一位总统只对应一国。
当时我想,这个关系很简单,直接在数据库中创建外键就可以解决。

然后,我又看了看班级和学生。
这不是一对多吗?一个班级有多名学生,但一个班级只能有一名学生。
当时感觉数据库设计挺简单的,只要在student表中添加班级ID外键就可以了。

然后,我遇到了学生和课程的问题,事情变得复杂了。
一个学生可以选择多门课程,一门课程可以被很多学生选择。
这无法通过一对一或一对多的方式解决。
当时我想,这不就是多对多吗,我需要一个中间表来弥补这个差距。
最后,我创建了一个“学生选课”表,有两个外键,学生ID和课程ID,这样可以清楚地表达学生和课程之间的复杂关系。

总结一下,ER图中的关系主要分为三类:一对一、一对多、多对多。
一旦理解了这一点,设计数据库就更容易了。
虽然理论看似简单,但实际操作需要经验。
当时我就是靠着从这个坑里爬出来的经验来学习如何设计数据库的。
嘿嘿,讲完了这些,你还有关于数据库设计的疑问吗?我们一起来聊聊吧。