如何设计数据库(1)?(芮)

为什么需要设计数据库
       这里我们思考两个问题:
修建茅屋需要设计吗?修建大厦需要设计吗?
结论是:当数据库比较复杂(如数据量大,表较多,业务关系复杂)时,我们需要先设计数据库;
因为,良好的数据库设计能够:
q       节省数据的存储空间
q       能够保证数据的完整性
q       方便进行数据库应用系统的开发
糟糕的数据库设计:
q       数据冗余、存储空间浪费
q       内存空间浪费
q       数据更新和插入的异常

软件项目开发周期
       我们再来看看软件项目的开发周期:
•          需求分析阶段:分析客户的业务和数据处理需求;
•          概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;
•          详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;
•          代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用;
•          软件测试阶段:……
•          安装部署:……

设计数据库
•          在需求分析阶段,设计数据库的一般步骤为:
–         收集信息
–         标识对象
–         标识每个对象的属性
–         标识对象之间的关系
•          在概要设计阶段和详细设计阶段,设计数据库的步骤为:
–         绘制E-R图
–         将E-R图转换为表格
–         应用三大范式规范化表格

下面我们以一个BBS简易论坛的数据库设计为例来看看设计数据库的步骤:

•          收集信息:
   与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务
BBS论坛的基本功能:
l        用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息;
l        用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等;
l        论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等;

•          标识对象(实体-Entity)
    标识数据库要管理的关键对象或实体
实体一般是名词:
l        用户:论坛普通用户、各版块的版主。
l        用户发的主贴
l        用户发的跟贴(回贴)
l        版块:论坛的各个版块信息

•          标识每个实体的属性(Attribute)
 
•          标识对象之间的关系(Relationship)
l        跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴;
l        版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况;
l        主贴和版块有主从关系:需要表明发贴是属于哪个版块的;
l        跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的;

•          绘制E-R图
 

•          将E-R图转化为表格
•          将各实体转换为对应的表,将各属性转换为各表对应的列
•          标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列
•          在表之间建立主外键,体现实体之间的映射关系

 

这里我们绘制ER图可以使用微软的Word或VISIO以及Sybase公司的PowerDesigner,它主要用于和客户沟通交流意见,并反复修改,直到客户确认。客户确认后,再将E-R图转换为表。上面我们已经做好了这个工作。那接下来就是最后一步:应用三大范式对设计的多张表进行审核并规范化表的结构。
时间: 2024-11-07 06:50:33

如何设计数据库(1)?(芮)的相关文章

[数据库设计]数据库设计三大范式

为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个

[转]oracle设计数据库应选择正确的数据类型

原文地址:http://blog.sina.com.cn/s/blog_5014663501007n40.html 在设计数据库的时候,选择正确的数据类型,往往可以避免很多的问题,正确理解数据库的类型,对于存储空间规划,应用性能调整都会很有帮助,下面是我个人的一点总结: 1. Char 定长格式字符串,在数据库中存储时不足位数填补空格,不建议使用,会带来不必要的麻烦 a.  字符串比较的时候,如果不注意(char不足位补空格)会带来错误 b.  字符串比较的时候,如果用trim函数,这样该字段上

mysql之设计数据库

设计数据库的步骤 1.充分了解需求文档2.从需求文档中抽实体 实体:就是真实存在的事物(名词) 3.通过需求抽出每个实体的属性 实体的属性:就是实体的描述以及特征 4.分析实体之间关系建立关系 实体的关系:就是事物与事物存在的联系 5.将实体,属性 表间的关系转化为E-R图 长方形 表示 实体 椭圆 表示实体的属性 菱形 表示实体之间关系 6.将实体转化为表结构 实体名称:就是表名 实体属性: 就是其的字段 7.根据需求和需要 设置每个表的主键,设置表间关系等

Synopsys.milkway.vH-2013.Linux32_64 2CD设计数据库

Synopsys.milkway.vH-2013.Linux32_64 2CD设计数据库Synopsys的Milkway设计数据库已对第三方开放访问,该数据库是Galaxy设计平台的关键组成部分.Galaxy设计平台将通过使■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□ + 诚信合作,保证质量!!!长期有效: + 电话TEL:18980583122 客服 QQ:1140988741 邮件(Email):[email protected] ■□■□■□■□■□■□■□■□

20个设计数据库的最佳实践指南

数据库设计看上去很简单,但是如果不经意随意设计,可能会为日后维护拓展或性能方面埋下祸根.以下是20个设计数据库的最佳实践指南: 1. 使用完整的一致的数据表名称和字段名,如:School, StudentCourse, CourseID 2.数据表名称使用单数,比如使用StudentCourse 而不是StudentCourses,数据表代表实体的一个集合,因此没有必要使用复数名称. 3. 数据表名称不要使用空格,比如StudentCourse 比Student Course更好. 4.数据表名

用面向对象的思维方式来设计数据库

场景 我们有多种类型订单:实物订单.特享商户订单.核销订单.生活缴费订单.电影票订单.机票订单.以及以后会持续新增的未知类型订单,它们都存放在不同的订单类型表中 影响 导致有些业务做起来会比较痛苦 比如: 统计当前用户未付款订单总数 在列表中显示当前用户在某个时间段内所有未支付订单的信息(实现方式如上) 例外还会有个未知因素:持续新增的未知类型订单 每新增一种内型订单,上面的实现都将随之新增业务代码.各种蛋疼. 思路 上次换工作,面试遇到一道面试题,如下: "请设计数据库,用来存放 老师.学生等

设计数据库需要考虑到的问题

成功的管理系统=50% 的业务+(25%的数据库+25%的程序) 1.考察现有系统环境    大多数数据库项目都不是从头开始建立的,通常机构内总会存在用来满足特定需求的现有系统.显然,现有系统并不完美,否则你就不必再建立新系统了.但是对旧系统的研究可以让你发现一些可能会忽略的细微问题.一般来说,考察现有系统对你绝对有好处. 2.充分预计需求的升级趋势    询问用户如何看待未来需求变化非常有用,这样做可以达到两个目的:首先,可以清楚地了解应用设计在哪个地方应该更具灵活性以及如何避免性能瓶颈:其次

使用PowerDesigner设计数据库

使用PowerDesigner设计数据库 设计数据库有如下6个主要步骤: 1.需求分析:了解用户的数据需求.处理需求.安全性及完整性要求: 2.概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型: 3.逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图: 4.物理结构设计:设计数据的存储结构和存取方法,如索引的设计: 5.系统实施:组织数据入库.编制应用程序.试运行: 6.运行维护:系统投入运行,长期的维护工作. 在此我要说的是使用PowerDesigner设计数据库的

设计数据库步骤

设计数据库 •          在需求分析阶段,设计数据库的一般步骤为: –         收集信息 –         标识对象 –         标识每个对象的属性 –         标识对象之间的关系 •          在概要设计阶段和详细设计阶段,设计数据库的步骤为: –         绘制E-R图 –         将E-R图转换为表格 –         应用三大范式规范化表格 下面我们以一个BBS简易论坛的数据库设计为例来看看设计数据库的步骤: 收集信息: 与该系统