数据库设计示例文档(完整)物理数据库设计
数据库设计文档模板

数据库设计文档模板一、引言。
数据库设计是软件开发过程中非常重要的一环,它直接影响着系统的性能、稳定性和扩展性。
本文档旨在为数据库设计人员提供一个规范的模板,以便他们能够按照统一的标准进行数据库设计工作,确保设计的合理性和可维护性。
二、数据库设计概述。
1. 数据库设计目标,明确数据库设计的目标和范围,例如解决哪些业务问题,满足哪些需求。
2. 数据库设计原则,介绍数据库设计时需要遵循的原则,例如数据一致性、完整性、可靠性等。
3. 数据库设计约束条件,列举数据库设计时需要考虑的约束条件,例如数据安全性、性能要求、成本限制等。
三、数据库逻辑设计。
1. 数据库实体关系模型,根据需求分析,设计数据库的实体及其之间的关系模型,包括实体-关系图、实体属性及其约束。
2. 数据库范式分解,对设计的数据库进行范式分解,确保数据存储的规范性和一致性。
3. 数据库索引设计,设计数据库的索引结构,提高数据库的检索性能。
四、数据库物理设计。
1. 数据库表结构设计,设计数据库的表结构,包括表的字段、数据类型、约束条件等。
2. 存储过程和触发器设计,设计数据库的存储过程和触发器,实现数据库的业务逻辑。
3. 数据库性能优化,对数据库进行性能优化,包括索引优化、查询优化等。
五、数据库安全设计。
1. 数据库权限管理,设计数据库的权限管理策略,保护数据库的安全性。
2. 数据备份和恢复策略,设计数据库的备份和恢复策略,确保数据的可靠性和完整性。
3. 数据库审计策略,设计数据库的审计策略,监控数据库的使用情况,保障数据的安全。
六、数据库设计实施。
1. 数据库设计实施计划,制定数据库设计的实施计划,安排设计人员进行数据库设计工作。
2. 数据库设计实施过程,介绍数据库设计的实施过程,包括需求分析、设计、开发、测试等阶段。
3. 数据库设计实施验收,对数据库设计进行验收,确保设计的合理性和可行性。
七、数据库设计维护。
1. 数据库变更管理,管理数据库的变更,确保数据库的稳定性和一致性。
(完整版)数据库设计的典型案例920

一个简化的选课系统业务流程如图8.2所示:
8.2
本阶段的成果的内容形式主要包括数据流图(Data Flow Diagram)和数据字典(Data Dictionary)。数据流图和数据字典是描述用户需求的重要工具以及阶段成果表达形式。它作为需求分析的成果和用户交流的主要手段和依据,是后续数据库设计的前提。设计人员从数据流图中可以比较充分地了解软件的结构,所以也是软件设计的重要依据。
8.1
8.1.1总体需求简单介绍
需求分析阶段是数据库应用系统开发的最重要阶段。需求分析要求应用系统的开发人员按照系统的思想,根据收集的资料,对系统目标进行分析,对业务的信息需求、功能需求以及管理中存在的问题等进行分析,抽取本质的、整体的需求,为设计一个结构良好的数据库应用系统的逻辑模型奠定坚实的基础。
选课管理中,学生根据学校对其专业制定的教学计划,录入本学期所选课程,教务员对学生选课记录进行审核,经审核得到的选课就为本学期的选课。其处理过程如图8.7所示。
0层P4的1层数据流图请读者自行描述。
我们可以使用许多的设计工具完成数据流图的创建,这些工具不但可以实现常用的数据流图的绘制,而且可以对多层的数据流图中的元素及其关系的正确性实现有效的检验,能帮助我们学习和理解数据流图的实现技术。本章有关的数据流图均使用Microsoft Visio工具进行绘制,相关的工具还有Sybase公司的Power Designer以及Oracle的Designer等,有兴趣的可以参考相关的资料或者下载试用版。
P3.4
选课审核+没经确认的选课
经确认的选课信息
选择选课清单进行确认
4。数据项
表8.4P3中数据项的说明
序号
数据项
数据库物理设计实例

