例一、假设有以下表:
T1(a1,a2, a3, a5)
T2(a3,a4)
T3(a5, a6)
T4(a3, a5, a7)
其中带下划线的属性标识为所在关系模式的主码
T1中的a3是参照T2的外码
T1中的a5是参照T3的外码
T4中的a3是参照T2的外码
T4中的a5是参照T3的外码
请将上述关系模式用适当的E-R图表示出来,并用下划线标注出作为实体主码的属性。
分析易知:
假如有实体t1,t2,t3,t4则
T1(a1,a2,)
T2(a3,a4)
T3(a5, a6)
T4( a7)
t4中仅仅只有a7所以可以认为是联系的属性(用T4来表示联系)
所以易知t1和t2之间存在一个联系(用T1来表示)
下面是E-N图:
例二、在某数据库中,相关表的建表语句如下:
create tableT1(
a1 int primary key,
a2 int,
a3 int foreign key references T2(a3)
);
create tableT2(
a3 int primary key,
a4 int,
a5 int foreign key references T2(a3)
);
create tableT3(
a1 int,
a3 int,
a6 int,
primary key (a1, a3),
a1 foreign key references T1(a1),
a3 foreign key references T2(a3)
);
请画出相应的E-R图,使得可以从该E-R图推导出上述表定义,其中实体和联系的名称可以自定,实体的主码属性请使用下划线标明。
分析:
化简表如下:
tableT1(a1,a2,a3) a1为主键,a3为外键(T2表的主键)
tableT2(a3,a4,a5) a3为主键引用T2表中的主键(也就是a3)
tableT3(a1,a3,a6) a1,a3为联合主键,并且a1,a3分别是外键
假如有实体t1,t2,t3,t4则
tableT1(a2)
tableT2(a4)
tableT3(a6)
我们看tableT1表
表中只含有一个a2,所以可以认为它是联系的一个属性
并且存在一个含有a1的属性的实体我们记为t1
存在一个含有a3的属性的实体我们记为t3
同理我们看tableT2表
易知T2中只含有a4,所以我们可以认为它是一个联系的属性
并且存在一个含有a3,a5属性的实体我们记为t2
现在看tableT3
易知T3中只含有a6,所以我们可以认为它是一个联系的属性
所以可画E-N图:
例三、设某教学管理系统,其查询模块需要提供如下功能:
Ⅰ.查询系信息,列出各系编号、系名和系办公电话;
Ⅱ.查询某系教师的信息,列出教师号、教师名、工资和聘用日期;
Ⅲ.查询某教师讲授的课程信息,列出课程号、课程名和学分;
Ⅳ.查询讲授某门课程的教师信息,列出教师名和职称;
Ⅴ.查询某门课程的先修课程信息,列出先修课程号和先修课程名。
系统有如下业务规则:
Ⅰ.一个系可聘用多名教师,一名教师只能受聘于一个系;
Ⅱ.一名教师可讲授多门课程,一门课程可由多名教师讲授;
Ⅲ.一门课程可以有多门先修课程,也可以没有先修课程
(1)根据以上查询功能与业务规则,用E-R图描述该系统的概念模型。
(2)将ER图转换为满足3NF的关系模式,并说明每个关系模式的主码和外码。
一个系可以聘用多名教师,一名教师只能受聘于一个系,所以系实体与教师实体有联系;
一名教师可以讲授多门课程,一门课程可由多名教师讲授,所以教师实体与课程实体有联系;
一门课程可以有多门先修课程,所以课程间也有联系。
所以我们可以作出以下E-N图:
所以:
系(系编号,系名,系办公电话)无外码
教师(教师号,教师名,工资,聘用日期,职称,系编号)外码:系编号
课程(课程号,课程名,学分,教师号)外码:教师号
先修(先修课程号,先修课程名,课程号)外码:课程号