网站系统---数据库的设计
每一个完整或系统的的设计初衷,都是为了数据更好的管理和查询,数据库的设计也就是极其的显著和重要。下面是就以例子网上商城的数据库设计聊一聊数据库的设计了。
* 用户ID
* 用户名:
* 密码:
* 真实姓名:
* 邮箱:
* 地址:
* 电话:
* 用户状态: 0未激活 1已经激活
* 激活码:
* 一级分类ID
* 一级分类名称
* 二级分类ID:
* 二级分类名称:
* 一级分类ID(外键指向一级分类主键ID)
* 商品ID:
* 商品名称:
* 商品商城价格:
* 商品市场价格:
* 商品描述:
* 商品图片:(路径)
* 二级分类ID(外键指向二级分类主键ID)
* 订单ID
* 订单时间:
* 订单金额:
* 订单状态:
* 订单地址:
* 订单电话:
* 订单收货人:
* 用户ID(外键指向用户表的主键ID)
* 主键ID
* 商品ID
* 订单ID
* 数量
* 小计
* 用户名:
* 密码:
一 般而言,一个实体不能既无主键又无外键。在E—R图中,处于叶子部位的实体, 可以定义主键,也可以不定义主
键(因为它无子孙),但必须要有外键(因为它有父亲)。主键与外键的设计,在全局数据库的设计中,占有重要地
位。当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这
就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。因为:主键是实体的高度
抽象,主键与外键的配对,表示实体之间的连接。
域的完整性:用Check来实现约束,在数据库设计工具中,对字段的取值范围进行定义时,有一个Check按钮,通
过它定义字段的值城。
参照完整性:用PK、FK、表级触发器来实现。
用户定义完整性:它是一些业务规则,用存储过程和触发器来实现。
基本表与中间表、临时表不同,因为它具有如下四个特性:
o 原子性。基本表中的字段是不可再分解的。
o 原始性。基本表中的记录是原始数据(基础数据)的记录。
o 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。
o 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。
理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。
理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范
式(通俗地理解是够用的理解,并不是最科学最准确的理解):
o 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
o 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
o 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必
须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到
物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。