通过逻辑设计,进行物理结构的设计分析后达到三范式后建立以下五个表:TICKET_INFO 表存储火车车票各种信息PASSENGER_INFO 表存储火车乘客信息BOOK_INFO 表存储乘客订票退票信息TR_CONVERT 表存储火车票的折算信息TRAIN_INFO 表存储火车信息一.车票信息(TICKET_INFO表):该表主键:车票号(TICKET_NO)二:乘客信息(PASSENGER_INFO 表)三:火车票折算信息(TR_CONVERT 表)四.火车信息(TRAIN_INFO 表)五.订票退票信息(BOOK_INFO表)2.在sqlserver2005 中建立数据库Train_Ticket_System ,建立以上各表Sql语句为:列车信息:CREATE TABLE TRAIN_INFO(TRAIN_NAME CHAR(8)PRIMARY KEY,SOFT_COUNT INT,SOFT_NO INT,SLEEP_COUNT INT,SLEEP_NO INT,CARRI_COUNT INTSEAT_COUNT INT);CREATE TABLE TICKET_INFO(TICKET_NO CHAR(12)PRIMARY KEY,START_STA V ARCHAR(15)NOT NULL,MID_STA V ARCHAR(15) ,END_STA V ARCHAR(15)NOT NULL,START_TIME SMALLDATETIME NOT NULL,SPEND_TIME FLOAT NOT NULL,SORT V ARCHAR(4)CHECK(SORT IN('软卧','卧铺','硬座'))NOT NULL,TRAIN_NAME CHAR(8)NOT NULL,PRICE FLOAT NOT NULL,AMOUNT INT,CHECK_NO INTLEAVE_COUNT INT,CONSTRAINT TRNAME_FK FOREIGN KEY(TRAIN_NAME) REFERENCES TRAIN_INFO(TRAIN_NAME););折算信息:CREATE TABLE TR_CONVERT(PASS_SORT V ARCHAR(4)CHECK(PASS_SORT IN('学生','幼儿','残疾','军人','一般')) PRIMARY KEY,TRANS FLOAT CHECK(TRANS>=0.0 AND TRANS<=1.0));乘客信息:CREATE TABLE PASSENGER_INFO(ID CHAR(20),PASS_SORT V ARCHAR(4)CHECK(PASS_SORT IN('学生','幼儿','残疾','军人','一般')), CONSTRAINT PINFO_PK PRIMARY KEY(ID),CONSTRAINT PINFO_FK FOREIGN KEY(PASS_SORT)REFERENCES TR_CONVERT(PASS_SORT));CREATE TABLE BOOK_INFO(TICKET_NO CHAR(12),ID CHAR(20),COACH_NO INT NOT NULL,SEAT_NO INT NOT NULL,DEAL FLOA T,PAID FLOAT,IN_OUT_TIME DATETIME,STATE V ARCHAR(5)CHECK(STA TE IN('已订','退票')),CONSTRAINT BINFO_PK PRIMARY KEY(TRAIN_NO,ID),CONSTRAINT TR_BINFO_FK FOREIGN KEY(TRAIN_NO)REFERENCES TICKET_INFO(TRAIN_NO),CONSTRAINT ID_BINFO_FK FOREIGN KEY(ID)REFERENCES PASSENGER_INFO(ID));触发器:(如果一个车票订票,会自动更新剩余车票数属性组(数据值减一),如果更新的车票是之前退票的车票,则自动删除那个退票信息)CREATE TRIGGER BOOK_COUNT ON BOOK_INFO AFTER INSERTASBEGINDECLARE @TR_NO CHAR(12);DECLARE @ID_NO CHAR(20);SELECT @TR_NO=TICKET_NO FROM INSERTED;UPDATE TICKET_INFO SET LEA VE_COUNT =LEAVE_COUNT-1 WHERE TRAIN_NO=@TR_NO;SELECT @ID_NO=ID FROM DELETED WHERE TICKET_NO=@TR_NO AND STATE='退票';IF(@ID_NO IS NOT NULL)BEGINDELETE FROM BOOK_INFO WHERE ID=@ID_NO AND TICKET_NO=@TR_NO;ENDEND查询顾客需要付的车费:(更新语句)UPDATE BOOK_INFO SET DEAL=(SELECT TRANS*PRICEFROM TICKET_INFO TI,PASSENGER_INFO P,TR_CONVERT TR,BOOK_INFO B WHERE TI.TICKET_NO=B.TICKET_NO AND P.PASS_SORT=TR.PASS_SORT AND P.ID=B.IDAND B.ID='340111003'AND B.TICKET_NO='11108120002 ')WHERE ID='340111003'AND TICKET_NO='11108120002 '说明:在对订票信息更新操作时如果是对状态更新,那么需要对车票的信息也进行相应的操作,更新剩余票数。
数据库设计文档实例

