asp.net文学网站设计+源代码+数据库设计 第5页
4.2 数据库逻辑结构设计
数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。
另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR(1)或BIT
型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的 值来解决,这样就避免了修改数据库结构。
数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。
程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变,
所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改越乱,最终导致程序的失败。PB的数据窗口与其他语言的数据控件不一样,它的很多东西是预编译的。即使你一个模块已经调试无误,但只要数据库结构改动。相应的模块就一定要重新修改,否则一定会出问题。
文学网站系统数据库中各个表的设计结果如下面几个表格所示。每个表格表示为数据库中的一个表。
表4.1 “发布书籍基本信息”数据表
表4.2 “注册用户基本信息”数据表
表4.3 “网上评论信息”数据表
表4.4 “公共信息”数据表(1)规划有效的索引
a.在组合表的列中创建索引,包括主关键字和外部关键字所在的列。
b.在列或类组合中创建唯一的索引能增强唯一性。
c.浏览索引并卸载不使用的索引。索引需要一定硬盘空间和时间来文护。具有较高数据插入操作频率的数据库最好不要索引。有较高读操作频率的数据库应该有更多的索引。
d.避免在簇索引中包括不必要的列。在可能的情况下,使用较小的数据类型,例如用varchar替代char。
e.考虑使用簇索引来支持排序和范围化查询。在为数据检索优化表时,簇索引必须支持数据的分组索引。为簇关键字选择列或列组,簇关键字以经常需要的顺序排序数据或以必须被一起访问的记录而分组记录。
f.创建支持一般查询的查找参数索引。具有高选择性的列是索引的最好候选列。具有高密度的列是索引糟糕的候选列。原文请找腾讯752018766优,文-论~文^网
http://www.youerw.com(2)使用约束实现数据的完整性
PRIMARY KEY约束在表中定义了主关键字,它是行唯一的标识符,它可以强制实体完整性。在使用PRIMARY KEY约束时考虑以下事实:
每个表只能有一个PRIMARY KEY约束。
键入的值必须是唯一的。
不允许有空值。
PRIMARY KEY约束在指定的列创建唯一的索引,可以指定簇索引和非簇索引(如果
非簇索引先前并不存在,簇索引是默认的)。
UNIQUE约束指定,在一列中的两行不能有相同的值。该约束使用唯一的索引来强制实体的完整性。在已有一个主关键字时UNIQUE约束很有用,例如雇员号,但是必须保证其他标识符(例如,雇员驾驶证号)也是唯一的。在使用UNIQUE约束时,考虑以下事实;
允许有空值。
在一个表中可以设置多个UNIQUE约束。
可以将UNIQUE约束运用于具有唯一值的单列或多列,但不能用于表的主关键字。
通过在指定的列或列组中创建唯一的索引,可以使UNIQUE索引得到强制上一页 [1] [2] [3] [4] [5] [6] 下一页
asp.net文学网站设计+源代码+数据库设计 第5页下载如图片无法显示或论文不完整,请联系qq752018766