7 ER图

注意:

菱形:关系集

矩形:实体集,上方是表名称,下方是属性,主码加下划线

特别的:如果一个实体集没有主码,它的某些属性和另一个元素的主码一起可以作为分辨,则那些属性叫做部分码,加下划线,这个实体集叫做弱实体集

箭头:箭头指向的对象是一个,箭头出发的对象可以有多个和其对应

双菱形:弱实体集和强实体集的关系集

双线:用于实体集和关系集的连接,表示参与度是全部参与,这个实体集全部被用到了。一般多对一的,那些多的实体集必须用双线和关系集连接。然后关系集指向一的实体集。

ER图绘制方法:

1.列出题目中提到的实体,看需要记录哪些属性

2.检查实体还是属性:

实体是否是别的实体的一个属性,是则转为属性

如果属性是多值的,那么分裂出去作为一个新的实体,创建一个关系集

3.检查冗余:如果一个属性是别的实体的主码,则删除,创建一个关系集。

根据ER关系绘制ER图。

举例:Please design an ER diagram for a takeaway platform(外卖平台)to capture information about restaurants, customers, couriers(快递员), orders , payments, and deliveries, etc. A restaurant sell items on the platform. A customer has several addresses. A courier delivers packages of order to customers.

首先确定如下实体:

restaurants(res_id, items)
customers(cus_id, address, o_id, p_id, d_id)
courier(cou_id, o_id)
order(o_id, custom, payment, deliveries, item)
deliveries(d_id, o_id, p_id)
payment(p_id, o_id, d_id)

这些都是题目中提到的

检查属性还是实体:

一个饭店可以有多个item,因此分裂为实体,新建r_i关系集,同样,order的item也被分裂出去,新建order_item

一个顾客有多个address,因此分裂为实体,新建cus_addr关系集

deliveries, payment这些都是order的属性,因为一个order只有一个运送任务和一个付款。删除它们,把d_id和p_id加入到order中。不知道deliveries到达什么东西,所以不管了。

检查冗余:

顾客的o_id是主码,删除,新建cus_o

快递员o_id, cus_id是主码,删除,新建cou_o, cou_cus

订单的cus_id是主码,删除,新建o_cus

结果:
item
address
restaurants(res_id, i_id)
customers(cus_id)
courier(cou_id)
order(o_id, pay)

res_item
o_cou
o_cus
o_item
cou_cus
addr_cus

6个实体,6个关系

答案为:
在这里插入图片描述
我觉得一个order应该只有一个pay,但是答案认为一个订单可以有多个付款,所以多了一个关系。另外答案认为订单记录了地址,我觉得订单记录了顾客,这些应该问题不大。

将ER图转为关系模式:

1.冗余:弱实体集和强实体集的联系集是冗余的

2.合并:有实体集A,B,和联系集AB,如果A或者B全部参与,那么可以合并为一个包含AB所有属性的实体集A’

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值