用mysql数据库实现设计学生宿舍管理系统,其中包含1.登陆 2.宿舍基本信息表 3.专业基本信息表 4.学生基本信息表 5.住宿表 6.卫生信息表。写出mysql数据库代码 并说明每个代码的约束
时间: 2024-02-17 14:03:48 浏览: 68
以下是一个MySQL数据库设计,实现学生宿舍管理系统的要求:
```mysql
-- 创建数据库
CREATE DATABASE dormitory_management_system;
-- 使用数据库
USE dormitory_management_system;
-- 创建宿舍基本信息表
CREATE TABLE dormitory (
dormitory_id INT PRIMARY KEY AUTO_INCREMENT, -- 宿舍ID,主键,自增
dormitory_name VARCHAR(20) NOT NULL, -- 宿舍名称,非空
dormitory_capacity INT NOT NULL -- 宿舍容量,非空
);
-- 创建专业基本信息表
CREATE TABLE major (
major_id INT PRIMARY KEY AUTO_INCREMENT, -- 专业ID,主键,自增
major_name VARCHAR(50) NOT NULL -- 专业名称,非空
);
-- 创建学生基本信息表
CREATE TABLE student (
student_id INT PRIMARY KEY AUTO_INCREMENT, -- 学生ID,主键,自增
student_name VARCHAR(20) NOT NULL, -- 学生姓名,非空
student_gender ENUM('男', '女') NOT NULL, -- 学生性别,非空
student_major_id INT NOT NULL, -- 学生所属专业ID,非空
student_grade INT NOT NULL, -- 学生年级,非空
student_class INT NOT NULL, -- 学生班级,非空
FOREIGN KEY (student_major_id) REFERENCES major(major_id) -- 学生所属专业ID外键,参考专业基本信息表
);
-- 创建住宿表
CREATE TABLE accommodation (
accommodation_id INT PRIMARY KEY AUTO_INCREMENT, -- 住宿ID,主键,自增
student_id INT NOT NULL, -- 学生ID,非空
dormitory_id INT NOT NULL, -- 宿舍ID,非空
check_in_date DATE NOT NULL, -- 入住日期,非空
check_out_date DATE, -- 退房日期,可空
FOREIGN KEY (student_id) REFERENCES student(student_id), -- 学生ID外键,参考学生基本信息表
FOREIGN KEY (dormitory_id) REFERENCES dormitory(dormitory_id) -- 宿舍ID外键,参考宿舍基本信息表
);
-- 创建卫生信息表
CREATE TABLE hygiene (
hygiene_id INT PRIMARY KEY AUTO_INCREMENT, -- 卫生ID,主键,自增
dormitory_id INT NOT NULL, -- 宿舍ID,非空
hygiene_date DATE NOT NULL, -- 卫生日期,非空
cleanliness ENUM('优', '良', '差') NOT NULL, -- 卫生情况,非空
FOREIGN KEY (dormitory_id) REFERENCES dormitory(dormitory_id) -- 宿舍ID外键,参考宿舍基本信息表
);
-- 创建管理员表
CREATE TABLE admin (
admin_id INT PRIMARY KEY AUTO_INCREMENT, -- 管理员ID,主键,自增
admin_name VARCHAR(20) NOT NULL, -- 管理员姓名,非空
admin_password VARCHAR(50) NOT NULL -- 管理员密码,非空
);
-- 创建索引
CREATE INDEX idx_student_major_id ON student (student_major_id); -- 为学生基本信息表的学生所属专业ID创建索引,加快查询速度
CREATE INDEX idx_accommodation_student_id ON accommodation (student_id); -- 为住宿表的学生ID创建索引,加快查询速度
CREATE INDEX idx_accommodation_dormitory_id ON accommodation (dormitory_id); -- 为住宿表的宿舍ID创建索引,加快查询速度
CREATE INDEX idx_hygiene_dormitory_id ON hygiene (dormitory_id); -- 为卫生信息表的宿舍ID创建索引,加快查询速度
```
上述代码中,每个表都有主键和外键,以保证数据的完整性和一致性。同时,还为一些常用的字段创建了索引,以提高查询效率。
阅读全文