系统前台结构图
下面是数据库数据字典的设计:
a.选课表 table_course
编 号 |
字 段 名 称 |
数 据 结 构 |
说 明 |
1 |
c_id |
数字 |
选课编号,自动编号,pk |
2 |
c_name |
文本 |
选课名 |
3 |
d_id |
数字 |
系别编号,fk系别表 |
4 |
c_max_number |
数字 |
最大可选人数 |
5 |
c_now_number |
数字 |
现在已选人数 |
6 |
c_eff_date |
文本 |
有效日期,如2004-5-1 9:23:54 在C#中用DateTime.Now.ToString()获得 |
7 |
c_credit_hour |
数字 |
学分数 |
8 |
c_introduction |
文本 |
课程简介 |
b.学生表 table_student
编 号 |
字 段 名 称 |
数 据 结 构 |
说 明 |
1 |
s_id |
数字 |
学号,要求程序可批量添加学生,pk |
2 |
s_name |
文本 |
学生名 |
3 |
d_id |
数字 |
系别编号,fk系别表 |
4 |
spe_id |
数字 |
专业班编号,fk专业班表 |
5 |
native_place |
文本 |
籍贯 |
6 |
identity_card |
数字 |
身份证号,18位,若15位则将其转为18位 |
7 |
term_credit_hours |
数字 |
本学期已选课学分数,默认0 |
8 |
all_credit_hours |
数字 |
已选、已修选修课学分,默认0 |
9 |
s_pwd |
文本 |
学生密码,自动生成或为空 |
c.选课与学生联系表 table_course_student
编 号 |
字 段 名 称 |
数 据 结 构 |
说 明 |
1 |
c_id |
数字 |
选课编号,fk选课表 |
2 |
s_id |
数字 |
学号,fk学生表 |
3 |
c_s_mark |
数字 |
选课成绩,浮点数,如60.5 |
d.专业班表 table_specialty_class
编 号 |
字 段 名 称 |
数 据 结 构 |
说 明 |
1 |
spe_id |
数字 |
专业班编号,自动编号,pk |
2 |
spe_name |
文本 |
专业名+班号,其中班号为最后1位字符,班号由可选项输入,1到9 |
3 |
d_id |
数字 |
系别编号,fk系别表 |
4 |
entrance_year |
数字 |
入学年份,列表:2006-2100,4位 |
5 |
term_max_spe_number |
数字 |
专业本学期最大可选修课数 |
6 |
spe_stu_number |
数字 |
专业班最大人数 |
7 |
education_level |
文本 |
在读学历,可选或列表,本科或专科,无研究生 |
e.系别表 table_department
编 号 |
字 段 名 称 |
数 据 结 构 |
说 明 |
1 |
d_id |
数字 |
系别编号,自动编号,pk |
2 |
d_name |
文本 |
系别名 |
3 |
d_stu_number |
数字 |
系别总人数,默认0 |
f.管理员表 table_admin
编 号 |
字 段 名 称 |
数 据 结 构 |
说 明 |
1 |
a_id |
数字 |
管理员编号,自动编号,pk |
2 |
a_name |
文本 |
管理员姓名 |
3 |
a_pwd |
文本 |
管理员密码 |
在这里说一下数据库的关系模式的规范形式:
1NF:每个属性的值域都是不可再分的简单数据项,不用说了吧。
2NF:关系模式R是1NF,而且每一个非键属性都完全函数依赖于R的键(即不存在“部分函数依赖”)。转换为2NF的方法是:消除部分函数依赖。
3NF:关系模式R是2NF,而且它的任何一个非键属性都不传递依赖于R的任何候选键。转换为3NF的方法是:消除传递函数依赖。
BCNF:若关系模式R是1NF,如果对于R的每个函数依赖 X —〉Y,X必为候选键,则R为BCNF。
3NF转换为BCNF的方法:消除主属性对键的部分和传递函数依赖,即将3NF关系分解成多个BCNF关系模式。不过,属于3NF而非BCNF的关系模式不多。
一般设计成2NF或3NF就可以了。
我设计的应该是3NF以上吧!
关系图