============================================
数据库: dbsclab2026 (university)
所有表的 Schema 信息
============================================

共 18 个对象：15 个基础表 + 3 个视图

============================================
基础表 (BASE TABLE)
============================================

----------------------------------------------
1. advisor (导师关系表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
s_ID            varchar(5)        NO      PRI     NULL       学生ID
i_ID            varchar(5)        YES     MUL     NULL       教师ID

主键: s_ID
外键: i_ID -> instructor(ID) ON DELETE SET NULL
      s_ID -> student(ID) ON DELETE CASCADE

----------------------------------------------
2. classroom (教室表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
building        varchar(15)       NO      PRI     NULL       建筑名
room_number     varchar(7)        NO      PRI     NULL       房间号
capacity        decimal(4,0)      YES             NULL       容量

主键: (building, room_number)

----------------------------------------------
3. course (课程表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
course_id       varchar(8)        NO      PRI     NULL       课程ID
title           varchar(50)       YES             NULL       课程名称
dept_name       varchar(20)       YES     MUL     NULL       所属系
credits         decimal(2,0)      YES             NULL       学分

主键: course_id
外键: dept_name -> department(dept_name) ON DELETE SET NULL
检查约束: credits > 0

----------------------------------------------
4. department (院系表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
dept_name       varchar(20)       NO      PRI     NULL       系名
building        varchar(15)       YES             NULL       所在建筑
budget          decimal(12,2)     YES             NULL       预算

主键: dept_name
检查约束: budget > 0

----------------------------------------------
5. employee (员工表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
emp_id          int               NO      PRI     NULL       员工工号(自增)
name            varchar(50)       NO              NULL       姓名
age             int               YES             NULL       年龄
gender          enum('男','女')   NO              NULL       性别
contact         varchar(100)      YES             NULL       联系方式
hire_date       date              YES             NULL       入职时间
salary          decimal(10,2)     YES             NULL       工资

主键: emp_id (AUTO_INCREMENT)

----------------------------------------------
6. instructor (教师表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
ID              varchar(5)        NO      PRI     NULL       教师ID
name            varchar(20)       NO              NULL       姓名
dept_name       varchar(20)       YES     MUL     NULL       所属系
salary          decimal(8,2)      YES             NULL       薪资

主键: ID
外键: dept_name -> department(dept_name) ON DELETE SET NULL
检查约束: salary > 29000

----------------------------------------------
7. instructor3 (教师备份表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
ID              varchar(5)        NO              NULL       教师ID
name            varchar(20)       NO              NULL       姓名
dept_name       varchar(20)       YES             NULL       所属系
salary          decimal(8,2)      YES             NULL       薪资

无主键、无外键、无约束

----------------------------------------------
8. mylog3 (日志表)
----------------------------------------------
字段名          类型              空值     键      默认值           说明
id              int               NO      PRI     NULL             自增ID
tbname          varchar(50)       YES             NULL             表名
colname         varchar(50)       YES             NULL             列名
event           varchar(20)       YES             NULL             事件类型
oldvalue        varchar(255)      YES             NULL             旧值
newvalue        varchar(255)      YES             NULL             新值
date            timestamp         YES             CURRENT_TIMESTAMP 时间

主键: id (AUTO_INCREMENT)

----------------------------------------------
9. prereq (先修课程表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
course_id       varchar(8)        NO      PRI     NULL       课程ID
prereq_id       varchar(8)        NO      PRI/MUL NULL       先修课程ID

主键: (course_id, prereq_id)
外键: course_id -> course(course_id) ON DELETE CASCADE
      prereq_id -> course(course_id)

----------------------------------------------
10. section (开课表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
course_id       varchar(8)        NO      PRI     NULL       课程ID
sec_id          varchar(8)        NO      PRI     NULL       班级号
semester        varchar(6)        NO      PRI     NULL       学期
year            decimal(4,0)      NO      PRI     NULL       年份
building        varchar(15)       YES     MUL     NULL       建筑
room_number     varchar(7)        YES             NULL       房间号
time_slot_id    varchar(4)        YES             NULL       时间段ID

主键: (course_id, sec_id, semester, year)
外键: course_id -> course(course_id) ON DELETE CASCADE
      (building, room_number) -> classroom(building, room_number) ON DELETE SET NULL
检查约束: semester in ('Fall','Winter','Spring','Summer')
          year > 1701 and year < 2100

----------------------------------------------
11. student (学生表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
ID              varchar(5)        NO      PRI     NULL       学生ID
name            varchar(20)       NO              NULL       姓名
dept_name       varchar(20)       YES     MUL     NULL       所属系
tot_cred        decimal(3,0)      YES             NULL       总学分

主键: ID
外键: dept_name -> department(dept_name) ON DELETE SET NULL
检查约束: tot_cred >= 0

----------------------------------------------
12. student01 (学生扩展表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
ID              varchar(20)       NO      PRI     NULL       学生ID
Name            varchar(50)       YES             NULL       姓名
Birthplace      varchar(50)       YES             NULL       出生地
Deptname        varchar(50)       YES     MUL     NULL       系名

主键: ID

----------------------------------------------
13. takes (选课表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
ID              varchar(5)        NO      PRI     NULL       学生ID
course_id       varchar(8)        NO      PRI     NULL       课程ID
sec_id          varchar(8)        NO      PRI     NULL       班级号
semester        varchar(6)        NO      PRI     NULL       学期
year            decimal(4,0)      NO      PRI     NULL       年份
grade           varchar(2)        YES             NULL       成绩

主键: (ID, course_id, sec_id, semester, year)
外键: (course_id, sec_id, semester, year) -> section ON DELETE CASCADE
      ID -> student(ID) ON DELETE CASCADE

----------------------------------------------
14. teaches (授课表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
ID              varchar(5)        NO      PRI     NULL       教师ID
course_id       varchar(8)        NO      PRI     NULL       课程ID
sec_id          varchar(8)        NO      PRI     NULL       班级号
semester        varchar(6)        NO      PRI     NULL       学期
year            decimal(4,0)      NO      PRI     NULL       年份

主键: (ID, course_id, sec_id, semester, year)
外键: (course_id, sec_id, semester, year) -> section ON DELETE CASCADE
      ID -> instructor(ID) ON DELETE CASCADE

----------------------------------------------
15. time_slot (时间段表)
----------------------------------------------
字段名          类型              空值     键      默认值     说明
time_slot_id    varchar(4)        NO      PRI     NULL       时间段ID
day             varchar(1)        NO      PRI     NULL       星期
start_hr        decimal(2,0)      NO      PRI     NULL       开始小时
start_min       decimal(2,0)      NO      PRI     NULL       开始分钟
end_hr          decimal(2,0)      YES             NULL       结束小时
end_min         decimal(2,0)      YES             NULL       结束分钟

主键: (time_slot_id, day, start_hr, start_min)
检查约束: start_hr >= 0 and start_hr < 24
          start_min >= 0 and start_min < 60
          end_hr >= 0 and end_hr < 24
          end_min >= 0 and end_min < 60

============================================
视图 (VIEW)
============================================

----------------------------------------------
16. departbasicview (院系基本视图)
----------------------------------------------
字段名          来源                      说明
name            department.dept_name      系名
build           department.building       建筑

定义: SELECT dept_name AS name, building AS build FROM department

----------------------------------------------
17. departments_total_salary (院系总薪资视图)
----------------------------------------------
字段名          来源                      说明
dept_name       instructor.dept_name      系名
total_salary    SUM(instructor.salary)    总薪资

定义: SELECT dept_name, SUM(salary) FROM instructor GROUP BY dept_name

----------------------------------------------
18. faculty (教职工视图)
----------------------------------------------
字段名          来源                      说明
ID              instructor.ID             教师ID
name            instructor.name           姓名
dept_name       instructor.dept_name      系名

定义: SELECT ID, name, dept_name FROM instructor
