MySQL数据库设计说明.docx
- 文档编号:4000584
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:50.39KB
MySQL数据库设计说明.docx
《MySQL数据库设计说明.docx》由会员分享,可在线阅读,更多相关《MySQL数据库设计说明.docx(16页珍藏版)》请在冰豆网上搜索。
MySQL数据库设计说明
MySQL数据库设计
课程设计说明书
题目:
驾校学员管理糸统
院系:
信息与智能工程糸
专业班级:
嵌入式技术与应用
学号:
2011251011
学生:
杳
指导教师:
2012年1月9日
驾校学员管理系统
-•系统概述
驾校学员管理系统主要用于管理驾校的各种数据,利用这种mysql数据库的驾校管理系统可以给学员的管理资料的整理,资料的查询,数据的处理带来了很大的方便,能够很大的提高管理员的工作效率.
本系统主要用于管理学员的学籍信息/体检信息/成绩信息和驾驶证的领取信息等•这些信息的录入/查询/修改等操作都是该系统的重点解决的问题.
本系统分为5个管理部分,即用户的管理/秘籍信息管理/体检信息管理/成绩信息管理和领证信息管理.
本驾校学员管理系统的开发语言为JaVa语言,选择的数据库是mysql.本系统是B/S架构的系统,需要Web服务器tomcat
二.系统功能
驾校学员管理系统主要的功能是5个管理部分,即用户的管理/秘籍信息管理/体检信息管理/成绩信息管理和领证信息管理•本系统的管理模块如图所示
驾校学员管理糸统
图中模块的详细介绍如下:
用户信息管理:
主要是对管理员的登录进行管理.管理员登录成功后,系统会进入到系统的管理界面•而且管理员可以修改自己的密码.
学籍信息管理:
主要是对学生信息的插入/查询/修改和删除.查询学员的信息时,可以通过学号//报考的车型和学员的状态进行查询/通过这四个方面的处理,使学籍信息的管理更加的方便.
体检信息管理:
主要对学员的体检信息的插入/查询/修改和删除.
成绩信息管理:
对学员的学籍信息进行插入/查询/修改和删除等操作,以便有效的管理学员的成绩信息.
领证信息管理:
对学员的驾驶证的领取进行管理.这部分主要是对学员的领证信息的插入/查询/修改和删除等操作.这样可以保证学员的驾驶证领取后,领取驾驶证的信息能够有效的管理•
三.数据库设计.
数据库设计是开发管理系统的一个重要的步骤,下面是数据库的设计过程•
数据库设讣是要确定创建一些表/表中的字段/字段的数据类型和字段的长度.
1.设计表
本系统所有的表都放在drivingschool数据库下,创建drivingschool数据库的SQL代码如下:
CREATEDATABASEdrivingschool;
DyQ(II.>ShOvJdatabases;
:
Da.ta.base
!
infoPnIaLtion_SChema!
bookdata
!
dι*iuInCfschool
!
mysql
!
test5rowsinS巳七<0.03sec〉
运行的结果如图:
1.user表
USer表中存储用户名和密码,所以将USer表设汁为只有两个字段.USernamez?
段表示用户名,PaSSWOrd字段表示密码•因为用户名和密码都是字符串,所以这两个字段都是使用VarChar类型•而且将这两个字段的长度都设置为20.而且用户名必须唯一・USer表的每个字段的信息如表所示
字段名
字段描述
数据类型
主键
外键
非空
唯
默认值
自增
USername
用户名
VarChar(20)
是
否
是
是
无
否
PaSSWOrd
密码
VarChar(20)
否
否
是
否
无
否
根据上表的容创建USer表•创建USer表的语句如下:
CREATETABLEuser(
USernameVarChar(20)PrimarykeyUniqUenotnull,
PaSSWOrdVarChar(20)notnull
);
创建完成后,可以使用desc语句来查询USer表的结构,如图所示:
mysql>descUSeFJ
*H+■!
H÷h
IFieIdSTypeSNUll!
KeSF'DefaUIt∣EXtraS
+++-b十♦+
:
HSepnane:
UaFChar(20):
NO:
PRl:
MULL:
:
1PaSSWOFd!
UaFChaI√20)!
NO!
!
MULL!
!
♦H+■!
H÷K
2rowsinSet<0.02sec>
1・StUdentinfO表
StUdentinfO表中主要的存放学员的学籍信息,包括学号//性别/年龄和号等信息•用SnO字段表示学号,因为学号是StUdentinfO表的主建,所以Sno字段是下能为空值的,而且必须是唯一的・identify字段表示学员的,而每个学员的必须是唯一的•因为在些的是以字母X结束的,所以identify字段设计为VARCHAR类型・
SeX字段表示为学员的性别,该字段只有”男”和"女”两种取值•因此SeX字段使用enum类型.SCOnditiOn字段表示学员的学业状态,每个学员只有3种状态,分别为”学习”Γ结业”Γ退学”•因此,Scondition字段也使用enum类型•入学时间和毕业时间都是日期,因此选择date类型.s_text字段用于存储备注信息,所以选择text类型比较合适・StUdentinfo表的每个字段的信息如下表所示:
StUdentinfO表创建在功以后,通过desc语句查看StUdentinfO表的结构,也可以通过ShOWCreatetable语句查看StUdentinfO表的详细信息,查看如图:
ιI.
illrowsinSet mysql>ShOWCreatetableStUdentinfo; ! StUdentinfO;CREArETABLEIStU(Ientinfo,< BSnO%int<8>NOINULL,'snane'UarChar<2U>NOINULL,'sex'enun<,男J女〉NoTNULL,Jge'int<3>DEFAULTNULL,'identify'UaVChal<18>NOTNULLF'tel'UaFChar<15>DEFAULTNULL,'car_type'UarChaι<4>NoTNULL,⅛npoll-time'dateNOTNULL,'leaue.time'dateDFFfiIJLTNULL. textλ 'econdition'entm「学习结业退学〉NOTNULL,'s-,to×t PRIMARyKEY<⅛lw'>,UHlQUEKEY'snu'<'srw'>,UNlQUEKEY'identify'「identify'儿KEYWindex_StU_nane%<'snaπe*>j.KEy'index_car*('caυ-ti∣pe'>j.KE? 'index_COn'('scondition'> >ENGINE=InnODBDEFAlJLTCHARSET=IatinI! ++ Ψ: mysql>descStudentinfo; ⅜∙ +- 4 卜 ++ : FieId II TyPes NUlII « : KeiF II DefaUItI IEXtra: L.-Λ. TBi----———————— ~T- ——————r 卜 T- Br SnO II int<8>: NO : PRI II NULL II II Snane II UarChav<20>! NO ! MUL II NULL II II SeX II enuπ(,男—,女。 ; NO I : 1 II NULL II II age ■I int<3>: VES ! II NiJLL I■ II identify ■I UarChav<18>! NO : UNI II NiJLL I■ II tel ■I UarChav<15>! VES ! II NiJLL I■ II Car_type II UaVCbar<4>! NO 1MUL II NULL II II enroll_time II date! NO ! II NULL II II IeaUe_time II date! YES ! II NULL II II SCOnditiOn II enun<^学习,「结业艮学,〉; NO : MUL II NULL II II s_text II text! VES I II NlJLL II II 11vov/sInSet<0-03sec> 3・healthinfo表因为驾校体检主要体检身高/体重/视力/听力/拜色能力/腿长和血压信息•所以heathinfo表中必须包含这些信息•身高/体重/左眼和石眼视力分别用height字段/weight字段/left_sight字段和rightβsight字段表示•因为这些数值有些小数,所以这些字段都定义成float类型•拜色能力/左耳听力/石耳听力/腿长和血压分别用CHfferentiate字段/IefJear字段∕right-ear字段/legs字段和PreSSUer字段表示.这些字段的取值都是在特定儿个取值中取一个,因此定义成enum类型・创建healthinfo表的SQL代码如下: Createtablehealthinfo( Idint(8)PrimClrykeyUniCIUenotUnlIauto-increment, SnOint(8)UniqUenotnull, SnameVarChar(20)notnull, Heightfloat, Weightfloat, Differentiateenum('正常','色弱','色盲'), Left-Sightfloat, RighteSightfloat, Left_earenum('正常','偏弱'), Right-earenum('正常','偏弱'), LegSenum('正常'J不相等' PreSSUreenum('正常'「偏高'「偏低' HiStOryVarChar(50), H_texttext, COnStrainthealth.fkforeignkey(sno) ReferenCeSStUdentinfO(SnO) ); 创建healthinfo表时将SnO字段设置为外键,而且外键的别名为health_fk.而且,id字段加上了auto-increment属性,这样就可以将id字段设置为自增字段. 表建好了后用desc语句查询,如下: nysql>deschealthinfo; -W + ! FieId I ■ r ! TyPe ■ ! NulI P : Key P ! DefaUIt 丄- ! EXtVa -Λ. 厶 ■ ! id ! int<8> : NO : PRl ! NULL ! auto_incre nent! 'SnO I ! int<8> ! NO ! UNI ! NULL 1I I 'height ■ 'fIOat : VES II : NULL ■I I SWeight I ! F丄Oat : YES BI : NULL aa I ;differentiate I ! enun<*lE常J 色弱色盲TiYES aI : NULL II I ;Ieft_sigbt I ! float ! YES ■I : NULL ■I ■ ;Vlgħt-sight I ;fIOat ! YES ■I 5NULL ■I I iIeft_ear I ;enum「正常J ,偏弱T;YES ■I ! NULL 1I I ;riyht-ear I »eιιuι∣ι<,正常 偏弱T;YES II ! NULL 1I I iIeyS I I匕num—正常,, 不相等,〉IVES I JNULL I I 'PrCSStICr ■ ICnUm<,正常*■ 偏咼偏低,〉IVES I ! NULL I I •bi3t0ry 1 IVarCbαr<50> IVES J INULL I 1 ! b_toxt I 'text ! VES aB ! NULL IS I + 13rowsinSet my (Q.04eec> —■———— 酷狗2012, 4・COUrSeinfO表 COUrSeinfO表用于存储考试科U的信息,每个科U都必须有科U号/科U名称.这个表只需要3个字段就可以了,cn。 字段表示科IJ号,Cname字段表示科口名称,beforeβcour字段表示先行考试的科Ll号•每条记录中,只有before-cour字段中存储的科U考试通过后,学员才可以报考Cno表示的科U.COUrSeinfO表的每个字段的信息如下 名字 段述字描 型类据数 ≡ 空 K TrT 一唯 认 默值 增自 Cno 科目号 ⑷nt 是 否 是 是 无 否 H称科名 否 否 是 是 无 否 C一 lr-≡ ⑷ntI π π π π 口 创建COUrSeinfO表的SqI代码如下: CreatetableCOUrSeinfo( CnOint(4)Prinlarykeynotnullunique, CnameVarChar(20)notnullunique, BefOre_COUrint(4)notnulldefaultO ); COUrSeinfO表创建完成后用desc语句查询,如下图: msjsql>descCoUPSeinfO; FieId -+- II TyPe -+- II + MlIlI! KesF ■ I I Default -÷ ! Eκtι*a ■-T-T-I-T--T CrK) II int<4〉 T- I I Ho P-一 I I PRl Te- I I HULL 丁―—————— I I Cnalne II VarChar<20> II No II UNl II NULL II heforeβcour II int(4) II MO II II 0 II -+- -+- -÷ 3rowsin: SEt(0.05SeC) 5・gradeinfo表 GradeinfO表用于存储学员的成绩信息.这个表必须和StUdent和COUrSe表建立联糸.因此设计Sno字段和Cno字段.SnO字段和CnO字段作为外键.Sno字段依赖于StUdentinfO表的SnO字段,CnO字段依赖于COUrSeinfO表的CnO字段.这里用time字段表示某一个科U的考试次数•默认的情况下是第一次参加考试,因此times字段的默认值为1.分数用grade字段表示,默认分数为O分•它的每 个字段的信息如下图所示: 宇段名 字段描述 数据类型 主键 外键 非空 唯一 默认值 自噌 Id 编号 INT⑻ 是 否 是 是 无 是 SnO 学号 INT(8) 是 是 尢 CnO 科Ht> INT(4) 否 否 无 否 IaStjime 占试时间 DATE 否 否 否 否 无 否 times 考试次数 INT(4) 否 否 1 否 grade FLOAT 否 否 否 否 O 否 创建gradeinfo表的SqI代码如下: Createtablegradeinfo( Idint(8)PrimarykeyUniqUenotnullauto-increment, SnOint(8)notnull, CnOint(4)notnull, Last-timedate, TimeSint(4)default1, GradefloatdefaultO, COnStraintgrade-sno-fkforeignkey(SnO) ReferenCeSStUdentinfO(SnO), COnStraintgrade-cno-fkforeignkey(CnO) ); 代码执行后,在SnO字段被设置成外键,该外键的别名为grade_sno_fk.同时,CnO字段也被设置成外键,改外键的别名为grade_CnO_fk.用desc语句查询gradeinfo表的结构如下图: mysql>descgradeinfo; Field I I _1_ TyPe -+ ! NHll ■-T-I-I-I II ≡≡≡≡≡≡≡∙≡Key → IDefAUIt 」■-I-I-T-T--Γ-IJ -+ ! FXtFa id F— I I int<8> ! NO -F— I I PRI 〒————————— ! NULL ! aiitOeinCrenent SnO II int<8> ! NO II MUL ! NULL II CnQ II int<4> ! NO II MUL ! NULL II IaSt_time II date ∖VES II ! NULL II times II int<4> ;VES II I1 II grade II float ;VES II I0 II — --t- -+ --t- — -+ -+ 6rowsinSet<0.06SeC) 6.IiCenSeinfO表 LiCenSeinfO表用于存储学员领取驾驶证的信息•这个表中需要记录学员的学号//驾驶证/领取的时间/领取人等信息. 驾驶证用Ino字段表示,每个人的驾驶証号都是唯一的.IiCenSeinfO表的每个字段的信息如下图所示: 字段名 字段扌苗述 数据娄型 主键 外键 非空 唯一 默认值 自增 id 编号 ! NT(8) 足 否 足 无 SnO INT(S) 否 是 足 是 无 否 ^name 姓名 VARCHAR(20> 否 否 是 否 无 否 InO 镯缎址兮 VARCHAR(⑻ 是 足 无 receivetime 领证时间 DATE 否 否 否 Al rccciVCnamC 领证人 VARCHAR(20) 杏 否 否 杏 无 否 LteXt 篇注 TEXT 否 否 否 否 无 否 创建IiCenSeinfO表的SqI代码如下: CreatetableIiCenSeinfo( Idint(8)PrimarykeyUniqUenotnullauto_increment, SnOint(8)UniqUenotnull, SnameVarChar(20)notnull, LnOVarChar(18)UniqUenotnull, ReCeiVe_timedate, ReCeiVe_nameVarChar(20)J L_texttext, COnStraintIiCenSe_fkforeignkey(SnO) ReferenCeSStUdentinfO(SnO) ); SnO'F段设置成外键,该外键的别名为IiCenSe_fk・Iiceseinfo表创建完成后,使用desc语句查询IiCenSeinfO表的如构如下图: mysql>descIiCenSeinFO; A亠亠▲<Λ.-Λ. T T -Γ- T T T— T ! FieId I I TyPe II ■ NUlI I I Ke5F II DefaUIt I I ∙_ E×tι*a I I •T- fl T- 一 T Iid I I int(8> II NO aI PRI II NULL II autoβin∣crement II ! Sno I I int<8) II NO I I UNI II NULL II I■ ! SnafTIe II uaι*chav<20> II NO II II NULL II II Iino II Uar-Chare18> II NO II UNI II NULL II II ! rece: ive_time II date I I VES I I I I NULL II I I ! receive_name II uaι*char<20> II VES II II NULL II II Ii_text I I text II YES aI II NULL II II 7rowsinSet<0.02SeC> 1.在StUdentinfO表上建立索引 下面使用Createindex语句在Sname初段上创建名为index-stUename的索引.sql代码如下: Createindexindex_stu_nameOnStUdentinfO(Sname); Createindexindex-carOnStUdentinfO(Car-type
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 设计 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)