版权声明:本文为博主原创文章,转载请申明出处,感谢。 https://blog.csdn.net/shichimiyasatone/article/details/85636352
一、转化原则
- 内容不变,形式改变;
- 实体一一对应(即,ER图中的实体 在对应的关系模型中也一定存在)。
二、E-R图联系类型
- 1:1
- 1:n
- n:m
三、实例
①1:1联系类型
部门表:
部门号(主键) | 部门名 |
1 | 开发部门 |
2 | 测试部门 |
3 | 销售部门 |
经理表:
经理号(主键) | 经理名 | 电话 |
001 | 张三 | 15230649808 |
002 | 李四 | 15233661143 |
003 | 王五 | 13072052826 |
转换为关系模型:
将另一端的主键作为本表的外键
部门号(主键) | 部门名 | 经理号(外键) |
1 | 开发部门 | 001 |
2 | 测试部门 | 003 |
3 | 销售部门 | 002 |
或者
经理号(主码) | 经理名 | 电话 | 部门号(外键) |
001 | 张三 | 15230649808 | 1 |
002 | 李四 | 15233661143 | 3 |
003 | 王五 | 13072052826 | 2 |
②1:n联系模型
部门表(1端)
部门号(主键) | 部门名 |
1 | 开发部门 |
2 | 测试部门 |
3 | 销售部门 |
职工表(n端)
职工号(主键) | 职工名 | 薪资 |
D1 | 李昆杰 | 8000 |
D2 | 张静安 | 10000 |
D3 | 王真如 | 9000 |
D4 | 刘千凡 | 7600 |
D5 | 黄之云 | 8000 |
转化关系模型:
将1端的主键合并到n端,作为n端的外键
职工号(主码) | 职工名 | 薪资 | 部门号(外键) |
D1 | 李昆杰 | 8000 | 1 |
D2 | 张静安 | 10000 | 1 |
D3 | 王真如 | 9000 | 2 |
D4 | 刘千凡 | 7600 | 2 |
D5 | 黄之云 | 8000 | 3 |
③m:n联系转换
教师表(m端):
教师号(主键) | 教师名 |
T1 | 米新江 |
T2 | 朱红霞 |
T3 | 雷神 |
T4 | 曹慧荣 |
学生表(n端):
学号(主码) | 学生名 |
S1 | 黄琴音 |
S2 | 刘云梦 |
S3 | 王天巧 |
S4 | 兰山晴 |
转换为关系模型:
新建关系模型,将两端主键作为新模型的外键
序号(主键) | 教师号(外键) | 学号(外键) | 旷课数 |
1 | T1 | S1 | 0 |
2 | T2 | S1 | 1 |
3 | T3 | S2 | 1 |
4 | T4 | S2 | 3 |
5 | T4 | C3 | 0 |
四、总结
- 多的(1:n中的n端)可以去合并(将1端的主键设为n端的外键)
- 都少(1:1)均可去合并(任意一端的主键都可作为另一端的外键)
- 都多(m:n)均不可去合并(需要新建关系,将m、n端主键作为外键)
从上面三个例子可以很明显的看出做E-R图的好处,一个正确的E-R图可以更好地设计表,使得表既保持原范式又能保存表间关系,减少数据冗余的同时保证数据的一致性。
参考:
https://baike.baidu.com/item/E-R%E5%9B%BE/304954?fr=aladdin
https://blog.csdn.net/hanxuemin12345/article/details/13143755