第1章 数据库设计系统按照XXX 企业协同办公系统的统一规划,运行在XXX 企业协同办公网站的统一数据库中,采用了数据库的热备份技术,实现数据的有效和安全.1.1 概念结构设计1.1.1 实体和属性的定义(1)公共模块员工信息(用户登录名、真实姓名、密码、公司邮箱、其他邮箱、MSN 、QQ 、手机、固定电话、所属部门、职位、角色),如图1.1所示.职位(职位标识、职位名称),如图1.2所示。
员工信息登录名真实姓名固定电话密码公司邮箱其他邮箱MSN学位手机职位所属部门QQ角色职位职位标识 职位名称图1.1 员工信息实体图1.2 员工信息实体(以下实体没加图题,实际文档必须要有图题)部门(部门标识、部门名称)学历(学历标识、学历名称)意见与建议(提出人、提出时间、意见与建议主题、内容、附件)网站更新新闻(添加人、添加时间、新闻标题、更新时间)附件(所属位置、文件名、文件路径、上传时间)网站更新新闻 添加时间新闻标题添加人更新时间意见与建议 提出时间内容提出人附件主题学历学历标识 学历名称部门部门标识 部门名称(2)消息面板模块公告栏信息(公告标题、公告内容、公告发表人、发表时间、紧急状态)公告状态(状态标识、状态名称) 其中属性约束如下: 状态名称:普通,重要,紧急站内短信(发送人、接收人、留言标题、内容、发送时间、是否回复、是否读取、是否公开、消息状态、是否被发送者删除、是否被接收者删除)其中属性约束如下:是否回复:0=未回复,1=已回复;是否读取:0=未读,1=已读;是否公开:0=不公开,1=公开; 消息状态:普通,重要,紧急,重要紧急;是否被发送者(接收者)删除:0=否,1=是附件文件名称文件路径所属位置上传时间公告状态状态名称 状态标识公告信息 公告内容发表时间公告标题紧急状态发表人(3)事务管理模块事务(事务具体信息、事务提交人、事务处理人、事务计划开始时间、事务计划结束时间、事务添加时间、事务类型、事务原由、备注)事务信息(事务名、事务内容、添加时间、事务状态、重要性)站内短信发送人接收人留言内容消息状态发送时间是否回复是否公开留言标题是否读取是否被发送者删除是否被接收者删除事务事务类型事务信息事务处理事务原由计划开始时间计划结束时间备注信息事务提交人添加时间事务状态(事务名称、事务状态标志位)跟踪信息(对应事务、跟踪内容、跟踪时间、跟踪人、实际开始时间、实际结束时间、状态、结果描述、事务详细信息、备注)(4)计划管理模块目标(目标标题、目标制定人、接收人、要求结束时间、具体内容、附件、发起时间)计划(计划标题、目标标题、计划人、上级接收人、计划安排详细内容、计划开始时间、计划结跟踪信息对应事务跟踪内容跟踪人事务详细信息实际开始时间实际结束时间跟踪时间备注结果描述 目标具体内容目标标题目标接收人发起时间要求结束时间附件目标制定人事务状态状态名称 状态标志位事务信息 事务状态 事务名添加时间事务重要事务内容束时间、附件、计划状态、计划制定时间)计划状态(状态标识、状态名称) 其中属性约束如下:状态名称:初稿、审批中、批准、分配中、执行中周报(计划标题、报告人、接收人、针对计划的完成百分比、针对目标的累计完成百分比、报告内容、额外性工作、需要支持、风险和问题、下一个计划期、周报发送时间)(5)客户跟踪模块客户信息(客户名称、客户地址、客户电话、客户传真、客户邮箱、客户法定代表、客户被添加时间、客户被添加的用户、联系人、联系人职务、联系方式、公司地区、最后修改人、最后修改时间、经营范围、备注、客户性质)其中属性约束如下:客户性质:1=客户,2=渠道,3=客户和渠道周报报告内容计划标题接收人额外性工作针对计划的完成百分比针对目标的累计完成百分比报告人风险问题需要支持下个计划期发送时间计划状态状态标识 状态名称计划详细内容计划标题计划人计划开始时间上级接收人计划结束时间目标标题附件计划状态制定时间沟通信息(沟通名、沟通内容、时间、方式、沟通用户、沟通客户、客户方沟通人、备注)沟通方式(沟通方式名称、沟通方式标志位)项目状态(状态标识、状态名称)沟通方式标志位 方式名称沟通信息沟通名沟通内容沟通方式客户方沟通人沟通用户沟通客户沟通时间备注客户信息客户地址客户电话客户邮箱客户名称客户法定代表被添加时间客户传真被用户添加联系人联系人职务公司地区联系方式最后修改人客户性质 经营范围备注文件信息(文件所属、文件对应模块、文件原名、文件服务器名、上传时间、文件上传人、文件地址、备注)其中属性约束如下:文件所属于:1=沟通2=事务 3=跟踪客户跟踪权限(用户、是否管理员、是否高层领导) 其中属性约束如下:是否管理员:0=否,1=是; 是否高层:0=否,1=是(6)会议管理会议信息(会议时间、会议地点、会议标题、会议回复状态、会议参加人员、不参加理由、回复时间、回复状态的修改人、会议议程、会议时长)其中属性约束如下:会议回复状态:0=未回复,1=参加,2=不参加,3=不确定权限 是否管理员 是否高层对应用户文件信息文件所属文件原名上传时间文件对应模块文件上传人文件地址文件服务器名备注项目状态状态标识 状态名称会议记录(对应会议、主持人、发布时间、参加人员、会议小结、会议小结状态) 其中属性约束如下: 会议小结状态:0=无,1=有(7)人力资源模块请假申请(请假申请人、请假审批人、请假主题、请假形式、请假类型、请假开始时间、请假结束时间、请假总共时间、请假内容、请假申请时间、审批状态)其中属性约束如下:请假形式:0=事前请假,1=事后请假; 审批状态:0=未回复,1=不通过,2=通过会议记录 参加人员会议小结发布时间会议小结状态主持人对应会议会议信息会议地点会议标题参加人员会议时间不参加理由回复时间会议回复状态状态修改人会议议程 会议时长请假类型(类型标识符、类型名称)请假审批(对应请假申请、是否查阅、审批时间、审批意见、审批结果) 其中属性约束如下:是否查阅:0=未读,1=已读; 审批结果:0=未审批,1=未通过,2=已通过(8)权限模块角色(角色标识符、角色名称)操作(操作标识符、操作名称、备注)角色角色标识 角色名称请假审批 是否查阅审批意见对应申请审批结果审批时间请假类型类型标识 类型名称请假申请审批人请假主题开始时间申请人结束时间总共时间请假类型审批状态申请时间 请假内容(9)网站统计访客记录(访客对应用户、访客IP 地址、访客登录时间、离开时间、IP 对应物理地址)访客足迹(访客对应用户、之前页面UI 、当前页面UI 、本页面进入时间、本页面退出时间)访客足迹 前页面UI进入时间对应用户离开时间当前UI访客记录 IP 地址离开时间对应用户对于物理地址登录时间操作操作标识操作名称备注1.1.2 局部ER 模式设计员工局部E —R 图:意见与建议局部E —R 图:意见与建议 提出时间内容附件主题提出人员工信息1N员工信息登录名真实姓名固定电话密码公司邮箱其他邮箱MSN手机QQ职位职位标识职位名称职位 部门部门标识部门名称学历 学历学历标识 学历名称职位111111站内短信局部E-R 图:站内短信留言内容消息状态发送时间是否回复是否公开留言标题是否读取是否被发送者删除是否被接收者删除接收人员工信息发送人1n11公告信息公告内容发表时间公告标题紧急状态发表人员工信息 1 n目标局部E-R 图:目标具体内容目标标题发起时间要求结束时间附件制定人员工信息 接收人1 11N事务事务类型事务原由计划开始时间计划结束时间备注信息添加时间提出人员工信息处理人事务信息事务名添加时间 事务重要事务内容事务信息事务状态状态名称状态标志位事务状态11n 111 11计划局部E-R 图:计划详细内容计划标题计划开始时间计划结束时间目标标题附件制定时间计划人 员工信息 接收人计划状态 状态标识状态名称计划状态11n 111跟踪信息局部E-R 图:跟踪信息跟踪内容事务详细信息实际开始时间实际结束时间跟踪时间备注结果描述跟踪客户客户信息跟踪人员工信息1111客户信息客户地址客户电话客户邮箱客户名称客户法定代表被添加时间客户传真联系人联系人职务公司地区联系方式最后修改人客户性质 经营范围备注添加客户员工信息 11会议信息局部E-R 图:会议信息 会议地点会议标题会议时间不参加理由回复时间会议回复状态会议议程会议时长参加会议员工信息1N状态修改员工信息11沟通信息沟通名沟通内容沟通方式客户方沟通人沟通时间备注跟踪客户客户信息 N1 沟通人员工信息 11沟通方式标志位方式名称沟通方式11请假申请请假主题开始时间结束时间 总共时间审批状态 申请时间请假内容审批人员工信息11请假人11请假类型类型标识类型名称请假人1 1请假审批是否查阅审批意见对应申请审批结果 审批时间审批11访客足迹前页面UI进入时间离开时间当前UI员工信息 1访客信息 1 访客记录 IP 地址离开时间对于物理地址登录时间访客信息111.1.3全局ER模式设计1.2逻辑结构设计1.2.1模式员工信息表记录员工登陆账号和联系方式等基本信息,如表1.1所示。
7 物理数据库设计-5 6

