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

合集下载

数据库设计文档模板

数据库设计文档模板

数据库设计文档模板一、引言。

数据库设计是软件开发过程中非常重要的一环,它直接影响着系统的性能、稳定性和扩展性。

本文档旨在为数据库设计人员提供一个规范的模板,以便他们能够按照统一的标准进行数据库设计工作,确保设计的合理性和可维护性。

二、数据库设计概述。

1. 数据库设计目标,明确数据库设计的目标和范围,例如解决哪些业务问题,满足哪些需求。

2. 数据库设计原则,介绍数据库设计时需要遵循的原则,例如数据一致性、完整性、可靠性等。

3. 数据库设计约束条件,列举数据库设计时需要考虑的约束条件,例如数据安全性、性能要求、成本限制等。

三、数据库逻辑设计。

1. 数据库实体关系模型,根据需求分析,设计数据库的实体及其之间的关系模型,包括实体-关系图、实体属性及其约束。

2. 数据库范式分解,对设计的数据库进行范式分解,确保数据存储的规范性和一致性。

3. 数据库索引设计,设计数据库的索引结构,提高数据库的检索性能。

四、数据库物理设计。

1. 数据库表结构设计,设计数据库的表结构,包括表的字段、数据类型、约束条件等。

2. 存储过程和触发器设计,设计数据库的存储过程和触发器,实现数据库的业务逻辑。

3. 数据库性能优化,对数据库进行性能优化,包括索引优化、查询优化等。

五、数据库安全设计。

1. 数据库权限管理,设计数据库的权限管理策略,保护数据库的安全性。

2. 数据备份和恢复策略,设计数据库的备份和恢复策略,确保数据的可靠性和完整性。

3. 数据库审计策略,设计数据库的审计策略,监控数据库的使用情况,保障数据的安全。

六、数据库设计实施。

1. 数据库设计实施计划,制定数据库设计的实施计划,安排设计人员进行数据库设计工作。

2. 数据库设计实施过程,介绍数据库设计的实施过程,包括需求分析、设计、开发、测试等阶段。

3. 数据库设计实施验收,对数据库设计进行验收,确保设计的合理性和可行性。

七、数据库设计维护。

1. 数据库变更管理,管理数据库的变更,确保数据库的稳定性和一致性。

(完整版)数据库设计的典型案例920

(完整版)数据库设计的典型案例920
8.1.5业务流程分析
一个简化的选课系统业务流程如图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

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, )。

完整版)数据库设计文档模板

完整版)数据库设计文档模板

完整版)数据库设计文档模板文档编号:2011-6-14 版本:A1 密级:商密编写部门:XXX 项目名称:时代集团产品跟踪平台项目来源:DR-RD-020(V1.1) 时代集团数据库设计说明书内部资料请勿外传)版权所有,不得复制日期:(待填写)引言本文档旨在描述时代集团产品跟踪平台的数据库设计,包括数据库结构、表结构、字段定义等内容,以便于开发人员进行系统开发和维护。

术语表本文档中涉及到的术语及其定义如下:XXX:指本公司,下同。

产品跟踪平台:指时代集团开发的用于追踪产品生命周期的系统。

数据库结构:指数据库中各个表之间的关系和连接方式。

表结构:指数据库中每个表的字段定义和数据类型等信息。

字段定义:指数据库中每个表中各个字段的含义和数据类型等信息。

参考资料本文档参考了以下资料:DR-RD-020(V1.1) 时代集团产品跟踪平台需求文档数据库设计规范文档数据库环境说明本文将介绍数据库的命名规则、逻辑设计和物理设计。

这些设计将有助于确保数据库的有效性和可靠性。

数据库的命名规则为了方便管理和维护,数据库中的各种对象都需要遵循一定的命名规则。

例如,表名应该简洁明了,能够准确反映其所代表的数据。

此外,命名规则还应该遵循一定的规范,例如使用下划线分隔单词等。

逻辑设计逻辑设计是数据库设计的第一步,它涉及到如何组织和表示数据。

在逻辑设计中,需要考虑到数据的结构、关系和约束条件等因素。

通过逻辑设计,可以确保数据库的数据结构清晰明了,易于管理和维护。

物理设计物理设计是数据库设计的第二步,它涉及到如何将逻辑设计转化为实际的数据库结构。

在物理设计中,需要考虑到数据的存储方式、索引和分区等因素。

通过物理设计,可以确保数据库的性能和可靠性。

表汇总在数据库中,表是最基本的数据组织方式。

