|
该数据库主要实现对毕业生毕业设计情况的管理,具体内容包括对学院、学生、实习单位、实习项目及实习指导教师的管理。学生作毕业设计分为校内实习和校外实习,要记录的信息有:
3. 学生基本情况:学号、姓名、性别、年龄、专业、籍贯、实习单位(校内实习的学生此项为空)……
4. 实习单位情况:单位编号、单位名称、联系电话、通信地址、邮编……
5. 论文选题情况:论文题目、要求……
6. 校内实习导师:教师编号、姓名、性别、系别、职称、职务……
7. 校外实习导师:员工编号、姓名、性别、部门、职称、职务……
如下限制:一位教师指导学生人数不得超过10人;职称不到副教授、教授级别的教师只能指导本专业学生;职称不到讲师级别的教师只能指导校外实习学生。
以下是我写的表
学生实体转换成‘学生’表
列名 数据类型 键、约束和默认
学号 int 主键
姓名 varchar(20)
姓别 char(2)
年龄 tinyint
专业 char
籍贯 varchar(50)
论文ID int 外键:参照‘论文’表的论文ID是否校外默认是0
公司实体转换成‘学习单位’表
列名 数据类型 键、约束和默认
单位ID int 主键
名称 varchar(50)
电话 varchar(30)
地址 varchar(50)
邮编 int
教师实体转换成‘校内导师’表
列名 数据类型 键、约束和默认
教师ID int 主键
姓名 varchar(20)
姓别 char(2)
系别 char
职务 char
职称 char
员工实体转换成‘校外导师’表
列名 数据类型 键、约束和默认
员工ID int 主键
姓名 varchar(20)
姓别 char(2)
部门 varchar(50)
职务 char
职称 char
单位ID int 外键:参照‘学习单位’表的‘单位ID’
论文实体转换成‘论文’
列名 数据类型 键、约束和默认
论文ID int 主键
论文题目 varchar(50)
‘学生论文实习’表。
列名 数据类型 键、约束和默认
学号 int 主键:参照‘学生’表的‘学号’
员工ID int 外键:参照‘校外导师’表的‘员工ID’
教师ID int 外键:参照‘校内导师’表的‘教师ID’
单位ID int 外键:参照‘学习单位’表的‘单位ID’
想在‘学生论文实习’表。中加一个限制,让职称=‘助教’的,只能指导10个本系的学生。constrain上的check 是不能加子查询来限制check的条件。想请教还有什么更好的方法,
我的做法是在视图上把,合条件的选出来,
alter view 助教_学生(学号)
as
select 学生论文实习.学号
from 学生论文实习,学生,校内导师
where( 学生.专业=校内导师.系别 and 校内导师.系别='助教' and 学生.学号=学生论文实习.学号 and 学生论文实习.教师ID=校内导师.教师ID)
go
但是接下去的:
alter table 学生论文实习
add constrain check (count(学生论文实习.学号=助教_学生(学号))〈10)
总是不对
请高人指教``` |
|