数据库设计说明书-_第1页
数据库设计说明书-_第2页
数据库设计说明书-_第3页
数据库设计说明书-_第4页
数据库设计说明书-_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

知识创造未来知识创造未来/知识创造未来数据库设计说明书引言本文档为该项目数据库的设计说明书。该项目主要是为了管理学生,包括学生信息、成绩、课程等。因此,数据库的设计是本项目的核心。本文档将介绍数据库的构成、设计思路、关系图以及主要表的结构和字段。数据库架构本项目的数据库采用的是关系型数据库,使用MySQL作为数据库管理系统(DBMS)。数据库中的主要对象包括表、字段、索引和触发器。数据库表数据库中主要的表包括下面这些:学生(student)成绩(score)课程(course)教师(teacher)其中,学生、成绩、课程之间的关系可以用下列语句表示:CREATETABLEscore(

idINT(10)NOTNULLAUTO_INCREMENT,

student_idINT(10)NOTNULL,

course_idINT(10)NOTNULL,

scoreINT(3),

PRIMARYKEY(id),

FOREIGNKEY(student_id)REFERENCESstudent(id),

FOREIGNKEY(course_id)REFERENCEScourse(id)

);

CREATETABLEstudent(

idINT(10)NOTNULLAUTO_INCREMENT,

nameVARCHAR(20),

sexCHAR(2),

ageINT(3),

PRIMARYKEY(id)

);

CREATETABLEcourse(

idINT(10)NOTNULLAUTO_INCREMENT,

nameVARCHAR(20),

PRIMARYKEY(id)

);以上三个表之间存在着以下的关系:学生和成绩之间是一对多的关系,一个学生可以拥有多条成绩记录。学生和课程之间是多对多的关系,一个学生可以选择多门课程,而一门课程也可以由多个学生选择。教师表与上述三个表之间并没有太大的关系,因此在此不再给出其结构。数据库字段下面是数据库的字段说明:student表:字段名类型长度是否为空备注idint10否主键namechar20否sexchar2否ageint3是course表:字段名类型长度是否为空备注idint10否主键namechar20否score表:字段名类型长度是否为空备注idint10否主键student_idint10否外键(student的主键)course_idint10否外键(course的主键)scoreint3是以上字段是我们在设计时需要考虑的基本字段,后续可以根据实际情况进行添加或修改。触发器以下是本数据库中的触发器:在student表中删除数据时,同时删除关联的成绩表中的数据:CREATETRIGGERstudent_score_delete

AFTERDELETEONstudent

FOREACHROW

BEGIN

DELETEFROMscoreWHEREstudent_id=old.id;

END;在course表中删除数据时,同时删除关联的成绩表中的数据:CREATETRIGGERcourse_score_delete

AFTERDELETEONcourse

FOREACHROW

BEGIN

DELETEFROMscoreWHEREcourse_id=old.id;

END;索引以下是本数据库中的索引:student表:主键索引:由于该表的主键是id字段,因此创建id字段的主键索引。ALTERTABLEstudentADDPRIMARYKEY(id);全文索引:对name字段进行全文索引,加快查询速度。ALTERTABLEstudentADDFULLTEXT(name);course表:主键索引:与student表类似,添加id主键索引。ALTERTABLEcourseADDPRIMARYKEY(id);数据库设计思路设计环节在设计数据库的时候我们需要考虑的因素有很多,比如:数据库中需要存储哪些数据数据库在未来的扩展和维护方便程度数据库的性能等等在这一项目中,我们需要存储的主要是学生信息、成绩信息和课程信息。因此,我的数据库设计思路如下:首先根据需求确定表的数目和相关信息。在本项目中,我考虑到学生和课程之间的多对多关系,因此使用了中间表score来存储学生和课程之间的关系。同时,学生表和成绩表之间是一对多关系,一个学生可以有多个成绩记录,因此在成绩表中添加了一个student_id字段作为外键,在查询时可以根据该字段来获得相应的学生。其次,考虑表中的字段。在设计时我们应该遵从以下原则:尽量减少字段冗余,例如学生表中就不需要多次存储一个学生的年龄,因为年龄可以通过查询学生的出生日期来计算出来。应该对某些字段添加约束,例如可以为成绩添加一个CHECK约束,以确保分数不超过100分。最后,我们需要考虑索引、触发器等数据库基本要素,以确保查询速度尽可能的快并且保证数据的完整性。以上所述的索引、触发器等已在前面做了详细的讲解,这里就不再赘述。数据库性能在设计数据库的时候,我们也需要考虑数据库的性能问题,例如:在应该尽量减少表连接的次数,增加冗余字段等等。在本项目中,我们对student表添加了全文索引,并且还采用了一张中间表来存储学生和课程之间的关系,这样在查询某一个学生的成绩时就不需要进行多次的表连接。数据库关系图下图是我们项目中所有表之间的关系图:db_design主要表结构和字段输出主要表的结构和字段如下:student表字段名类型长度是否为空备注idint10否主键namechar20否sexchar2否ageint3是course表字段名类型长度是否为空备注idint10否主键namechar20否score表字段名类型长度是否为空备注idint10否主键student_idint10否外键(student的主键)course_idint10否外键(course的主键)scoreint3是总结本文档主要介绍了本项目的数据库设计说明书,包括数据库架构、设计思路、关系图和主要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论