表汇总是对所有表的一个概览,可以帮助用户快速了解数据库中包含哪些表以及它们之间的关系。

表[X]:[XXX表]表[X]代表某个具体的表,其中包含了一些关键信息。

数据库设计文档范本

数据库设计文档范本

数据库设计文档范本数据库设计是软件开发过程中的关键环节之一,它不仅涉及到数据库的结构和组织方式,还关系到系统的性能和可扩展性。

为了确保数据库设计的准确性和规范性,编写数据库设计文档是必不可少的。

本文将为你提供一个数据库设计文档的范本,以供参考。

一、引言数据库设计文档旨在描述数据库系统的结构、组织方式和设计原则。

本文档对所设计的数据库进行了全面的分析和规划,并提供了详细的数据模型和数据库对象定义。

二、需求分析在数据库设计之前,需要进行需求分析,以明确系统的功能和性能需求。

该部分应包括以下内容:1. 系统的功能需求:列出系统需要实现的功能和操作流程。

2. 性能需求:包括响应时间、并发访问量、数据存储容量等方面的要求。

三、概念设计概念设计阶段是数据库设计的基础,主要包括实体-关系图(ER图)和实体间关系的定义。

下面是一个示例:```实体:Employee(员工)属性:员工编号(EmployeeID)、姓名(Name)、性别(Gender)、...实体:Department(部门)属性:部门编号(DepartmentID)、部门名称(DepartmentName)、...关系:Employee - Department(员工 - 部门)关系属性:任职岗位(Position)、入职日期(HireDate)、...```四、逻辑设计逻辑设计将概念模型转化为逻辑模型,主要包括数据模型和数据库对象的定义。

下面是一个示例:```数据模型:关系模型(使用关系型数据库)表:Employee(员工)字段:员工编号(EmployeeID,主键)、姓名(Name)、性别(Gender)、...表:Department(部门)字段:部门编号(DepartmentID,主键)、部门名称(DepartmentName)、...关系:员工 - 部门外键:DepartmentID(关联Department表的主键)```五、物理设计物理设计将逻辑模型转化为物理模型,主要包括数据库表的物理实现和索引策略。

(完整版)数据库设计文档模板

(完整版)数据库设计文档模板

*****中心开发部文档编号2011-6-14 版本A1 密级商密A 项目名称时代集团产品跟踪平台项目来源时代集团数据库设计说明书(内部资料请勿外传)编检审批*********版权所有不得复制期:期:期:期:时代集团产品跟踪平台.................................................... 错误!未定义书签。

数据库设计说明书 (1)1 引言 (2)1.1 编写目的 (2)1.2 术语表 (2)1.3 参考资料 (3)2 数据库环境说明 (3)3 数据库的命名规则 (3)4 逻辑设计 (3)5 物理设计 (4)5.1 表汇总 (5)5.2 表[X] : [XXX表] (5)5.3 视图的设计 (11)5.4 存储过程、函数及触发器的设计 (12)6 安全性设计 (23)6.1 防止用户直接操作数据库的方法 (23)6.2 用户帐号密码的加密方法 (23)6.3 角色与权限 (23)7 优化 (24)8 数据库管理与维护说明 (24)1引言1.1 编写目的本文档是时代集团产品跟踪平台概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《SQL数据库设计和开发规范》<本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。

1.2 术语表1.3 参考资料2数据库环境说明3数据库的命名规则数据库名称:时代集团的英文名称time-group表名:英文(表的用途)+下划线+英文字段名:相关属性的英文名4逻辑设计提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)如果采用面向对象方法(OOAD),这里实体相当于类(class)。

5物理设计提示:(1) 主要是设计表结构。

一般地,实体对应于表,实体的属性对应于表的列,实体之 间的关系成为表的约束。

逻辑设计中的实体大部分可以转换成物理设计中的表, 但是它们并 不一定是一一对应的。

高校教务管理系统物理数据库设计文档

高校教务管理系统物理数据库设计文档

