存在六个实体分别为:教师(教师编号(PK),教师姓名,登陆密码)、课程(课程编号(PK),课程名称,教师编号(FK))、成绩(学生学号(PK) (FK),课程编号(PK) (FK),成绩)、学籍(学生学号(PK),学生姓名,学生性别,学生籍贯,学生班级(FK),登陆密码)、班级(班级编号(PK),班级名称,所属学院,班级人数)、管理员(管理员编号(PK),登陆密码),PK表示主键,FK表示外键其中。教师与课程之间的关系为授课,课程与成绩之间的关系为考试,成绩与学籍之间的关系为录入,学籍与管理员之间的关系为管理,学籍与班级之间的关系为“属于”。请把建库建表的 DDL 语句写出来,需要做物理设计,设计出属性的数据类型,创建索引,选择存储引擎。
时间: 2024-03-23 21:42:11 浏览: 56
自然语言处理课程实验:基于LSTM的命名实体识别
根据所给出的实体,可以设计出以下的建库建表的 DDL 语句:
```
CREATE DATABASE IF NOT EXISTS school_db;
USE school_db;
-- 创建教师表
CREATE TABLE IF NOT EXISTS teacher (
teacher_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
teacher_name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建课程表
CREATE TABLE IF NOT EXISTS course (
course_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
course_name VARCHAR(50) NOT NULL,
teacher_id INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (course_id),
FOREIGN KEY (teacher_id) REFERENCES teacher (teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建成绩表
CREATE TABLE IF NOT EXISTS score (
student_id INT(11) UNSIGNED NOT NULL,
course_id INT(11) UNSIGNED NOT NULL,
score FLOAT(4, 1) NOT NULL,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES student (student_id),
FOREIGN KEY (course_id) REFERENCES course (course_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建学籍表
CREATE TABLE IF NOT EXISTS student (
student_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
student_name VARCHAR(50) NOT NULL,
gender ENUM('男', '女') NOT NULL,
native_place VARCHAR(50) DEFAULT NULL,
class_id INT(11) UNSIGNED NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (student_id),
FOREIGN KEY (class_id) REFERENCES class (class_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建班级表
CREATE TABLE IF NOT EXISTS class (
class_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
class_name VARCHAR(50) NOT NULL,
college VARCHAR(50) DEFAULT NULL,
student_num INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (class_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建管理员表
CREATE TABLE IF NOT EXISTS admin (
admin_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (admin_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建索引
CREATE INDEX idx_student_class ON student (class_id);
```
在这个建库建表的 DDL 语句中,我们选择了 InnoDB 作为存储引擎,因为它支持事务和行级锁定,并且具有较好的性能表现。同时,我们对 student 表中的 class_id 字段创建了索引,以加快查询学生的操作。
阅读全文