常用搜索: 北大青鸟系统分析师数据库系统工程师网络工程师软件设计师软件评测师信息安全工程师程序员网络管理员短信猫OracleSQL ServerDB2AndroidWindows操作系统
上一讲


系统前台结构图












下面是数据库数据字典的设计:

 

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位字符,班号由可选项输入,19

3

d_id

数字

系别编号,fk系别表

4

entrance_year

数字

入学年份,列表:2006-21004

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以上吧!




关系图

posted on 2006-03-29 01:34  Bankey  阅读(1330)  评论(2编辑  收藏  举报
常用插件:Html Agility PackjchardetThickBoxFCKeditoreWebEditorAjaxProAspNetPager