数据库实体间关系笔记

总结

判断实体间关系只需要问自己两个问题:
1. 实体A包含实体B吗?
2. 实体B包含实体A吗?

  • 都回答‘是’–>M:N
  • 都回答‘否’–>1:1
  • 答案不同 –> 1:N

当实在是不能分辨两个实体间的关系是 一对多 还是 多对多 我们不妨用假设法。

  • 我们先假设实体间是一对多,想想我们的实现业务逻辑
  • 再假设他们之间的关系是多对多,想想我们的实现业务逻辑
  • 相信最终你会选出一个相对简洁的业务逻辑去实现。

今天设计数据库标间关系的是偶蒙圈了。在这里调整一下思路。

一、数据库实体间关系总共有三种:

实体A实体B
11
1N
MN

1:1 (独生子家庭)一个儿子只有有一个父亲,一个父亲只有个一个儿子
1:N 一个宇宙有多个星星,每一个星星都只存在于一个宇宙中
M:N 一个老师有多个学生,一个学生有多个老师

二、描述 1:1 关系我们用两个表就可以了

每一列表示一个表中包含的字段

儿子父亲
ID:ID
姓名:姓名
年龄:年龄
父亲:儿子

三、描述M:N关系 必须三个表

教师教师关联学生学生
IDIDID
姓名学生ID年龄
身份证教师ID身份证

这可以解决数据流向问题:
数据流是
– “宇宙–>星星 ”教师表+关联表–>找到一个老师的所有学生
– “星星 –> 宇宙”学生表+关联表–>找到一个学生的所有老师

四、描述 1:N 必须要三个表才可以?——其实不是,两个表就够了。

每一列表示一个表中包含的字段

3.1、对于1:N关系描述

表现方式(三个表)

宇宙宇宙关联星星星星
IDIDID
年龄宇宙ID(一直是同一个值)年龄
直径星星ID直径
  • 探究
    又觉得 在 “宇宙关联星星”表中 ‘宇宙ID’一直都是同一个值
    那么我们用两个表好像也可以表示 1:N 的实体间关系。
    因为开发者在文档中注明这种 1:N 关系的存在就足够对表做出操作了。
    不管 数据流是
    • “宇宙–>星星 ”
    • “星星 –> 宇宙”

不是吗?

宇宙:星星
ID:ID
年龄:年龄
直径:直径

3.2、对于1:N关系解决

事实上,我在1:N关系上出现的问题是没有真正的区分清楚
我所处理的关系是否为一对多关系。
怎么用一句话说出来这事这么简单。
难的是在业务逻辑中的“区分”。

    原文作者:我的学生时代
    原文地址: https://blog.csdn.net/u014587769/article/details/68482761
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