mysql设计表之间的联系_关系型数据库表与表之间的设计

关系型数据库表与表之间一般存在三种关系:

一对一

多对一(如:老师与学院)

多对多(如:老师与学生)

下面分别就三种关系讲解数据库相关设计的思路和思考过程:

# 一对一关系(少见)

建立一个父表和一个子表,最好将数据量多的作为子表,内有自己 id 号作为主键,并有父表的主键(id)做为外键。

# 多对一关系

各建立两张表,多端表指向另一张表(即多指向一),同时多端表中加上外键约束。

例 1:每个教师只担任一门课的教学,一门课由若干教师任教。“教师”有属性:职工号,教师姓名,职称,“课程”有属性:课程号、课程名。

解析:由题目可知,需要创建两张表:教师表和课程表,其关系为多对一,则教师表为子表,课程表为父表,教师表指向课程表(多指向一)。

E-R 图如下(使用 PowerDesigner15.1 绘制):

6b9d84a2345915d5216bc4c456356601.png

建表语句如下:

a5f7da80110668f5f371eb138061df74.png

# 多对多关系

方法一:选择一张表作为父表,另一张作为子表,在子表中添加外键。建表语句与例 1 中相似,就不做过多赘述。

方法二:在建立两张基本信息表的同时,建立一个中间表,这个中间表通过两个 id 映射作为一个多列索引来表达两个表的数据关系。

例 2:一个产品由多种零件组成,一种零件也可装配出多种产品。产品有产品号和价格,零件有零件号、重量和价格。

方法二:需要创建三张表:零件表、产品表和关系表。

E-R 图如下:

4bcc26a9124f8a531d1a897d727716f0.png

建表语句如下:

fb9f52bbf207badaf8e75a24357d26bb.png

# 总结

表中行的信息是通过 id(主键)来标识的,多表的关系总是通过建立一个各个表的 id 映射(外键)来表达,这个映射表有时比较简单,就把它包含到其要映射的一个表中(如多对一关系表);而比较复杂时就需要单独提取出来(如多对多关系表),当然也可以不提取出来,但是那样设计会产生很多冗余空间,占用我们硬盘。把表分开节约空间,把表合并节约时间,具体表该怎么设计最终还是要看需求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值