2024年3月20日发(作者:)
在数据库joblog中用到了3个表:student(学生表)、course(课程表)和sc(选
课表)。这些表的详细信息见6.1.1节“示例中用到的默认数据库表和数据”。在现实模型
中,一个学生可以选择多门课程,一个课程可以被多个学生选择,student和course是多
对多的关联关系。为了便于演示HQL的多表查询,本节中假设student和course之间是
单向关联关系。
在多对多的关联关系中,一般来说有个中间表,这个表描述了多对多关系,这就是选
课表sc,sc每一行数据代表一个学生的选课和成绩。
各个表的主键、外键设置如下。
student表的主键是id字段。
course表的主键是id字段。
sc表的主键是id字段。
sc表中的Sno字段是student表id字段的外键。
sc表中的Cno字段是course表id字段的外键。
图6-8是3个表之间关系的直观表示。
图6-8 3个表之间的关系
在MySQL Query Browser中设置好上述关系。如果此处设置不正确,可能会影响多
表连接查询。其中sc表的建表信息如下(其中包含了外键关系)。
CREATE TABLE 'joblog'. 'sc' (
'id' int(10) unsigned NOT NULL auto_increment COMMENT 'id',
'Sno' int(10) unsigned NOT NULL default '0' COMMENT '学号',
'Cno' int(10) unsigned NOT NULL default '0' COMMENT '课程号',
'Grade' int(10) unsigned default NULL COMMENT '成绩',
PRIMARY KEY ('id'),
KEY 'FK_sc_1' ('Sno'),
KEY 'FK_sc_2' ('Cno'),


发布评论