3
步骤 6 设计安全性机制 - SQL
每个数据库用户都由DBA分配一个认证标识 分配一个认证标识 每个数据库用户都由 (此标识都有一个相关的口令 此标识都有一个相关的口令). 此标识都有一个相关的口令 创建的每个对象都有一个拥有者. 默认情况下, 创建的每个对象都有一个拥有者 默认情况下, 对象拥有者是唯一知道该对象的存在并且可以 对该对象执行全部操作的用户 权限是允许用户对一给定的基本表或视图可执 行的操作 (例如 SELECT, UPDATE). 例如 GRANT语句允许拥有者把权限授予其他用户 语句允许拥有者把权限授予其他用户. 语句允许拥有者把权限授予其他用户 REVOKE语句收回权限 语句收回权限. 语句收回权限
Chapter 7
物理数据库设计 – Steps 5 & 6 (设计用户视图 设计安全机制 设计用户视图; 设计用户视图 设计安全机制)
1
步骤 5 设计用户视图
设计在数据库应用生命周期的需求分析 和收集阶段标识的用户视图. 和收集阶段标识的用户视图 通常,视图使用SQL或类似 或类似QBE的工具创 通常,视图使用 或类似 的工具创 例如,对分公司B001的监理和助理 的监理和助理: 建. 例如,对分公司 的监理和助理
4
CREATE VIEW Staff1_View AS SELECT staffNo, name, position FROM Staff WHERE branchNo = ‘B001’;
2
步骤 6 设计安全性机制
数据库物理结构设计实例

