在实际的数据库创建过程中,通常会创建数据库的表间关联,即确定数据库的模式。这种方式创建的数据库表,通常要严格按照数据库设计的物理结构来定义各个数据库表的结构,同时将数据表中的主、外键确定下来,这样,一个数据库中的所有数据库表定义完成,数据库的结构也就确定了下来。
已知“新华大学学生信息管理系统”数据库设计结果,概念模型如图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 全局数据库模式