软件系统设计中的详细设计所涉及的数据库物理设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1软件系统设计中的详细设计所涉及的数据库物理设计
1.1.1项目中的数据库表结构设计
1、本项目的数据库
(1)采用MS SQLServer2000
本项目的数据库采用MS SQLServer2000,在前面工作的基础上,根据对其进行的各种分析(包括数据分析),提出数据库建设方案。

数据库建模工作主要利用类图建模。

经过分析,依据数据库的规范形式,本着减少冗余的原则,可以整理出该系统所需要的数据库表
(2)本项目的数据库设计特点
因考虑网络执行速度及其自身数据库的太小,设计基本采用的是一层设计,没有设计父子表;数据关系基本采用的是同关系字段以避免产生复杂的父子关系结构,从而简化后面的实体模块设计,同时也提高数据访问的速度。

2、设计数据库中的各个表
为了唯一标识每条数据库记录,我们需要一个主键。

在MS SQL Server和Oracle中可以使用自动递增的主键生成方式。

但是很多数据库不支持自动递增的主键,考虑到移植性不采用自动递增的主键生成方式。

(1)数据库表BookAuthor
●数据库表的需求分析:该BookAuthor表中的各个字段的功能说明如下
该表主要代表图书的作者信息,其中authorID为主键,而BookInfo表中的bookID 主键为本表中的外键。

该BookAuthor数据库表与BookInfo表形成“一对多”的关联关系。

●数据库表的逻辑设计:BookAuthor表的结构如下
●创建该表的SQL语句
create table BookAuthor (
authorID int primary key,
authorName nvarchar (50),
authorTelPhone nvarchar (50),
bookID int,
authorKind int,
);
注意:必须对数据库表设计出主键以满足EJB 中findByPrimaryKey 的要求。

(2)数据库表BookInfo
●数据库表的需求分析:该BookInfo表中的各个字段的功能说明如下
该表主要代表图书的信息,其中bookID为主键,而BookAuthor数据库表中的authorID主键为本表中的外键。

该BookInfo数据库表与BookAuthor表形成“一对多”
的关联关系。

●创建该表的SQL语句
create table BookInfo (
bookID int primary key,
bookName nvarchar (50),
publisher nvarchar (50),
authorID int,
price smallint,
kind smallint,
abstractText nvarchar (50),
publisherTime nvarchar(50),
numbersOnLibrary smallint
);
(3)数据库表UserInfo
●数据库表的需求分析:该UserInfo表中的各个字段的功能说明如下
该数据库表主要代表网站的注册用户信息,其中userID为主键。

●数据库表的逻辑设计:UserInfo表的结构如下
●创建该表的SQL语句
create table UserInfo (
userID int primary key,
userName nvarchar (15),
userPswd nvarchar (12),
userCompany nvarchar (50),
userLevel smallint,
userEmail nvarchar (30)
);
(4)EbankChecker
●数据库表的需求分析:该EbankChecker表中的各个字段的功能说明如下
该数据库表主要代表网站的注册用户的银行财务信息,其中checkerID为主键,而userID为外键。

●数据库表的逻辑设计:BookAuthor表的结构如下
创建该表的SQL语句
create table EbankChecker (
checkerID int primary key,
userID int,
cashNumber money,
cashKind int,
cashTime int
);
3、数据库表中字段类型定义时所应该遵循的规则
(1)选用字段长度最小并优先使用定长型
(2)尽可能的定义"NOT NULL"
(3)索引的优化至关重要
1)被索引的字段的长度越小, 该索引的效率越高
2)被索引的字段中, 值的重复越少, 该索引的效率越高
3)查询语句中, 如果使用了"group" 子句, 根据其中字段出现的先后顺序建立多字段
索引
4)查询语句中, 如果使用了"distinct", 根据其中字段出现的先后顺序建立多字段索

1.1.2获得数据库表之间的关系
1、在Microsoft Visio中利用反向工程向导导入数据库表,从而获得数据库表之间的关系
●在文件菜单上,依次指向新建、数据库,然后单击数据库模型图。

●在数据库菜单上,单击反向工程。

2、在反向工程向导的第一个屏幕上,执行以下操作
为您的数据库管理系统 (DBMS) 选择 Microsoft Visio 数据库驱动程序。

如果尚未将Microsoft Visio 数据库驱动程序与某个 32 位 ODBC 数据源相关联,现在应创建此关联。

选择为本项目所创建的针对Ebuss.dmb的数据库的数据源名称EBuss。

然后点击“下一步”按钮
3、选择您要提取的信息的类型复选框,然后单击下一步。

●选择您要提取的表(和视图,如果有)的复选框,或单击全选以全部提取,然后单
击下一步。

●选择是否希望反向工程后的项目自动添加到当前页。

检查所做的选择,确保提取的信息是所需的,然后单击完成。

此时将出现数据库表的关系表示法示图。

向导将提取所选的信息,并在输出窗口显示有关提取过程的注释。

1.1.3在Visio中设计项目中的各个数据表之间的关系
1、画出关系图的主要目的
数据库表之间的关系直观地指示出数据库模型图中的一个表如何与另一个表交互作用。

在关系表示法中,关系线末端的箭头指向父表。

2、创建方法
(1)打开数据库模型图,并将关系形状拖到绘图页上。

(2)将带箭头的端点拖到父表。

该表四周出现方框后,释放鼠标按钮;将不带箭头的端点拖到子表。

该表四周出现方框后,释放鼠标按钮。

(3)两个连接点均变为红色,同时父表中的所有主键都作为外键添加到子表中。

3、设计数据库表所对应的实体之间的关系
本项目中的几个实体之间的关系如下
1.1.4设计数据库表所对应的实体的类图
请见前面的“静态建模”文档,下面给出一个示例。

相关文档
最新文档