数据库物理结构设计实例物理数据库设计是指数据库在硬件层面上的组织架构设计,包括数据库文件的存放位置、文件组织形式、索引方式等。
下面是一个数据库物理结构设计实例,主要包括以下几个方面:1.存储设备选择数据存储设备主要包括硬盘、固态硬盘(SSD)和磁带等。
在进行数据库物理结构设计时,需要根据数据库的容量和性能需求选择合适的存储设备。
例如,对于容量大、读写频繁的数据库来说,可以选择使用SSD来提高读写性能。
2.数据库文件组织方式数据库文件的组织方式一般包括平坦文件组织和分层文件组织。
平坦文件组织是指将所有的数据文件保存在一个文件中,适用于小型数据库;而分层文件组织则将数据文件划分为多个层次,便于管理和维护。
在进行物理结构设计时,需要根据数据库的规模和性能需求选择合适的文件组织方式。
3.数据库文件的存放位置数据库文件的存放位置对于数据库的读写性能有很大的影响。
一般来说,可以将数据文件和日志文件存放在不同的物理硬盘上,以提高读写效率。
同时,还可以将频繁访问的数据文件存放在更快的存储设备上,以提高查询性能。
4.数据库索引的选择和优化索引是提高数据库查询性能的重要手段。
在进行物理结构设计时,需要选择适当的索引方式,并对索引进行适当地优化。
例如,可以选择使用B树索引或哈希索引来提高查询性能,同时还可以通过分区索引等技术来提高查询效率。
5.数据库的备份和恢复策略数据库的备份和恢复是保障数据安全的重要手段。
在进行物理结构设计时,需要考虑数据库备份和恢复的策略,包括全量备份、增量备份、日志备份等。
同时,还需要定期测试并验证备份和恢复策略的可行性,以确保数据能够在灾难情况下得到及时恢复。
综上所述,数据库物理结构设计是非常重要的一项工作,它可以直接影响数据库的性能和稳定性。
在进行物理结构设计时,需要综合考虑数据库的容量、性能需求、存储设备选择、文件组织方式、索引优化、备份恢复策略等因素,以实现最佳的数据库物理结构设计方案。
数据库设计物理设计

数据库设计物理设计(原创实用版)目录1.物理设计的概念和目的2.物理设计的主要步骤3.物理设计的关键技术4.物理设计的实际应用案例5.物理设计的发展趋势和未来展望正文数据库设计物理设计是指在逻辑设计的基础上,通过对数据存储结构、存储方式、存取路径、存储空间分配等方面的具体设计,使数据库能够在物理设备上实现高效、安全、可靠的存储和访问。
物理设计的目的是为了提高数据库的性能,包括查询速度、数据存储效率和系统可扩展性。
物理设计的主要步骤包括:数据存储选择、存储结构设计、存取路径设计、存储空间分配和物理优化。
数据存储选择需要根据数据的性质和访问模式,选择合适的存储设备和介质。
存储结构设计则是根据数据的存储需求和访问模式,设计合适的存储结构,如顺序存储、链式存储、索引存储等。
存取路径设计是为了优化数据的存取路径,提高数据的访问速度,通常采用 B 树、索引等技术。
存储空间分配需要合理分配数据存储空间,以提高存储效率和系统性能。
物理优化则是在物理设计的基础上,通过调整存储结构、存取路径等,进一步提高数据库的性能。
物理设计的关键技术包括:存储管理技术、索引技术、缓存技术、数据压缩技术等。
存储管理技术用于管理数据库的存储空间,包括存储分配、存储回收和存储优化等。
索引技术用于提高数据库的查询速度,包括 B 树、哈希索引、全文索引等。
缓存技术用于提高数据库的访问速度,包括页缓存、行缓存、列缓存等。
数据压缩技术用于减小数据库的存储空间,提高存储效率,包括数据压缩、编码技术等。
物理设计的实际应用案例包括:金融行业的客户数据存储、电商行业的订单数据存储、医疗行业的病历数据存储等。
以金融行业的客户数据存储为例,需要设计合适的存储结构和存取路径,以满足频繁的客户信息查询和修改需求。
同时,还需要采用数据压缩和加密技术,保证数据的安全性和隐私性。
物理设计的发展趋势和未来展望包括:大数据时代的存储挑战、云计算环境下的数据存储需求、人工智能和机器学习对数据库物理设计的影响等。
数据库设计示例文档(完整)物理数据库设计

