数据库设计流程和依据

》_《:

1.需求分析

数据库需求的作用点
1.数据是什么
2.数据有哪些属性
3.数据和属性各自有什么特点

2.逻辑设计

1.使用ER图对数据库进行物理建模

3.物理设计

1.根据数据库自身的特点把物理逻辑转化为物理设计

4.维护和优化

1.新的需求进行建表
2.索引优化
3.大表拆分

需求分析:

1.了解系统中要存储的数据
2.了解数据的存储特点
3.了解数据的生命周期

1.实体与实体之间的关系(1对1,1对多,多对多)
2.实体所包含的属性
3.哪些属性,或者属性的集合可以唯一标示一个实体
4.实体的特性(如增长量)

对一个实体的属性分析应该包括:

1.包括的属性
2.可选的唯一标示属性
3.存储特点(如快增长型,永久型,临时型)(分表分库)

逻辑设计

数据库设计的范式

1.第一范式
2.第二范式
3.第三范式
4.BC范式

1.数据库第一范式:

数据表中的所有字段都是单一属性,不可再分的,这个单一属性是由基本的数据类型所构成的
如,整数,浮点,字符串
通俗来数,第一范式要求数据库中的表都是二维表

2.第二范式:

数据库的表中不存在非关键字段,对任一候选关键字段的部分函数依赖。部分函数依赖是指存在着组合关键字中某一关键字决定非关键字的情况。
通俗来说:所有单关键字的表都符合第二范式

3.第三范式:

第三范式是在第二范式的基础上定义的,如果表中不存在非关键字段对任意候选关键字段的传递函数依赖,都符合第三范式

4.Boyce.Codd范式:

在第三范式的基础上,在数据表中如果不存在任何字段对任一字段候选关键字段的传递函数依赖,则符合Bc范式。
也就是说如果是复合关键字,则符合关键字之间也不能存在函数依赖关系

数据库设计不当会带来的问题

1.操作异常

1.插入异常:如果某个实体随着另一个实体的存在而存在,即为缺少某个实体是无法表示另一个实体,哪个这个表久存在插入异常
2.更新异常:如果更改某表对应的某个实体的单独属性时,需要将多行更新,那么就说这个表存在更新异常
3.删除异常:如果删除表的某一行来反映某实体实例,失效时导致另一个不同实体实例信息丢失,哪个这个表中就存在删除异常

2.数据冗余:

指相同的数据在多个地方存在,或者说表中的某个列可以通过由其他列计算的到

物理设计:

1.选择合适的数据库管理系统
2.建立数据库,表及其字段的命名规范
3.根据所选的DBMS系统选择合适的字段
4.反范式化的设计

如何选择数据库:

商业数据库:
1.Oracle 适合比较大的事务操作,性能较好
2.,SQLServer 只适合在Windows下运行
开源数据库:
1.MySQL 不适合较的的事务操作,性能不如商业数库
2.PgSQL

跨平台性:
Windows:
1.Oracle
2.SQlServer
3.MySQL
4.PgSQL
Windows,Linux,mac
1.Oracle
2.MySQL
3.PgSql

企业级中经常使用:
1.Oracle
2.SQLServer
中小型企业中经常使用:
1.MySQL
2.PgSql

MySQL的存储引擎

1.MyLSAM,不支持 事务, 支持并发的插入表级锁, 主要应用:select insert 忌用读写操作频繁
2.MRG_MYISAM 不支持事务 支持并发插入的表级锁 主要应用分段归档,数据归档 。忌用全局查找多
3.Innodb 支持事务 支持MVCC的行级锁 主要应用事务处理 无禁用情况
4.Archive 不支持事务 , 锁粒度为行级锁 主要用应于日志记录jnsert和select,只支持随机数据读取更快时禁用
5.Ndb Cluster,支持事务,锁粒度为行级锁,主要应用为高可用性,适合大部分场景

表及其字段的命名规范

1.可读性原则:

使用大写和小写来格式化的库对象名来获得可读性

2.表意性原则

对象的名称应该能够描述它所标示的对象

3.长命性原则

尽量少的不使用缩写

数据库字段类型选择原则

1.列的数据类型一方面影响数据存储空的开销,另一方面也会影响数据查询性能,当一个列可以选择多个数据类型时,应该优先考虑数字类型,其次是日期或者二进制类型,最后是字符类型,对于同级别的数据类型,应该优先考虑选择占用空间小的数据类型,比如选定长而不选变长

