



在实际的数据库创建过程中,通常会创建数据库的表间关联,即确定数据库的模式。这种方式创建的数据库表,通常要严格按照数据库设计的物理结构来定义各个数据库表的结构,同时将数据表中的主、外键确定下来,这样,一个数据库中的所有数据库表定义完成,数据库的结构也就确定了下来。
已知“新华大学学生信息管理系统”数据库设计结果,概念模型如图4-20所示。
图4-20 概念模型
逻辑结构关系模式如下:
学院(学院编号,学院名称,院长,电话,地址)
系(系编号,系名称,系主任,教师人数,班级个数,学院编号)
班级(班级编号,班级名称,班级人数,班长姓名,专业名称,系编号)
学生(学号,姓名,性别,出生年月,籍贯,班级编号)
教师(教师编号,姓名,性别,职称,系编号)
课程(课程编号,课程名称,学时,学分,学期)
学生成绩(学号,课程编号,成绩)
教师授课(教师编号,课程编号,教室编号)
物理结构设计如表4-6~表4-13所示。
表4-6 school表结构
表4-7 department表结构
表4-8 class表结构
表4-9 student表结构
表4-10 teacher表结构
表4-11 course表结构
表4-12 score表结构
表4-13 assignment表结构
利用SQL语句,创建以上所有数据库表。
利用SQL语句创建数据库表。
操作步骤如下:
(1)打开浏览器,进入“华为云-账号登录”窗口。
(2)在“华为云-账号登录”窗口登录,进入“华为云”管理平台首页。
(3)在“华为云”管理平台首页选择“控制台”选项,进入“控制台”窗口。
(4)在“控制台”窗口选择“云数据库GaussDB”选项,进入“云数据库GaussDB-管理控制台”窗口。
(5)在“云数据库GaussDB-管理控制台”窗口选择“库管理”菜单命令,打开“库管理”选项卡。
(6)在“库管理”选项卡中单击“SQL窗口”按钮,打开“SQL窗口”。
(7)在“SQL查询”选项卡的SQL编辑区,依次输入、并执行如下SQL语句:
①创建数据库表school。
CREATE TABLE 'xinhua_gaussdb'. 'school'(
'School_id' CHAR(1) NOT NULL COMMENT '学院编号',
'School_name' CHAR(10) NULL COMMENT '学院名称',
'School_dean' CHAR(6) NULL COMMENT '院长',
'School_tel' CHAR(13) NULL COMMENT '电话',
'School_addr' CHAR(10) NULL,COMMENT '地址',
PRIMARY KEY('School_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT= '学院表';
②创建数据库表department。
CREATE TABLE 'xinhua_gaussdb'. 'department'(
'Department_id' CHAR(4) NOT NULL COMMENT '系编号',
'Department_name' CHAR(14) NULL COMMENT '系名称',
'Department_dean' CHAR(6) NULL COMMENT '系主任',
'Teacher_num' SMALLINT UNSIGNED NULL COMMENT '教师人数',
'Class_num' SMALLINT UNSIGNED NULL COMMENT '班级个数',
'School_id' CHAR(1) NULL COMMENT '学院编号',
PRIMARY KEY('Department_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT='系表';
③创建数据库表class。
CREATE TABLE 'xinhua_gaussdb'. 'class'(
'Class_id' CHAR(8) NOT NULL COMMENT '班级编号',
'Class_name' CHAR(4) NULL COMMENT '班级名称',
'Student_num' SMALLINT UNSIGNED NULL COMMENT '班级人数',
'Monitor' CHAR(6) NULL COMMENT '班长姓名',
'Major' CHAR(10) NULL COMMENT '专业名称',
'Department_id' CHAR(4) NULL COMMENT '系编号',
PRIMARY KEY('Class_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT='班级表';
④创建数据库表student。
CREATE TABLE 'xinhua_gaussdb'. 'student'(
'Student_id' CHAR(6) NOT NULL COMMENT '学号',
'Student_name' CHAR(6) NULL COMMENT '姓名',
'Gender' CHAR(2) NULL COMMENT '性别',
'Birth' DATETIM ENULL COMMENT '出生年月',
'Birthplace' CHAR(50) NULL COMMENT '籍贯',
'Class_id' CHAR(8) NULL COMMENT '班级编号',
PRIMARY KEY('Student_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT= '学生表';
⑤创建数据库表teacher。
CREATE TABLE 'xinhua_gaussdb'. 'teacher'(
'Teacher_id' CHAR(7) NOT NULL COMMENT '教师编号',
'Teacher_name' CHAR(6) NULL COMMENT '姓名',
'Gender' CHAR(2) NULL COMMENT '性别',
'Title' CHAR(8) NULL COMMENT '职称',
'Department_id' CHAR(6) NULL COMMENT '系编号',
PRIMARY KEY('Teacher_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT='教师表';
⑥创建数据库表course。
CREATE TABLE 'xinhua_gaussdb'. 'course'(
'Course_id' CHAR(5) NOT NULL COMMENT '课程编号',
'Course_name' CHAR(12) NULL COMMENT '课程名称',
'Period' SMALLINT UNSIGNED NULL COMMENT '学时',
'Credit' SMALLINT UNSIGNED NULL COMMENT '学分',
'Term' SMALLINT(1) UNSIGNED NULL COMMENT '学期',
PRIMARY KEY('Course_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT='课程表';
⑦创建数据库表score。
CREATE TABLE 'xinhua_gaussdb'. 'score'(
'Student_id' CHAR(6) NOT NULL COMMENT '学号',
'Course_id' CHAR(5) NOT NULL COMMENT '课程编号',
'Score' SMALLINT UNSIGNED NULL COMMENT '成绩',
PRIMARY KEY ('Student_id','Course_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT='学生成绩表';
⑧创建数据库表assignment。
CREATE TABLE 'xinhua_gaussdb'. 'Assignment'(
'Teacher_id' CHAR(6) NOT NULL COMMENT '教师编号',
'Course_id' CHAR(5) NOT NULL COMMENT '课程编号',
'Classroom_id' CHAR(5) NULL COMMENT '教室编号',
PRIMARY KEY('Teacher_id','Course_id')
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4
COLLATE=utf8mb4_general_ci
COMMENT= '教师授课表';
(8)利用MySQL的Workbench工具,可以看到全局数据库模式,如图4-21所示。
图4-21 全局数据库模式