高校教务管理系统物理数据库设计文档软件与服务外包学院软件外包工程系⏹文档位置⏹参考文档目录1.物理数据库设计 (3)1.1数据库总体设计 (3)1.1.1 表空间规划 (3)1.1.2 数据库规划 (3)2.数据库表设计 (4)2.1实体列表( Entity List) (4)2.2E-R图 (4)2.2.1 < 整体结构E-R图> (4)2.2.2 <学生信息E-R图> (5)2.2.3 <教师信息E-R图> (5)2.2.4 <院系管理E-R图> (6)2.2.5 <成绩管理E-R图> (6)2.2.6 <课程管理E-R图> (7)2.2.7 <系统管理E-R图> (7)2.2.8 <班级信息E-R图> (8)2.2.9 <选课信息E-R图> (8)2.2.10 <教务系统关系图> (9)2.3实体定义 (10)2.3.1 <学生信息> (10)2.3.2 < 教师信息> (10)2.3.3 < 院系管理> (11)2.3.4 < 成绩管理> (11)2.3.5 < 课程信息> (12)2.3.6 < 系统管理> (12)2.3.7 < 班级管理> (13)2.3.8 <选课信息> (13)2.4数据库其他对象设计 (14)2.4.1 数据库试图设计 (14)2.4.2 存储过程设计 (14)2.4.3 触发器设计 (15)3.数据库容量及安全性设计 (16)3.1数据量估计 (16)3.2数据库安全性设计 (16)3.2.1 用户设置 (16)3.2.2 用户组设置 (16)3.2.3 数据库权限设计 (17)1.物理数据库设计1.1数据库总体设计1.1.1表空间规划综合分析教务管理系统各模块,我们需要对该系统实现基本的功能,并实现对用户对象的使用做出相应的权限。

数据库设计文档

数据库设计文档

数据库设计文档目录1. 数据库物理设计原则 (5)1.1. 数据库环境配置原则 (5)1.1.1. 操作系统环境 (5)1.1.2. 内存要求 (5)1.1.3. 交换区设计 (5)1.1.4. 其他 (6)1.2. 数据库设计原则 (6)1.2.1. 数据库SID (6)1.2.2. 数据库全局名 (6)1.2.3. 数据库类型选择 (6)1.2.4. 数据库连接类型选择 (7)1.2.5. 数据库SGA配置 (7)1.2.6. 数据库字符集选择 (8)1.2.7. 数据库其他参数配置 (9)1.2.8. 数据库控制文件配置 (9)1.2.9. 数据库日志文件配置 (10)1.2.10. 数据库回滚段配置 (10)1.2.11. 数据库临时段表空间配置 (11)1.2.12. 数据库系统表空间配置 (11)1.3. 数据库表空间设计原则 (11)1.3.1. 表空间大小定义原则 (11)1.3.2. 表空间扩展性设计原则 (12)1.4. 裸设备的使用 (12)2. 数据库逻辑设计原则 (13)2.1. 命名规范 (13)2.1.1. 表属性规范 (13)2.1.2. 索引 (14)2.1.3. 视图 (15)2.1.4. 实体化视图 (15)2.1.5. 存储过程 (15)2.1.6. 触发器 (15)2.1.7. 函数 (16)2.1.8. 数据包 (16)2.1.9. 序列 (16)2.1.10. 表空间 (16)2.1.11. 数据文件 (16)2.1.12. 普通变量 (16)2.1.13. 游标变量 (17)2.1.14. 记录型变量 (17)2.1.15. 表类型变量 (17)2.2. 命名 (17)2.2.1. 语言 (17)2.2.2. 大小写 (18)2.2.3. 单词分隔 (18)2.2.4. 保留字 (18)2.2.5. 命名长度 (18)2.2.6. 字段名称 (18)2.3. 数据类型 (18)2.3.1. 字符型 (18)2.3.2. 数字型 (19)2.3.3. 日期和时间 (19)2.3.4. 大字段 (19)2.3.5. 唯一键 (19)2.4. 设计 (20)2.4.1. 范式 (20)2.4.2. 表设计 (20)2.4.3. 索引设计 (23)2.4.4. 视图设计 (24)2.4.5. 包设计 (24)2.4.6. 安全性设计 (25)2.5. SQL编写 (26)2.5.1. 字符类型数据 (26)2.5.2. 复杂sql (27)2.5.3. 高效性 (27)2.5.4. 健壮性 (28)2.5.5. 安全性 (29)2.5.6. 完整性 (30)3. 备份恢复设计原则 (30)3.1. 数据库exp/imp备份恢复 (30)3.1.1. 数据库级备份原则 (30)3.1.2. 用户级备份原则 (30)3.1.3. 表级备份原则 (31)3.2. 数据库冷备份原则 (31)3.3. Rman备份恢复原则 (31)3.3.1. Catalog数据库 (31)3.3.2. Archive Log (33)3.3.3. 全备份策略 (33)3.3.4. 增量备份策略 (33)3.3.5. 恢复原则 (33)3.4. 备用数据库原则 (34)3.5. 一些小经验 (34)3.6. 系统调优知识 (35)3.6.1. 生成状态报表(statspack的使用) (35)3.6.3. 内存调整 (37)3.6.4. 排序的优化 (40)3.6.5. 统计信息 (41)4. 设计工具 (42)1.数据库物理设计原则1.1.数据库环境配置原则1.1.1.操作系统环境对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle9i RAC 的集群数据库的方法,集群节点数范围在2—64个。

