应用题 1.  在一个数据库中,相关表的建表语句如下
    create table T1(
    a1 int primary key,
    a2 int,
    a3 int foreign key references T2(a3));
    create table T2(
    a3 int primary key,
    a4 int,
    a5 int foreign key references T2(a3));
    create table T3(
    a6 int primary key,
    a7 int);
    create table T4(
    a1 int foreign key references T1(a1),
    a3 int foreign key references T2(a3),
    a6 int foreign key references T3(a6),
    a8 int,
    primary key (a1, a3, a6));
    请画出相应的ER图,使得可以从该ER图推导出上述表定义,其中实体和联系的名称可以自定。
【正确答案】
【答案解析】 ER图向关系模式转换涉及到两方面:①实体的转换;②实体间联系的转换。
   实体的转换:在从ER图转换为关系模式时,一个实体就转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。
   实体间联系的转换:实体间存在三种联系,即1:1(一对一)联系,1:m(一对多)联系,m:n(多对多)联系。在从联系向关系模式转换时规则如下:
   (1)1:1(一对一)联系
   方法一:联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的键构成;主键由两个实体中的任意一个键构成。
   方法二:联系与一端的实体的关系模式合并,即将联系的属性加入到实体的关系模式内,主键不变。
   (2)1:m(一对多)联系
   方法一:联系转换为独立的关系模式;模式的属性由联系本身的属性及两个实体的键构成;主键由m端实体的键组成。
   方法二:与m端的实体的关系模式合并,即将联系的属性加入到实体的关系模式内,主键不变。
   (3)m:n(多对多)联系。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。
   (4)3个或者3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
   (5)具有相同码的关系模式可以合并。
   该题的解题过程是ER图向关系模式转换过程的反向推算。
   本题中表T1、T2的主键是单一主键,并且存在外键。 T3存在单一主键,不存在外键。因此可以推断出T1对应的实体t1,属性是a1、a2,a1是主键,a3是另外一个实体的主键;T2对应的实体t2,属性是a3、a4,其中a3是主键,a5是另外一个实体的主键。
   t1和t2之间是多对一关系。a5对应实体t3只有一个属性,和t2实体之间是一对多关系。
   而T3对应的实体t4的属性是a6、a7,其中a6是主键。T4表的主键是由实体t1、t2、t4的主键组成(a1,a3,a6),属性是a8。根据实体间联系转换规则,表T4是多对多联系转换而成。t4和t1、t2是多对多关系,a8是联系的属性。