数据库设计相关

来源:互联网 发布:淘宝网限制发布 编辑:程序博客网 时间:2024/05/21 21:41

深蓝居博客的博主写了一系列数据库设计方面的文章,我认为这里面的每一篇文章写得都非常好,浅显易懂,强烈推荐
地址:
http://www.cnblogs.com/studyzy/category/466850.html

Database Design

数据库模型设计——历史与版本设计
摘要: 在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据。对于这种需求,我们可以使用保留历史数据或者使用版本来实现。 为了能够保留历史数据,在版本设计时有以下方案: 一、使用版本号 版本号是一种常见的版本设计方案,就是在要进行历史数据保留的表上面增加一个版本号字段,该字段可以是DateTime类型,也可以是int类型,每进...阅读全文
posted @ 2013-09-09 17:28 深蓝 阅读(129) | 评论 (0) 编辑
数据库模型设计——关系的实现
摘要: 在实体关系模型中,我们知道有三种关系:一对一、一对多、多对多。这只是概念上的关系,但是在真实的关系数据库中,我们只有外键,并没有这三种关系,那么我们就来说一说在关系数据库管理系统中,怎么实现这三种关系。一对多这里先讲解一对多,因为这个关系最简单。一对多和多对一是一回事,所以就不再提多对一这个词。一对多的概念是一个对象A会对应多个对象B,而从B的角度看,一个对象B只会对于一个对象A。比如说班级和学生就是一对多关系。一个班级对应多个学生,一个学生只会对于一个班级。一对多的关系之所以说简单,是因为RDBMS的外键其实就是表示一对多关系。对于一对多关系,我们只需要在“多”的这个表中建立“一”的外键关联阅读全文
posted @ 2013-09-09 14:22 深蓝 阅读(132) | 评论 (0) 编辑
数据库模型设计——主键的设计
摘要: 在数据库设计时,主要就是对实体和关系的设计,实体表现出来就是表,关系表现出来就是外键。而对于一个表,由两部分组成:主键和属性。主键的简单定义就是表中为每一行数据的唯一标识。其实更准确的说法,每一行数据的唯一标识是候选键(Candidate Key),一个表中可以有很多个候选键,主键是候选键中的一个,主要用于更方便的检索和管理数据。一个表中可以有多个候选键,但是只有一个主键。由于主键常常用于检索数据,也用于表之间的关联,所以主键的设计的好坏将会严重影响数据操作的性能。下面来介绍下主键设计的几个考虑因素。主键的数据类型最常见的主键数据类型是数字类型、固定长度的字符类型和GUID类型。通常情况下,R阅读全文
posted @ 2013-09-09 10:36 深蓝 阅读(156) | 评论 (1) 编辑
数据库设计范式1——三范式
摘要: 一讲到数据库设计,大家很容易想到的就是三范式,但是第四、第五范式又是什么,不是很清楚,三范式到底怎么区分,也不清楚,作为数据库设计的基础概念,我再讲解下数据库范式。 Normal form Brief definition 1NF First normal form Table ...阅读全文
posted @ 2013-09-06 17:19 深蓝 阅读(106) | 评论 (0) 编辑
可动态扩展的数据库模型设计
摘要: 在通常的数据库设计中,我们定义了每个实体有多少个属性,每个属性的数据类型是什么,有多长,是否允许为空,有什么约束条件等,这些定义是完全静态的,系统创建时就全部定义好,不能动态修改。但是对于实体的属性变化很快,或者实体和属性由用户在系统中自行定义的情况下,那么就需要一个可以动态扩展的数据库模型,以保存各种动态产生的数据。 比如我们要做一个电子商务网站,需要建立一个商品表以保存各种要卖出的商品的属性...阅读全文
posted @ 2013-09-02 21:09 深蓝 阅读(186) | 评论 (4) 编辑
多语言系统的数据库设计
摘要: 之前做的项目涉及到中国大陆和纽伦新港的用户使用,也就需要做成一个多语言的系统,现在总结下其中一些经验和思考。 首先我们需要确认我们要做的系统,多语言到底是要做多少种语言,以后会不会要求增加更多的语言。比如我们做一个给中国大陆和纽伦新港使用的系统,可以确定的语言就是简体中文、繁体中文和英语,而且可以确定以后也不会增加语言。确定以后是否需要增加语言这一点很重要,决定了我们在数据库设计时,是否需要考虑...阅读全文
posted @ 2013-04-03 17:13 深蓝 阅读(515) | 评论 (3) 编辑
数据库中计算值的更新方法
摘要: 在做项目时,经常在项目中会遇到有些值是通过其他表经过计算得来的,然后将计算结果保存到数据库中。比如在一个休假系统中,一个员工每年已休天数就是一个计算值,通过SUM员工的所有有效休假申请单可获得。再比如交易系统中的余额字段,对一个账号的所有流水进行SUM,所有收入减去所有支出就是余额。再比订单系统中,订单的总金额字段,就是订单明细的金额的SUM值。对于这些字段,都有一个共性,那就是这个字段是可以通过其他表的字段计算出来的,可以认为这个字段是冗余的,如果没有这个字段,那么我们的系统仍然可以设计出来并且功能一个都不会少。这个字段主要为了提高查询的性能,出报表时也方便,效率高。既然是一个冗余字段,那么阅读全文
posted @ 2013-03-25 17:47 深蓝 阅读(274) | 评论 (0) 编辑
数据库SQL开发的一些要点
摘要: 前段时间做一个项目,其中涉及到报表部分编写了大量复杂的SQL,比如其中的一个存储过程就有700多行。项目上线过后,进入维护阶段,发现大量的SQL很难维护。于是总结点经验教训:设计一、数据库命名遵循一些通用规范。数据库命名规范是个基本的命名标准,每个团队都有自己的命名规范,我们做项目中以全大写下划线分割作为标准。表名或字段名要准确表达其业务含义。以DATE结尾的数据类型都是date类型,以TIME结尾的数据类型是datetime类型。以IS开头的都是bool类型。二、大数据对象列应该独立成表。比如员工照片是一个blob对象,按照范式来说,这个字段完全可以放在Employee表中,但是出于性能的考阅读全文
posted @ 2013-03-18 16:58 深蓝 阅读(301) | 评论 (0) 编辑
数据库设计指南之我见
摘要: 网上流传着一份关于数据库设计的文档《数据库设计指南》收集了几十个数据库设计大牛在项目中总结出来的Best Practice最佳实践,我最近也花了点时间细读并结合自身实际进行了总结,感觉自己在项目中还是有不少不足的地方,下面逐条分析下。(黑字为原文,红字为我的见解)数据库设计指南 如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据 库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的 老师也比不过经验的教诲。所以我们最近找了些对数据库设计颇有造诣的专业人士给大家传授一些设 计数据库...阅读全文
posted @ 2012-05-08 16:18 深蓝 阅读(759) | 评论 (0) 编辑
对象的继承关系在数据库中的实现方式和PowerDesigner设计
摘要: 在面向对象的编程中,使用对象的继承是一个非常普遍的做法,但是在关系数据库管理系统RDBMS中,使用的是外键表示实体(表)之间的关系,那么对于继承关系,该怎么在RDBMS中表示呢?一般来说有3种实现方式:Concrete Table Inheritance(具体表继承)Single Table Inheritance(单表继承)Class Table Inheritance(类表继承)比如在一个教务系统中,有老师学生2个对象,这两个对象都是“人”对象的子类,所以我们可以建立一个Person表,该表有人的公共属性:姓名、性别等,还有就是数据的唯一标识,一个ID。而教师对象有教师的特有属性,比如职称阅读全文
posted @ 2011-08-16 15:30 深蓝 阅读(2200) | 评论 (0) 编辑
分析与设计数据库模型的简单过程
摘要: 近期在做一个业务系统的分析和数据模型设计,工作这几年也做过好几个项目的数据库模型的设计,期间也算是积累了一定的经验吧,这次有机会就写写我的数据库模型设计过程与方法。在数据库设计中,设计的目标就是要建立E-R图(实体-关系图),在PowerDesigner中就是要建立概念模型或者逻辑模型。既然是实体-关系图,所以整个建模的核心就是围绕建立“实体”对象和找到实体之间的“关系”。实体分为两部分:标识(主键)和属性。标识是实体的一个或多个属性的组合,用于唯一的表标识出实体中的每一个数据。在确认一个实体的过程中,首先就是要确认实体的主键,只要找到了实体的主键,那么剩下的就是实体的属性。1.确认核心实体在阅读全文
posted @ 2010-01-11 11:48 深蓝 阅读(3390) | 评论 (7) 编辑