物理数据库设计

物理数据库设计
如果选择排序的列是表的键, 那么该索 引就是主索引; 否则, 索引就是聚簇索引.
每个文件只能有一个主索引或者是一个 聚簇索引.
二级索引提供了为基本表指定其他键的 机制,可以用于更有效的检索数据.
步骤 4.3 选择索引 – 二级索引
在保持和使用二级索引时还要考虑到当 检索数据时,必须要平衡改善性能.
包括:
每当在表中插入一条记录时,都要给每个二级 索引增加一个索引记录;
当表中相应记录被更新时,也要更新二级索引; 需要使用额外的磁盘空间来存储二级索引; 在查询优化期间,性能可能退化,因为在选择
最佳执行策略之前,查询优化器可能考虑所有 的二级索引.
步骤 4.3 选择索引 – 选择索引意 愿表的方针
步骤 4.1 分析事务
通常不可能分析所有预期事务,因此只研究最 重要的那些事务. 80/20规则是有效的
为了帮助标识要研究的那些事务,可以使用:
事务/表交叉引用矩阵,显示每个事务访问的表. 事务应用图, 表明哪些表潜在的可能被多次使用.
交叉引用的事务和表
显示预期频率的示例事务的事务使用映射图
有 些 DBMS 允 许 检 查 优 化 器 的 策 略 , Oracle EXPLAIN PLAN;DB2 EXPLAIN; ACCESS性能分析器
步骤 4.3 选择索引 – 更新数据库 策略、存档
查询优化器依赖于存储在系统目录中的 数据库统计来选择最佳策略,当创建索 引时DBMS自动将此索引增加到系统目录 中。但是,DBMS要求使用一个工具来更 新系统目录中与表和索引相关的统计信 息。
列(只使用索引中的数据就可以产生所需的结 果)添加二级索引.
步骤 4.3 选择索引 – 选择索引意 愿表的方针
(8) 避免为经常被更新的列或表设置索引. (9) 如果查询将检索表中记录的大部分(如25%),

8 物理数据库设计-7

8 物理数据库设计-7
Chapter 15
物理数据库设计 – Step 7 (考虑引入 考虑引入 受控冗余) 受控冗余
1
反规范化
术语“反规范化 是指对基本表结构的修 术语“反规范化”是指对基本表结构的修 使得新表比原始表的范式低. 改,使得新表比原始表的范式低 “反规范化”也包括将两个表合并成一个 反规范化 也包括将两个表合并成一个 新表的情况, 新表的情况 , 该新表与原表满足相同范 式但比原始表包含更多的空值. 式但比原始表包含更多的空值
14
步骤 7.7 分区表
除了将表合并在一起外,还有一种用于解决非 除了将表合并在一起外 还有一种用于解决非 常大的表的性能问题的方法, 常大的表的性能问题的方法,即将表分解成一 些较小的并且更易于维护的片断(分区) 些较小的并且更易于维护的片断(分区). 水平分区: 水平分区 将表中的记录分布在几个较小的表 中. 垂直分区: 将表中的列分布在一些较小的表中. 垂直分区 将表中的列分布在一些较小的表中 主键是被复制的,以便重构原始表) (主键是被复制的,以便重构原始表). 分区在存储和分析大数量的数据的应用中非常 有用. 例如VideoForRent, 按 BranchNo水平 有用 例如 , 水平 分区
6
步骤 7 考虑引入受控冗余
考虑如下情况的反规范化, 考虑如下情况的反规范化,以便加速进行常用 或关键的事务: 或关键的事务
步骤 7.1 步骤 7.2 步骤 7.3 步骤 7.4 步骤 7.5 步骤 7.6 步骤 7.7 合并 1:1 关系 复制 1:* 关系中的非键列来减少连接 复制 1:* 关系中的外键列来减少连接 复制 *:* 关系中的列来减少连接 引入重复组 创建提取表 分区表. 分区表
个列: 可空), 可空) 设3个列:telNo1, telNo2(可空 telNo3(可空 个列 , 可空 可空 个列: ),另外 个仍在tel表中 设1个列:telNo(非空),另外 个仍在 表中 个列 (非空),另外2个仍在
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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, )。

相关文档
最新文档