字段类型和存储空间
TINYINT 1字节
SMALLINT 2个字节
MEDIUMINI 3个字节
INT 4个字节
BINGINT 8个字节
DATE 3个字节
DATETIME 8个字节
TIMESTAMP 4个字节
CHAR(M) M字节, 1<=M<=255
VARCHAR(M) M字节, 1<=M<=255

选择原则从两个方面考虑:

1.在对数据进行比较(查询条件,JOIN条件及排序)操作时:同样的数据,字符处理汪汪比数字处理慢
2.在数据库中,数据处理以页为单位,列的长度越小,越利于性能提升

同一级别的数据类型我们如何选择:

1.char和varchar如何选择:

1.如果列中要存储的数据长度差不多是一致的,则应该考虑用char;否则考虑用varchar
2.如果列中的最大数据长度小于50Byte,则一般考虑用char.如果这个列很少用,则基于节省空间和减少I/O考虑,还是用varchar)
3.一般大于50Byte的列不适用char类型

2.decimal和float如何选择

1.decimal用于存储精确的数据,而float只能用于存储非精确的数据,对于精确度较高的数据可以用decimal存储
2.由于float的存储空间开销一般比decimal小,(精确到7位小数只需要4个字节,而精确到15位只需要8个字节),对于非精度数据优先选择float类型

3.时间类型如何存储:
1.使用int存储时间字段的优缺点

优点:字段长度比datetime小
缺点:使用不方便,要进行函数转换
限制:只能存储到2038-1-19 11:14:07 即为2的32次方
需要存储时间粒度
年 月 日 小时 分 秒 周

2.时间存储的技巧:

如果存储的时间只是存起来很少查询,那么可以用int存储起来,如果是经常查询的时间字段,则不能用int存储

其他选择项的一些注意:

如何选择主键:

1.区分业务主键和数据库主键:
业务主键用于标示业务数据,进行表于表之间的关联;
数据库主键为了优化数据存储(Innodb会生成6个字节的隐含主键)
2.根据数据库的类型,考虑数据是否要顺序增长:
有些数据库是按主键的顺序逻辑存储的
3.主键的字段类型所占空间要尽可能小:
对于使用聚集索引方式存储的表,每个索引后面都会附加主键的信息

避免使用外健约束:

1.降低数据的导入效率
2.减低维护成本
3.虽然不建议使用外键约束,但是相关关联的列上一定要建立索引

避免使用触发器

1.降低数据导入的效率
2.可能会有意想不到的数据异常
3.使业务逻辑变得复杂

关于预留字段

1.无法准确知道预留字段字段的类型
2.无法准确的知道预留字段中所存储的内容
3.后期维护预留字段所有的成本和要增加一个字段所要的成本是相同的
4.严禁使用预留字段

反范式化:

1,反范式化就是为了性能和读取效率的考虑而适当的对第三范式的要求进行违反,而允许存在少量的数据冗余
2.换句话说,反范式化就是使用空间来换取时间

反范式化的的好处

1.减少表的关联数量
2.增加数据的读取效率
3.反范式化一定要适度

数据库的维护和优化

1.维护数据字典
2.维护索引
3.维护表结构
4.在适当的时候对表进行水平拆分或垂直拆分

如何维护数据字典

1.使用第三方工具对数据字典进行维护
2.利用数据库本身的备注字段来维护数据字典

如何维护索引

1.在合适的列建立索引

1.出现在WHERE从句,GROUP从句,ORDER BY 从句中的列
2.可选择性高的列要放在索引的前面
3.索引中不要包含太长的数据类型

2.维护索引的注意事项

1.索引不是越多越好,过多的索引不但会降低写的效率,而且会减低读的效率
2.定期维护索引碎片
3.在SQL语句中不要使用强制索引关键字

表结构的维护:

注意事项

1.使用在线变更表结构的工具
2.同时对数据字典进行维护
3.控制表的宽度和大小

数据库中适合的操作

1.数据库中适合批量操作,逐条操作适合在程序中完成
2.禁止使用Select* 这样的查询,要指定查询的字段,否则会浪费I/O
3.控制使用用户自定义函数
4.不要使用数据库中的全文索引

表的垂直拆分:解决了表的宽度过长问题

1经常查询的列放到一起
2.text,blob等大字段拆分出到附加表中

