数据库设计-网上书店

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


说明:


六、提高数据库效率的设计

3. 使用索引的几条原则

(1) 可以创建索引的情形

该列用于频繁搜索 该列用于对数据进行排序

(2) 不要创建索引的情形


列中仅包含几个不同的值。 表中仅包含几行。为小型表创建索引可能不太划算,因为 SQL Server在索引中搜索数据所花的时间比在表中逐行搜索 所花的时间更长

(1) 顾客登录用的信息

注册账号,密码 姓名,性别,年龄,地址,邮编,电话,邮箱
(2) 顾客自身的基本信息


8. 应当提供管理员对图书、顾客、订单、发货、 收货等信息进行定期维护。

“管理员”信息:管理员ID、姓名、类型 “管理员”分类:

系统预设的管理员、自定义的管理员
二、系统功能与流程设计
返回 首页
二、系统功能与流程设计

3. 操作流程—购书流程
浏览图书 网上 书店 首页 登录 订购图书 用户管理 支付 发货 收货 确认
三、数据库概念结构设计(E-R图)

主要E-R图
书号 书名 作者 n 图书
管理
账号
姓名
密码
1
管理员
1
管理
账号 密码 姓名
n n
订购
m
单价
数量
客户
数量
日期
地址 电话




(3) 唯一性约束(Unique) 置于字段之后,用法:Unique 主键约束自动拥有唯一性;一个表只能有一个主键约束,但 可以有多个唯一性约束。 (4) 空或非空约束 置于字段定义之后,用法:Null,Not Null (5) 唯一标识值约束(Identify) 置于字段定义之后,用法:Identify(初值,步长) (6) 默认值约束(Default) 置于字段定义之后,用法:Default „常量’/函数 例如:bq int null default „1‟ --字段bq:购买数量 orderdate date default GetDate()

(2) 增加可读性

(3) 保证数据逻辑独立性


(4) 增加数据的安全性和保密性

六、提高数据库效率的设计

3. 视图的创建


Create View [数据库名.]视图名 [(列名1,列名2,…)] [WITH ENCRYPTION ] AS SELECT语句 [WITH CHECK OPTION] 参数说明

4. 浏览图书时可订购图书,生成并提交订单


(1) 在浏览的哪些环节可以订购?

浏览图书目录、详细信息时
(2) 一个“订单”应包含哪些信息?


订单号,书号,顾客号,数量,金额,订购日期 订单管理:创建、增加、修改、删除、确认、结算
一、需求分析

5. 根据订单和支付信息发出图书,形成发货信 息(“支付信息”暂不考虑)
项目
供应 (供应商号,项目号,零件号,数量) p 数量 零件
五、数据库物理结构设计(存储结构)

包括:

(一) 物理结构

是指含有字段类型、字段长度等参数的二维表结构(包 括主键、外键)

(二) 字段约束


主键(primary key)、外键(foreign key)约束 空/非空约束(null, not null) 默认值(default)约束 唯一(unique)约束 自动增长(identify)约束 检查(CHECK)约束
数据库设计—网上书店
一、需求分析 二、系统功能与流程设计 三、数据库概念结构设计 四、数据库逻辑结构设计 五、数据库物理结构设计 六、提高数据库效率的设计 七、数据库的实施
一、需求分析

1. 能通过互联网(Internet)访问网上书店

B/S结构 选择合适的开发工具

2. 能在网页中浏览图书目录,可按图书类别分 类浏览。

对视图的数据进行修改时,基表的数据也会发生变化,反之 亦然。
六、提高数据库效率的设计

2. 使用视图的优点

(1) 简化查询语句

可以把经常使用的联接、投影和查询语句定义为视图,当查 询时,只需简单地查询视图而隐藏对基表的复杂查询操作。 视图可以定制数据内容、可以使用字段别名。 当数据表结构改变时,只需更改视图定义的查询语句,不需 更改应用程序代码,保证了数据的逻辑独立性。 针对不同用户可以创建不同视图,真正的数据表是不可见、 不可访问的。

(2) 引用完整性约束


五、数据库物理结构设计(存储结构)

(2) 域完整性约束: 给定列的输入正确性和有效性。

A. 唯一性约束(UNIQUE): 要求某列任意两行的值不能相同 B. 标识约束(IDENTIFY): 能自动产生唯一的标识值,一般用 于主键。 C. 非空约束:Not Null D. 默认值约束: Default,为字段规定默认值 E. 检查约束:CHECK,为字段的值规定检查机制,如范围 F. 触发器、存储过程中定义的约束机制



(1) 图书应当分类,按何种标准分类? 分为几类? 是否还有其他分类标准? 又如何分类? (2) 哪些信息构成图书目录? (3) 是否需要图书搜索功能? 能按哪些关键词搜索?

图书名称、图书号、出版社、单价
一、需求分析

3. 可浏览所选图书的详细信息。

具有包括哪些信息?

ISBN,书名,作者,出版社,出版日期,简介,封面, 库存数量,单价
用法2:紧跟字段定义语句

字段名 类型 constraint <约束名> primary key

(2) 外键约束

用法1:独立书写

constraint <约束名> foreign key (字段) references 表名 (字段名)

用法2:类似于primary key.
五、数据库物理结构设计(存储结构)

1. 系统功能
前台 浏览 模块 网上 书店
匿名 用户
浏览/查找图书 用户注册 浏览/查找图书
注册 用户
订购图书/维护订单 用户资料维护
支付货款
后台 管理 模块 (管理员)
图书管理 订单管理 用户管理 思考:初步设计网 站首页布局?
二、系统功能与流程设计

2. 操作流程—总体流程
网上书店概况 浏览/搜索图书 网上 书店 首页 导航 订购图书 用户登录 用户注册

说明:

