第十四章数据库设计本章主要内容14.1常规文件和数据库14.2系统分析员的数据库概念14.3数据库设计前置条件-规范化14.4常规文件设计14.5现代数据库设计14.6数据库设计前景14.1常规文件和数据库14.1常规文件和数据库常规文件的优点和缺点优点•面向单个应用,易于执行•性能好,处理速度快缺点•难以用于跨应用的共享•不灵活和不可扩展,难以适应新需求•需要在多个文件冗余存储14.1常规文件和数据库数据库文件的优点和缺点优点•在多个应用和系统之间共享相同数据•数据与应用的独立性增加了灵活性•超级可伸缩性,以满足组织变化的需求缺点•更加复杂•性能较慢•对DBMS和数据库专家的投资•由于使用共享数据而增加的脆弱性14.2系统分析员的数据库概念14.2.1字段Field字段:一个数据属性的物理实现Primarykey主键:其值唯一的确定了文件中的一个记录的字段Secondarykey次键:数据库的替代标识符Foreignkey外键:指向数据库中另一个文件记录的指针Descriptivefield描述性字段:其他存储业务数据的字段14.2.2记录Record记录:按照预定义格式安排的字段集合固定长度记录:每个记录实例都有相同的字段、相同数量的字段和相同的逻辑长度可变长度记录:允许同一个文件的不同记录具有不同长度Blockingfactor分块因子:包含在一个读或写操作中的逻辑记录数。14.2.3文件和表•主文件:包含了相对稳定的记录•事务文件:包含了描述业务事件的记录,描述这些事件的数据通常具有有限的有效生命期。•文档文件:存储了历史数据•归档文件:包含了已经从联机存储中删除了的主文件和事务文件记录。•表查询文件:包含相对静态的数据,它可以被应用程序共享以维护其一致性并改进性能•审计文件:修改其他文件的特殊记录14.2.4数据库•可以简单的把数据库看作是一组相互关联的文件,所谓相互关联,是指一个文件中的记录可以关联或者连接另一个文件中的记录14.2.4.1数据架构•数据架构定义了企业如何开发与使用文件和数据库来存储组织中的所有数据;要使用的文件和数据库技术;管理数据资源的管理机构•运行(事务)数据库支持主要信息系统的日常运行和业务事务处理•数据仓库存储从运行数据库和常规文件中提取的数据。一个现代的数据架构14.2.4.2数据库架构数据库架构–支持数据架构的数据库技术,包括数据库引擎、数据库工具、用于分析和设计的数据库CASE工具以及数据库应用开发工具。数据库管理系统(DBMS)–创建、访问、控制和管理数据库的专用软件。–核心是数据库引擎。–数据定义语言Adatadefinitionlanguage(DDL):物理地定义表、字段、结构化关系等。–数据处理语言Adatamanipulationlanguage(DML):创建、阅读、更新、删除数据库中的记录,在数据库不同记录之间进行导航。典型的数据库管理系统架构14.2.4.3关系数据库管理系统关系数据库–在一系列二维表中存储数据,这些表通过外键互相关联。每个表由命名列(字段或属性)和任意数量的未命名行(记录)构成。–关系数据库中的DDLandDML称为SQL,SQL支持全部的数据库创建、维护和使用操作–触发器:嵌入在表中的程序,当修改另一个表时,它就被自动的调用。–存储过程是嵌入在表中的程序,它可以从一个应用程序调用。从逻辑数据模型……到物理数据模型(关系模式)一个关系型计算机数据库管理系统用户界面14.3数据库设计的前置条件-规范化什么是好的数据模型?•简单•无冗余•灵活且可适应性通过规范化实现14.4常规文件设计文件设计步骤:•首先完成输入和输出设计•数据模型的基本实体被设计成主记录或者事务记录–主文件一般是固定长度记录–数据模型中的相关实体形成可变长记录•文件组织结构–顺序Sequential–索引Indexed–散列Hashed–ISAM/VSAM14.5现代数据库设计•提供对数据的有效存储、修改、访问•数据库应该可靠—存储的数据应该具有高度的完整性,以促进用户信任数据•可适应和可扩展•支持信息系统的业务需求数据库设计的目标14.5现代数据库设计第三范式的逻辑数据模型14.5.2数据库模式数据库设计的方法•为每个实体创建表•标识主键,并且实现成表中的一个索引•每个次键实现成表中的索引•对于任何被确定为子集准则需求的非键属性,应该建立一个索引•如此实现每个外键•属性将用字段实现:数据类型、字段的大小、空或非空、域、默认值14.5.2数据库模式LogicalDataTypetobestoredinfield)PhysicalDataTypeMSAccessPhysicalDataTypeMicrosoftSQLServerPhysicalDataTypeOracleFixedlengthcharacterdata(useforfieldswithrelativelyfixedlengthcharacterdata)TEXTCHAR(size)orcharacter(size)CHAR(size)Variablelengthcharacterdata(useforfieldsthatrequirecharacterdatabutforwhichsizevariesgreatly--suchasADDRESS)TEXTVARCHAR(maxsize)orcharactervarying(maxsize)VARCHAR(maxsize)Verylongcharacterdata(useforlongdescriptionsandnotes--usuallynomorethanonesuchfieldperrecord)MEMOTEXTLONGVARCHARorLONGVARCHAR2IntegernumberNUMBERINT(size)orintegerorsmallintegerortinuintegerINTEGER(size)orNUMBER(size)DecimalnumberNUMBERDECIMAL(size,decimalplaces)orNUMERIC(size,decimalplaces)DECIMAL(size,decimalplaces)orNUMERIC(size,decimalplaces)orNUMBER不同的数据库技术的数据形式14.5.2数据库模式数据库设计的方法超类/子类实体:每个超类和子类可以用一个独立表实现如果子类具有类似的大小和数据内容,则数据库管理员可以选择合并子类成为超类,以创建一个表超类的属性可以复制到每个子类的表中14.5.2数据库模式物理数据库模式14.5.3数据完整性和访问完整性•键完整性–每个表都应该有一个主键。•域完整性–必须设计合适的控制确保每个字段都有合法值。•访问完整性–确保外键值匹配相关表中的主键值。–没有限制–删除:瀑布式—删除表中的一个记录必须自动的紧跟着删除表中的匹配记录–删除:限制式—不允许删除表中记录,除非与之匹配的记录已经从相关的表中删除–删除:置空—表中一个记录的删除必须自动的紧跟着将相关表中任何相匹配的键值设置为NULL。14.5.4角色角色——外键的名字,反映了外键在表中的用途。tblProductPRODUCT_NUMBERPKtblMemberOrderedProductPRODUCT_NUMBERFKORDERED_PRODUCT_NUMBER14.5.5数据库分布和复制数据库分布分析•数据的集中•数据的水平分布:每个表(或表中的整个行)将被分配到不同数据库服务器和地点。对于需要综合多个站点数据的管理分析,将数据重新组合起来并不总是那么容易。•数据的垂直分布•数据的复制14.5.7规划数据库容量•对于每个表,求和字段大小,得到的就是表的记录大小•对于每个表,记录大小乘上要被包含在表中的实体实例数量,建议考虑一段合理时间段的增长,得到的就是表大小•求和表大小,得到的就是数据库大小•作为备选,加上一个空间余量缓冲,以考虑未预期的因素或者上面的不正确估计,得到的就是预期的数据库容量