数据库设计示例文档(完整)物理数据库设计数据库设计示例文档(完整)物理数据库设计D2小组网上培训系统物理数据库设计陈俊华、董磊、陈俊娜、董昊、海霞、郭云龙1(针对选定的DBMS,生成基表由于本系统主要架构在windows操作系统之上,加之本小组成员对SQLServer 比较熟悉,且系统有并发操作的要求,因此决定采用SQLServer2000 DBMS系统。
2(选择合适的文件组织(Heap, Hash, ISAM, B+ Tree, Clustered) 基于在System’s Specification中对系统性能的要求:1)非峰值时,数据查找、更新、存储的平均时间低于1秒2)在峰值时,数据查找、更新、存储的平均时间低于5秒采用SQL Server 2000默认的文件组织结构3(选择建立适当的索引基于在System’s Specification中对事务处理的分析:1)学生情况检索每天50次2)教师情况检索每天10次3)课程检索每天100次4)常见问题检索每天200次5)资料查询每天200次6)试题检索每天50次7)成绩查询每天50次在SQL Server 2000里,在数据库关系图中为表定义一个主键将自动创建主键索引;由于要频繁查询学生姓名、教师姓名、课程名称、题目、成绩,因此在各表的对应列上创建第二索引。
4(定义全局约束根据需求分析,本网上培训系统不允许同一名学生在一个学期中选课超过6 门以上。
5(定义视图用户视图主要是学生视图和教师视图。
6(定义用户访问控制规则用户在进入系统之前必须提交相应的用户名和口令,系统将根据不同的用户而授予不同的权限。
以下是建表语句:1)学生表create table student(StudentID Int(15) not null identity(1,1), StudentName Varchar(20) not null,StudentPassword Varchar(10) not null,StudentStatus Char(1) not null,StudentSex Char(1) not null,EnrollingDate Datetime not null,E-mail Varchar(30),Constraint pk_student primary key clustered(StudentID) )索引:create index student_StudentName on student(StudentName)2)教师表create table teacher (TeacherID Int(15) not null identity(1,1), TeacherName Varchar(20) not null,TeacherPassword Varchar(10) not null,TeacherState Char(1) not null,TeacherSex Char(1) not null,TelNO Int(12),E-mail Varchar(30),Constraint pk_teacher primary key clustered(TeacherID) )索引:create index teacher_TeacherName on teacher(T eacherName)3)课程表create table course (CourseID Int not null identidy(1,1), CourseName Varchar(100) not null,MajorID Int,CourseType Int,CourseCreated Datetime not null,CourseStart Datetime not null,CourseEnd Datetime not null,CourseTime Int not null,CourseScore Int not null,CourseState Char(1) not null,CourseIntro Text,Constraint pk_course primary key clustered(Course_ID) )索引:create index course_CourseName on course(CourseName)4)课堂表create table Classroom (SerialNo Int not null identity(1,1), ClassBegin Datetime,ClassEnd Datetime,onlineBegin Datetime not null, onlineEnd Datetime,Constraint pk_course primary key clustered(SerialNo) )5)申请课程表create table application (ApplyID Int not null identity(1,1), StudentID Int not null, ApplyDate Int not null, CourseID Datetime not null, ApplyType Char(1) not null, ApplyState Char(1) not null, ApplyContent Varchar(200), Constraint pk_course primary key clustered(ApplyID), Constraint ApplicationCourseT ooMuch CHECK(NOT EXISTS(SELECT StudentIDFROM applicationGROUP BY StudentIDHAVING COUNT(*)>6))FOREIGN KEY (StudentID) REFERENCES Student (StudentID) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION )6)课程学生表create table courseStudent (CourseID Int not null, StudentID Int not null, SerialNo Int not null, StudentType Char(1) not null, StudentScore Number(3), StudentGrade Number(3),StudentResult Number(3)Constraint pk_courseStudent primary key clustered(CourseID, StudentID,SerialNo),FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION,FOREIGN KEY (StudentID) REFERENCES Student (StudentID) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SerialNo) REFERENCES Classroom (SerialNo)ON UPDATE CASCADE ON DELETE NO ACTION )7)课程教师表create table courseTeacher (CourseID Int not null,TeacherID Int not null,SerialNo Int not null,StartDate Datetime,EndDate Datetime,TeacherState Datetime not null,Constraint pk_courseT eacher primary key clustered(CourseID, TeacherID,SerialNo),FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (TeacherID) REFERENCES Teacher (TeacherID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SerialNo) REFERENCES Classroom(SerialNo)ON UPDATE CASCADE ON DELETE NO ACTION )8)测试表create table test (TestID Int not null,TestName Varchar(100) not null,CourseID Int not null,TestDate Datetime not null,TestTime Int not null default 0, TestType Int not null,TeacherID Int,TestState Char(1) not null,PaperID Int not null,Constraint pk_test primary key clustered(TestID), FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE SET NULL )9)试卷表create table testPaper (PaperID Int not null default0 identity(1,1),TestID Int not null,SubjectID Int not null,ObjectAnwser Varchar(255) not null,SubjectAnswer Text,SubjectScore number(3) not null default 0 Constraint pk_testPaper primary key clustered (PaperID), FOREIGN KEY (TestID) REFERENCES Test (TestID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SubjectID) REFERENCES Subject (SubjectID)ON UPDATE CASCADE ON DELETE NO ACTION )索引:create index testPaper_SubjectID on testPaper (SubjectID)10)测试学生表create table testStudent (Student_ID Int not null,Paper_ID Int not null,Constraint pk_testStudent primary key clustered (StudentID, PaperID) FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (PaperID) REFERENCES TestPaper (PaperID)ON UPDATE CASCADE ON DELETE NO ACTION, )11)测试结果表create table testResult (TestID Int not null,StudentID Int not null,CourseID Int not null,TestDone Char(1) not null,ObjectScore Number(4) not null,SubjectScore Number(4) not null default 0, TestScore Number(4) not null default 0, TestMemo Char(1) not null, Constraint pk_testResult primary key clustered (TestID, StudentID, CourseID),FOREIGN KEY (TestID) REFERENCES Test (TestID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGNKEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION, )索引:create index testResult_TestScore on testResult(T estScore)12)题库表create table subject (SubjectID Int not null identity(1,1), SubjectType Char(1) not null, SubjectLever Int not null,SubjectContents Varchar(255) not null,SubjectAnswer Text,ObjectAnwser Varchar(255) not null,Constraint pk_subject primary key clustered (SubjectID) )13)练习表create table exercise (ExerciseID Int not null identity(1,1), StudentID Int not null,SubjectID Int not null,TeacherID Int,HandinTime Datetime not null,JudgeState Char(1) not null,JudgeTime Datetime,Grade Int,StudentAnswer Text not null,Constraint pk_exercise primary key clustered (ExerciseID), FOREIGN KEY (StudentID) REFERENCES Student (StudentID) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SubjectID) REFERENCES Subject (SubjectID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (TeacherID) REFERENCES Teacher (TeacherID)ON UPDATE CASCADE ON DELETE NO ACTION, )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库设计示例文档(完整)物理数据库设计D2小组网上培训系统物理数据库设计陈俊华、董磊、陈俊娜、董昊、海霞、郭云龙1(针对选定的DBMS,生成基表由于本系统主要架构在windows操作系统之上,加之本小组成员对SQLServer 比较熟悉,且系统有并发操作的要求,因此决定采用SQLServer2000 DBMS系统。
2(选择合适的文件组织(Heap, Hash, ISAM, B+ Tree, Clustered)基于在System’s Specification中对系统性能的要求:1)非峰值时,数据查找、更新、存储的平均时间低于1秒2)在峰值时,数据查找、更新、存储的平均时间低于5秒采用SQL Server 2000默认的文件组织结构3(选择建立适当的索引基于在System’s Specification中对事务处理的分析:1)学生情况检索每天50次2)教师情况检索每天10次3)课程检索每天100次4)常见问题检索每天200次5)资料查询每天200次6)试题检索每天50次7)成绩查询每天50次在SQL Server 2000里,在数据库关系图中为表定义一个主键将自动创建主键索引;由于要频繁查询学生姓名、教师姓名、课程名称、题目、成绩,因此在各表的对应列上创建第二索引。
4(定义全局约束根据需求分析,本网上培训系统不允许同一名学生在一个学期中选课超过6 门以上。
5(定义视图用户视图主要是学生视图和教师视图。
6(定义用户访问控制规则用户在进入系统之前必须提交相应的用户名和口令,系统将根据不同的用户而授予不同的权限。
以下是建表语句:1)学生表create table student(StudentID Int(15) not null identity(1,1), StudentName Varchar(20) not null,StudentPassword Varchar(10) not null,StudentStatus Char(1) not null,StudentSex Char(1) not null,EnrollingDate Datetime not null,E-mail Varchar(30),Constraint pk_student primary key clustered(StudentID) )索引:create index student_StudentName on student(StudentName)2)教师表create table teacher (TeacherID Int(15) not null identity(1,1), TeacherName Varchar(20) not null,TeacherPassword Varchar(10) not null,TeacherState Char(1) not null,TeacherSex Char(1) not null,TelNO Int(12),E-mail Varchar(30),Constraint pk_teacher primary key clustered(TeacherID) )索引:create index teacher_TeacherName on teacher(TeacherName)3)课程表create table course (CourseID Int not null identidy(1,1), CourseName Varchar(100) not null,MajorID Int,CourseType Int,CourseCreated Datetime not null,CourseStart Datetime not null,CourseEnd Datetime not null,CourseTime Int not null,CourseScore Int not null,CourseState Char(1) not null,CourseIntro Text,Constraint pk_course primary key clustered(Course_ID) )索引:create index course_CourseName on course(CourseName)4)课堂表create table Classroom (SerialNo Int not null identity(1,1), ClassBegin Datetime,ClassEnd Datetime,onlineBegin Datetime not null, onlineEnd Datetime,Constraint pk_course primary key clustered(SerialNo) )5)申请课程表create table application (ApplyID Int not null identity(1,1), StudentID Int not null, ApplyDate Int not null, CourseID Datetime not null, ApplyType Char(1) not null, ApplyState Char(1) not null, ApplyContent Varchar(200), Constraint pk_course primary key clustered(ApplyID), Constraint ApplicationCourseTooMuchCHECK(NOT EXISTS(SELECT StudentIDFROM applicationGROUP BY StudentIDHAVING COUNT(*)>6))FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION )6)课程学生表create table courseStudent (CourseID Int not null, StudentID Int not null, SerialNo Int not null, StudentType Char(1) not null, StudentScore Number(3),StudentGrade Number(3),StudentResult Number(3)Constraint pk_courseStudent primary key clustered(CourseID, StudentID,SerialNo),FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION,FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SerialNo) REFERENCES Classroom (SerialNo)ON UPDATE CASCADE ON DELETE NO ACTION )7)课程教师表create table courseTeacher (CourseID Int not null,TeacherID Int not null,SerialNo Int not null,StartDate Datetime,EndDate Datetime,TeacherState Datetime not null,Constraint pk_courseTeacher primary key clustered (CourseID, TeacherID,SerialNo),FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (TeacherID) REFERENCES Teacher (TeacherID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SerialNo) REFERENCES Classroom(SerialNo)ON UPDATE CASCADE ON DELETE NO ACTION )8)测试表create table test (TestID Int not null,TestName Varchar(100) not null,CourseID Int not null,TestDate Datetime not null,TestTime Int not null default 0, TestType Int not null,TeacherID Int,TestState Char(1) not null,PaperID Int not null,Constraint pk_test primary key clustered(TestID), FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE SET NULL )9)试卷表create table testPaper (PaperID Int not null default0 identity(1,1),TestID Int not null,SubjectID Int not null,ObjectAnwser Varchar(255) not null,SubjectAnswer Text,SubjectScore number(3) not null default 0 Constraint pk_testPaper primary key clustered (PaperID), FOREIGN KEY (TestID) REFERENCES Test (TestID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SubjectID) REFERENCES Subject (SubjectID)ON UPDATE CASCADE ON DELETE NO ACTION )索引:create index testPaper_SubjectID on testPaper (SubjectID)10)测试学生表create table testStudent (Student_ID Int not null,Paper_ID Int not null,Constraint pk_testStudent primary key clustered (StudentID, PaperID) FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (PaperID) REFERENCES TestPaper (PaperID)ON UPDATE CASCADE ON DELETE NO ACTION, )11)测试结果表create table testResult (TestID Int not null,StudentID Int not null,CourseID Int not null,TestDone Char(1) not null,ObjectScore Number(4) not null,SubjectScore Number(4) not null default 0, TestScore Number(4) not null default 0, TestMemo Char(1) not null,Constraint pk_testResult primary key clustered (TestID, StudentID, CourseID),FOREIGN KEY (TestID) REFERENCES Test (TestID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (CourseID) REFERENCES Course (CourseID)ON UPDATE CASCADE ON DELETE NO ACTION, )索引:create index testResult_TestScore on testResult(TestScore)12)题库表create table subject (SubjectID Int not null identity(1,1), SubjectType Char(1) not null, SubjectLever Int not null,SubjectContents Varchar(255) not null,SubjectAnswer Text,ObjectAnwser Varchar(255) not null,Constraint pk_subject primary key clustered (SubjectID) )13)练习表create table exercise (ExerciseID Int not null identity(1,1), StudentID Int not null,SubjectID Int not null,TeacherID Int,HandinTime Datetime not null,JudgeState Char(1) not null,JudgeTime Datetime,Grade Int,StudentAnswer Text not null,Constraint pk_exercise primary key clustered (ExerciseID), FOREIGN KEY (StudentID) REFERENCES Student (StudentID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (SubjectID) REFERENCES Subject (SubjectID)ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (TeacherID) REFERENCES Teacher (TeacherID)ON UPDATE CASCADE ON DELETE NO ACTION, )。