除触发器、存储过程外,有些约束在定义字段时给出, 当某个字段具有多个约束,可紧跟其后,排列不分次序。 有些也可在表结构定义的末尾单独给出约束定义。
五、数据库物理结构设计(存储结构)

2. 常用约束的书写方法

(1) 主键约束

用法1:独立书写

constraint <约束名> primary key (字段)


“列名1,列名2,…”: 是视图的列名,若省略则取数据表的列 名 “with encryption”: 加密视图 “with check option”:强制对视图执行的所有数据修改语 句都必须符合条件。
六、提高数据库效率的设计

例:创建网上图书的简要信息视图

简要信息:书名、作者、ISBN、出版社、出版日期 Create view bSimpInfo(书名,作者,ISBN,出版社,出版 日期) AS select bName, bAuthor, bISBN, bPub,bDate from books 在视图bSimpInfo中查询书名含有“数据库”的图书
(二)表的约束

1. SQL Server约束的分类

(1) 实体完整性约束


主要通过“主键约束”来实现,以确保表内任意行记录数据 是可区分的,是不相同的。 主键约束(Primary Key): 不重复、不为空 主要是通过“外键约束”来实现,即将一个表的主键添加到 另一个表中,称为外键(Foreign Key),使两个表联合操作时 能准确识别表内各条记录。 外键(Foreign Key):


创建视图


引用视图

select * from bSimpInfo where 书名 like „%数据库%‟
六、提高数据库效率的设计

4. 视图的管理
六、提高数据库效率的设计

(4) 非聚集索引



对非聚集索引,表中各行的物理顺序与键值的逻辑顺序 不匹配。 聚集索引比非聚集索引(nonclustered index)有更 快的数据访问速度。 例如,按笔画排序的索引就是非聚集索引,“1”画的 字(词)对应的页码可能比“3”画的字(词)对应的 页码大(靠后)。 SQL Server中,一个表只能创建1个聚集索引,多个非 聚集索引。设置某列为主键,该列就默认为聚集索引。

(2) 主键索引

六、提高数据库效率的设计

(3) 聚集索引


在聚集索引中,表中各行的物理顺序与键值的逻辑(索 引)顺序相同。表只能包含一个聚集索引。 例如:汉语字(词)典

默认按拼音排序编排字典中的每页页码。拼音字母a,b,c, d……x,y,z就是索引的逻辑顺序,而页码1,2,3……就 是物理顺序。默认按拼音排序的字典,其索引顺序和逻辑顺 序是一致的。
五、数据库物理结构设计(存储结构)

(7) 检查约束(check)

用法: check(表达式) 例:ID_P int not null check(ID_P>0) age int check(age>=10 and age<=20)
六、提高数据库效率的设计

包括:

(一) 表的索引 (二) 表的视图 (三) 存储过程 (四) 触发器

“发货信息”应当包括哪些信息?

是否需要独立的“发货单”?
“发货信息”如何与“订单信息”联动?

一、需求分析

6. 顾客收到图书之后,对收货予以确认,形成 收货信息

“收货信息”应当包括哪些信息?

是否需要独立的“收货单”?
“收货信息”如何与“发货信息”联动?

一、需求分析

7. 顾客必须注册后才能订购图书
四、数据库逻辑结构设计(关系)

(3) 多对多的联系:转换为一个关系模式


关系的属性:n方的主键、m方的主键、“联系”的属 性 关系的主键:组合(n方的主键、m方的主键) 例如:

订单(客户号,书号,订购数量,订购日期)
n m
供应

(4) 三个以上的多元联系:转换为一个关系模式


类似于多对多联系的转换方法 例如: 供应商
六、提高数据库效率的设计

(一)表的索引

1. 索引的分类

பைடு நூலகம்(1) 唯一索引

以原表为基础,按给定字段创建任意两行值不重复的索引。 说明:创建了唯一约束,将自动创建唯一索引。尽管唯一索 引有助于提高查找信息的速度,但为了获得最佳性能,建议 使用主键约束或唯一约束。 为表定义一个主键将自动创建主键索引,主键索引是唯一索 引的特殊类型。
五、数据库物理结构设计(存储结构)

(一)表结构定义

1. 管理员表(admins) 2. 顾客表(customers) 3. 图书表(books) 4. 图书分类表(booktypes) 5. 订单表(orders)
写出各个关系表 的结构定义
五、数据库物理结构设计(存储结构)


说明:

六、提高数据库效率的设计

2. 索引的创建方法

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX 索引名 ON 表名 (字段名…) [WITH FILLFACTOR=n] UNIQUE表示唯一索引,可选 CLUSTERED、NONCLUSTERED表示聚集索引还是 非聚集索引,可选 FILLFACTOR表示填充因子,指定一个0到100之间的 值,该值指示索引页填满的空间所占的百分比
类别
四、数据库逻辑结构设计(关系)

E-R图转化为关系模式的方法

注:“关系模式”是指一个未确定各个属性的数据类型、 长度等参数的二维表,称为一个“关系”。 例:管理员( 账号,姓名,密码)

(1) 每一个实体对应一个关系 (2) 一对多的联系


当“联系”并无独有的“属性”时,通常不单独转换为 一个关系模式,而是将“一方”的主码增加到“多方” 关系模式中,构成其外码。 例如:客户(账号,密码,姓名,管理员ID)
六、提高数据库效率的设计

(二) 视图的使用

1. 什么是视图?



视图是一种数据库对象,为用户提供了一种查询数据表 中数据的方式。视图的定义是由select语句构成,并存 储在数据库中。 引用视图实质上是引用select语句的查询结果。 视图是虚拟表,具有数据表的一些特性,可以对视图进 行查询、修改、删除等操作,还能成为另一个视图所引 用的表。
相关文档
最新文档