表的水平拆分:解决表中数据量大的问题

1.通过主键哈希的方式进行,将主键通过Hash key 来分为多个key

.

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第一章 需求分析 1.1 BBS的功能与应用需求 1.1.1论坛的功能 论坛是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都 可以在上面书,可发布信息或提出看法。它是一种交互性强,内容丰富而即使的电子 信息服务系统。用户在论坛站点上可以获得各种信息服务、发布信息、进行讨论、聊天 等等。像日常生活中的黑板报一样,论坛按不同的主题分为许多版块,版面的设立依据 是大多数拥护的要求和喜好,用户可以阅读别人关于某个主题的看法,也可以将自己的 想法毫无保留地帖到论坛中。 随着计算机网络技术的不断发展,论坛的功能越来越强大,目前论坛的主要功能有以 下几点: (1) 供用户自我选择阅读若干感兴趣的专业组和讨论组内的信息。 (2) 可随意检查是否有新消息发布并选择阅读。 (3) 用户可在站点内发布消息或文章供他人查阅。 (4) 用户可就站点内其他人的消息或文章进行评论。 (5) 同一站点内的用户互通电子邮件, 设定好友名单 1.1.2应用需求 现实生活中的交流存在时间和空间上的局限性,交流人群范围的狭小,以及间断的交 流,不能保证信息的准确性和可取性。因此,用户需要通过网上论坛也就是论坛的交流 扩大交流面,同时可以从多方面获得自己的及时需求。同时信息时代迫切要求信息传播 速度加快,局部范围的信息交流只会减缓前进的步伐。论坛系统的开发能为分散于五湖 四海的人提供一个共同交流、学习、倾吐心声的平台,实现来自不同地方用户的极强的 信息互动性,用户在获得自己所需要的信息的同时也可以广交朋友拓展自己的视野和扩 大自己的社交面。 1.3数据字典 BBS论坛系统的数据流程图如下 说明: ——访问信息, ——用户信息, ——发表帖子信息, 更新帖子信息, 搜索信息 ——获取帖子信息, 回复信息, 搜索用户, 更新用户信息, 获取用户资料 图2.6 数据流程图 概念结构设计 2.2实体E-R图 2.2.1用户E-R图 2.2.2主贴E-R图 2.2.3版块E-R图 2.2.4回帖E-R图 2.3实体总体E-R图 逻辑设计 数据模式 根据论坛的功能与应用需求的简要介绍,可以得出设计论坛系统所要的基本实体有BBSU ser(用户)、BBSSection(版块)、BBSTopic(主贴)、BBSReply(回复贴)。论坛又称BBS。 表1-3-1  BBSUsers 用户信息表 "表中列名 "数据类型 "可否为空 "说明 " "UID "Int "not null(主键) "用户编号 " "UName "char "not null "用户姓名 " "UPassword "char "not null "用户密码 " "UEmail "char "not null "用户Email " "UBirthday "datetime "not null "用户生日 " "USex "bit "not null "用户性别 " "UClass "Int "not null "用户等级 " "UStatement "varchar "not null "用户个人说明 " "URegDate "datetime "not null "用户注册时间 " "UState "tinyint "not null "用户状态 " "UPoint "in "not null "用户积分 " 表1-3-2  BBSTopic主贴信息表格 "表中列名 "数据类型 "可否为空 "说明 " "TID "Int "not null(主键) "主帖编号 " "TSID "Int "not null "主帖版块编号 " "Tuid "Int "not null "主帖用户编号 " "TReplyCount "Int "not null "主帖回复次数 " "TEmotion "Char(10) "not null "主帖表情 " "TTopic "Varchar "not null "主帖标题 " "TContents "Text "not null "主帖内容 " "TTime "Datetime "not null "发帖时间 " "TClickCount "Int "not null "主帖点击次数 " "TLastClickT "Datetime "not null "主帖最后点击时间" 表1-3-3  BBSSection板块信息 "表中列名 "数据类型 "可否为空 "说明 " "sid "Int "Not null(主键) "版块编号 " "SName "char "Not null "版块名称 " "SMasterID "Int "Not null "版主编号 " "SStatement "Varchar "Not null "版块说明 " "SClickCo
数据库系统原理 数 据 库 设 计 步 骤 简 述 数据库设计步骤简述 数据库技术是信息资源的开发、管理和服务的最有效的手段,因此数据库的应用范 围越来越广,从小型的单项事物处理系统到大型的信息服务系统大都利用了先进的数据 库技术来保持系统数据的整体性、完整性和共享性。 数据库应用软件和其他软件一样,也有它的诞生和消亡。数据库应用软件作为软件 ,在其生命周期可以看作有三个大的时期:软件定义时期,软件开发时期和软件运行时 期。 按照规范化设计方法,从数据库应用系统设计和开发的全过程来考虑,将数据库及 其应用软件系统的生命周期的三个时期又可以细分为六个阶段:需求分析、概念结构设 计、逻辑结构设计、物理结构设计、实施及运行维护。 一、需求分析 信息需求:指目标系统设计的所有实体、属性、以及实体间的联系等,包括信息的 内容和性质,以及由信息需求导出的数据需求。 处理需求:指为得到需要的信息而对数据进行加工处理的要求,包括处理描述,发 生的频度、响应时间以及安全保密要求等。进行数据库设计首先必须准确了解与分析用 户需求。需求分析是真个设计过程的基础,是最困难、最耗费时间的一步。作为地基的 需求分析是否做得充分与准备,决定了在其上构建数据库大厦的速度与质量。需求分析 做得不好,甚至会导致整个数据库设计返工重做。 需求任务分析: 需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等), 充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此 基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当 前应用需求来设计数据库。 需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安 全性与完整性要求。信息要求是指用户需要从数据库中获得信息的内容与性质。由用户 的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。处理要求是指用户要 求完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理 。新系统的功能必须能够满足用户的信息要求、处理要求、安全性与完整性要求 需求分析的方法: 通过调查了解了用户需求后,需要进一步分析和表达用户的需求。分析和表达用户 需求的方法主要包括自顶向下和自底向上两类方法。 二、概念设计 将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。 概念结构是对现实世界的一种抽象,即对实际的人、物、事和概念进行人为处理, 抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描 述。 概念结构独立于数据库逻辑结构,也独立于支持数据库的DBMS。它是现实世界与机 器世界的中介,它一方面能够充分反映现实世界,包括实体和实体之间的联系,同时又 易于向关系、网状、层次等各种数据模型转换。它是现实世界的一个真实模型,易于理 解,便于和不熟悉计算机的用户交换意见,使用户易于参与,当现实世界需求改变时, 概念结构又可以很容易地作相应调整。因此概念结构设计是整个数据库设计的关键所在 。 设计概念结构通常有四类方法: 1、自顶向下:首先定义全局概念结构的框架,然后逐步细化。 2、自底向上:首先定义各局部应用的概念结构然后将它们集成起来,得到全局概念 结构。这是最经常采用的策略是自底向上方法。即自顶向下地进行需求分析,然后再自 底向上地设计概念结构 3、逐步扩张:首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐 步生成其他概念结构,直至总体概念结构。 4、混合策略:将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结 构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构 分E-R图经过合并生成的是初步E-R图。修改、重构初步E- R图以消除冗余主要采用分析方法 视图集成后形成一个整体的数据库概念结构,对该整体概念结构还必须进行进一步 验证,确保它能够满足下列条件: 整体概念结构内部必须具有一致性,即不能存在互相矛盾的表达。 整体概念结构能准确地反映原来的每个视图结构,包括属性、实体及实体间的联系 整体概念结构能满足需要分析阶段所确定的所有要求 整体概念结构最终还应该提交给用户,征求用户和有关人员的意见,进行评审、修 改和优化,然后把它确定下来,作为数据库的概念结构,作为进一步设计数据库的依据 。 三、逻辑设计 设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合 适的DBMS。设计逻辑结构时一般要分三步进行: 将概念结构转换为一般的关系、网状、层次模型 将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换 对数据模型进行优化 关系模型的逻辑结构是一组关系模式的集合。而E- R图则是由实体、实体的属性和实体之间的联系三个要素组成的。所以将E- R图转换为关
数据库设计与优化全文共9页,当前为第1页。数据库设计与优化全文共9页,当前为第1页。数据库设计与优化 数据库设计与优化全文共9页,当前为第1页。 数据库设计与优化全文共9页,当前为第1页。 摘 要:数据库技术是计算机科学中发展最快的领域之一,也是应用最广的技术之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。本文讨论数据库设计流程的所有重要方面,包括需求分析阶段;概念设计阶段;逻辑设计阶段;物理设计阶段;数据库实施阶段;数据库运行维护阶段的六个阶段,并提出数据库设计中所出现的各种问题,并归纳分析了解决这些问题的种种途径。 关键词:数据库设计;数据冗余;数据库管理系统 引言:近年来,随着多媒体技术、空间数据库技术和计算机网络的飞速发展,数据库系统的发展十分迅速,应用领域愈来愈广,企事业单位、政府部门的行政管理、办公自动化;企业生产计划管理;军队物资管理;银行财务管理;铁路、民航飞机票预定系统;铁路车次调度系统;宾馆、酒店房间预定系统;图书馆管理;政府部门的计划和统计系统;人口普查;气象预报;地震,勘探等大量数据的贮存和统计分析;以及最近google推出的全球卫星定位系统、手机GPRS定位系统,其背后都是一个规模巨大的数据库。   如何合理高效地为政府管理人员或企业高层决策人员、设计数据库管理系统服务已成为当务之急。好的灵活的数据库设计,既能给前台应用程序的设计带来简便,又能给后台数据库的编码和扩充,和系统的维护带来极大的便利。现在关系型数据库已成为业界的主流,而我们讨论的也主要是基于关系型数据库的。   目前设计数据库系统主要采用的是以逻辑数据库设计和物理数据库设计为核心的规范设计方法。其中逻辑数据库设计是根据用户要求和特定数据库管理系统的具体特点,以数据库数据库设计与优化全文共9页,当前为第2页。数据库设计与优化全文共9页,当前为第2页。设计理论为依据,设计数据库的全局逻辑结构和每个用户的局部逻辑结构。物理数据库设计是在逻辑结构确定之后,设计数据库的存储结构及其他实现细节。 在数据库设计开始之前,数据库设计人员将始终参与数据库设计,他们的水平直接影响了数据库系统的质量:用户在数据库设计中也举足轻重的,他们主要参加需求分析和数据库的运行维护,他们的积极参与不但能加速数据库设计,而且是决定数据库设计的质量的又一因素。程序员和操作人员则在系统实施阶段参与进来,分别负责编制程序和准备软硬环境。 数据库设计的总流程 一、 数据库设计的六个阶段 各种规范化设计方法在设计步骤上存在差别,各有千秋。通过分析、比较与综合各种常见的数据库规范化设计方法,一般将数据库设计分为以下六阶段:需求分析阶段;概念设计阶段;逻辑设计阶段;物理设计阶段;数据库实施阶段;数据库运行维护阶段。(如下图所示) 二、 需求分析 要设计一个有效的数据库,必须用系统工程的观点来考虑问题。在系统分析阶段,设计者和用户双方要密切合作,共同收集和分析数据管理中信息的内容和用户对处理的需求。在调研中,首先要了解数据库所管理的数据将覆盖哪些工作部门,每个部门的数据来自何处,它们是依照什么样的原则处理加工这些数据的,在处理完毕后输出哪些信息到其他部门。其次要确定系统的边界,在与用户充分讨论的基础上,确定计算机数据处理范围,确定哪些工作要由人工来完成,确定人机接口界面。最后得到业务信息流程图。信息流程图中的每个子系统都可抽象为以下所示的框图。 数据库设计与优化全文共9页,当前为第3页。数据库设计与优化全文共9页,当前为第3页。在系统分析过程中,要确定数据管理的信息要求和处理要求。信息要求是指用户需要从数据库中获得信息的内容与性质。由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。处理要求是指用户要求完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。新系统的功能必须满足用户的信息要求,处理要求,安全性和完整性要求。这一阶段的工作是否能准确地反映实际系统的信息流程情况和用户对数据库系统的要求,直接影响到以后各阶段的工作,并影响到数据库系统将来运行的效率,因为分析阶段的工作是整个数据设计的基础。 三、 概念设计 在需求分析阶段数据库设计人员充分调查并描述了用户的应用需求,但这些应用需求还是现实世界的具体需求,应该首先把他们抽象为信息世界的结构,才能更好地、更准确地用某个DBMS实现用户的这些需求。将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构独立于数据库逻辑结构,也独立于支持数据库的DBMS。它是现实世界与机器世界的中介,它一方面能够充分反映现实世界,包括实体和实体之间的联系,同时又易于向关系、网状、层次等各种数据模型转换。它是现实世界的一个真实模型,易于理解,便于和不熟悉计算机的用户交换意见,使用户易于参与

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值