数据库设计 订阅
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。 展开全文
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。
信息
范    围
使用数据库的各类系统
外文名
Database Design
设计内容
需求分析、概念结构设计、逻辑结构设计等
中文名
数据库设计
设计原则
一对一设计、独特命名、双向使用
目    的
数据库及其应用系统
数据库设计定义
数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。数据库系统需要操作系统的支持。数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
收起全文
精华内容
参与话题
问答
  • 数据库设计(E-R图,数据库模型图,三大范式)

    万次阅读 多人点赞 2018-08-30 13:34:49
    数据库设计的概念 数据库设计是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程. 二.数据库设计的重要性 如果一个数据库没有进行一个良好的设计,那么这个数据库完成之后他的缺点是: 1....

    一.数据库设计的概念

    数据库设计是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程.

    二.数据库设计的重要性

    如果一个数据库没有进行一个良好的设计,那么这个数据库完成之后他的缺点是:

    1.效率会很低

    2更新和检索数据时会出现很多问题,

    反之,一个数据库被尽心策划了一番,具有良好的设计,那他的优点是:

    1.效率会很高.

    2.便于进一步扩展.

    3.使得应用程序的开发变得更容易.

    三.设计数据库的步骤

    1.需求分析阶段:分析客户的业务和数据处理需求.

    2.概要设计阶段:他主要就是绘制数据库的E-R图.

    3.详细设计阶段:应用数据库的三大范式进行审核数据库的结构.

    总结:在进行数据库的系统分析时,都以下列4点位参考的基本步骤.

    01.收集信息.

    02.标识实体.

    03.标识每个实体需要储存的详细信息.

    04.标识实体之间的关系.

    四.学会绘制E-R图

    绘制E-R图首先要了解什么是实体,什么是属性,什么是联系.

    1.首先实体是指现实世界中具有区分其他事物的特征或属性与其他实体有联系的实体,针对于数据库中的表而言实体是指表中一行一行特定数据,但我们在开发中,也常常把整个表称为一个实体.

    2.属性可以理解为实体的特征,针对于数据库中的表而言实体是指表中的列.

    3.联系是两个或多个实体之间的关联关系.

    4.实体关系图:
    这里写图片描述

    例:酒店管理系统E-R图:
    这里写图片描述

    五.映射基数

    1.一对一:X中的一个实体最对与Y中的一个实体关联,并且Y中的一个实体最多与X中的一个实体关联.

    Eg:一个人只有一张身份证.

    2.一对多:X中的一个实体可以与Y中的任意数量的实体关联;Y中的一个实体最多与X中的一个实体关联.

    Eg:一个班级有多名学生.

    3.多对一:X中的一个实体最多与Y中的一个实体关联;Y中的一个实体可以与X中的任意数量的实体关联.

    Eg:客人与客房之间的关系,一个客人只能住一间客房.

    4.多对多:X中的一个实体可以与Y中的任意数量的实体关联,反之亦然.

    Eg:学生和课程之间的关系,一个学生可以有多门课程,一门课程可以对应多名学生.

    六.绘制数据库模型图

    以酒店管理系统为例:
    这里写图片描述

    七.数据库规范化

    如果数据库没有进行相应的规范设计,虽然在查询数据库可能会比较容易,但有时会造成一些问题,主要的问题如下:

    1.信息重复(会造成储存空间的浪费及一些其他问题).

    2.更新异常(冗余信息不仅浪费空间,还会增加更新的难度).

    3.插入异常

    4.删除异常(在某些情况下,当删除一行时,可能会丢失有用的信息).

    八.三大范式

    1.第一范式:

    目标是确保每列的原子性.如果每列都是不可再分的最小数据单元,则满足第一范式.

    2.第二范式:

    第二范式在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关,也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中.如果一个关系满足第一范式,并且除了主键以外的其他列都依赖与该主键.则满足第二范式.

    3.第三范式:

    第三范式在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关.如果一个关系满足第二范式,并且除了主键以外的其他列都这能依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式.

    九.规范性和性能的关系

    为了满足三大范式,我们的数据操作性能会受到相应的影响,所以,在实际的数据库设计中,既要考虑三大范式,避免数据的冗余和各种数据操作异常;有要考虑到数据访问性能,有时,为了减少表间连接,提高数据库的访问性能,允许适当的数据冗余列,这可能是最合适的数据库设计方案.
    转自:…………………………

    展开全文
  • 数据库设计总结

    万次阅读 多人点赞 2018-04-08 23:43:12
    对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据...

    对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。说了这么多数据库设计的重要性那么数据库设计应该考虑哪些问题呢?

    一、范式与反范式的设计

    范式设计的目的是为了减少数据冗余从而节约存储空间提高查询效率,同时也使得数据一致性容易得到维护。例如一个简单的例子:一个选课系统设计如下。建立学生信息表与课程信息表。当学生进行选课操作时。建立选课表使得学生与课程建立关系。建立关系只需要建立主键ID的关系。

    上面这种设计是标准的按照范式设计的表格。如果我们要看小明选了哪些课程只需要将这3张表做个关联查询就行了。反范式的设计主要考录历史数据要反应历史问题。需要将数据冗余到表中。同样用一个简单的电商系统来说明。

    这种设计的考虑就是反应历史情况按照历史处理。比如说小红下了一个2000元的苹果手机一代。订单已经生成并且支付。这个时候店家为了促销将苹果一代手机价格降低到1800。如果数据不冗余到订单表。快递发货时打印出来的订单价格与用户实际支付的价格就会有出入,给用户造成误会。

    一个反范式设计出现的问题。曾经接手过一个系统其中的问题。就是采用反范式设计出现的问题。

    举上面两个典型例子的目的时为了提醒我们设计数据库时一定要考虑范式和反范式设计。具体采用什么方式就要分析我们的业务是属于哪种情况视具体情况而定采用哪种方式。这种情况更多用到涉及到财务方面。涉及到以后财务对账。所以数据冗余相当重要。

    二、扩展性设计

    项目初期业务场景数据模型是一对一,并且分析后期有可能会变成一对多。这种情况不要为了前期方便设计成一对一数据模型。这样做到后期可能得不尝失。这就是数据拓展性设计需要考虑。比如如下两种设计

    第一种

    第二种

    明显第二种好于第一种。并且得益于关系型数据库的成熟基于主键表关联查询的效率很高。不用担心因标间关联查询的性能问题。在很多业务场景下都不用查询用户地址信息。如果只需要查询或者统计用户的一些基础信息。地址信息会使得该表的高水位线被顶到很高的水平影响全表扫描的效率。同时很多用户没有录入地址信息。导致该表有很多空值数据。将表拆分后能够提高其他业务场景查询效率是一个很好设计思路。

    三、数据库约束

    数据约束最好是在数据设计之初就定义好。包括非空约束数据唯一性约束。这样可以解决很多系统空异常,并且使得数据更好维护。如果不这个做,当系统运行一时间后。某些数据不该为空的变成了空再来补数据你就会明白我的良苦用心了。并且有现成的东西给你加一道防线何乐而不为。

    四、数据库访问权限界定

    数据库访问权限一定要控制在自己的系统范围内,严禁其他系统直接操作数据库。系统需要与其他系统进行信息交换,或者数据变更,应该采用本系统开发接口给外部系统进行调用并且对接口调用进行日志记录,而不是直接开放数据库给对方。这么做主要是方便核查异常数据写入场景分析问题源。快速定位问题源。同时通过分析接口调用日志分析外部系统问题。

    五、表字段最好考虑添加创建时间和修改时间

    这个设计主要是考虑到平时数据维护和数据分析用,不一定时业务上使用。如果某段时间业务出问题,可以通过数据的创建时间和修改时间来找到这部分异常数据。是人就会犯错,我们尽量做到犯错可挽回,当我们临时需要手动处理一些数据。一不小心把数据有弄错了,通过这两个字段还可以找到并重新处理这两个数据同时做数据复原。

    代码删除了可以重新写一份。数据库删除了就什么都完了。所以数据是系统的灵魂。维护数据的正确完整至关重要。而做好上面这些事项。可以使得在日常的工作中更加轻松。

     

     

    展开全文
  • 150讲轻松搞定Python网络爬虫

    万人学习 2019-05-16 15:30:54
    比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又...
  • 一个简单数据库设计例子

    万次阅读 多人点赞 2015-03-17 10:39:43
    一个曾经做过的简单的管理系统中数据库设计的例子,包括设计表、画ER图、建模、脚本. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 项目信息 Project Name: Book...

    一个曾经做过的简单的管理系统中数据库设计的例子,包括设计表、ER图、建模、脚本.


    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    • 项目信息

    Project Name:   Book Manager System
    DB:                MySQL5.5
    DB Name:         db_library
    Tables:
    1). tb_book_info
    2). tb_user
    3). tb_admin_info
    4). tb_borrow_return
    5). tb_book_type


    • 表设计



    • E-R图


    • PowerDesigner建模


    • 脚本

    C:\Program Files\MySQL\MySQL Server5.5\bin>mysql -u root -pabcd<c:\admin.sql
    NOTE:
    1.MySQL/bin目录,执行mysql -u root -pabcd <c:\admin.sql
    2.练习用的数据库名:library  项目中数据库为db_library
    /*==============================================================*/
    /* Table: tb_admin_info   负责管理员登陆的表                         */                         
    /*==============================================================*/
    drop database if exists library; # 练习用的数据库,如果存在则删除。
    create database library;           # 创建数据库。
    use library;                          # 打开数据库,注意用分号。
    create tabletb_admin_info          # 建练习用表。
    (
    admin_id int(3) auto_increment not null primary key,   # 主键,非空,自增长。
    admin_user varchar(15) not null,
    admin_pwd varchar(15) not null
    );
    insert into tb_admin_infovalues('001','Tom','Jerry');  # 插入两条数据,用于做测试。
    insert into tb_admin_infovalues('002','root','root');  # 插入两条数据,用于做测试。

     


    展开全文
  • 数据库设计的一般步骤

    万次阅读 多人点赞 2019-06-13 20:03:58
    经过几天给韶关某个高校进行数据库设计的实训,对数据库设计的过程有了更加深刻的理解。 数据库的设计按照以下步骤: (1)了解功能需求 在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过...

    经过几天给韶关某个高校进行数据库设计的实训,对数据库设计的过程有了更加深刻的理解。

    一、数据库设计的步骤

    (1)了解功能需求
    在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书,与项目相关人员(比如项目经理、客户等)进行充分沟通。

    (2)定义实体
    了解系统功能需求之后,设计人员通过分析系统功能定义出系统有哪些实体。比如:到酒店开房。这里应该至少包含两个实体:客人和房间。
    在定义出实体以后,我们还要定义实体的属性。例如:
    客人:姓名、性别、手机号码、证件号码、证件类型(身份证、驾驶证、通行证等等)…
    房间:房号、房间类型(单人房、双人房、豪华房等等)、入住时间、离开时间、房间状态(已入住、未入住)…

    (3)绘制E-R图
    定义好实体之后,接下来我们应该根据实体以及实体之间的关系绘制出E-R图。比如:
    在这里插入图片描述
    长方形代表实体,椭圆形代表实体的属性,菱形代表实体之间的关系。

    (4)把E-R图转换成模型
    绘制出E-R图之后,我们需要根据它来构建物理模型。构建物理模型可以使用一些工具,比如目前比较流行的PowerDesigner。
    在这里插入图片描述
    (5)检查模型
    完成模型设计后,我们还要检查模型是否满足第三范式的要求。如果不满足就需要重新对模型进行修正,直到满足第三范式的要求为止。

    比如说,上面的模型并没有满足第三范式的要求。因为customer和room这两个表都存在一些与该表没有直接关系的字段。如果要满足第三范式要求,就需要把模型修改为:
    在这里插入图片描述
    上面模型增加了三个表,分别是identity_type(证件类型表)、register(入住登记表)、room_type(房间类型表),经过对模型的修正后,已经满足第三范式的要求。

    (5)根据模型定义数据库
    不同数据库的SQL命令可能会有小小差别。比如我们这里使用了MySQL数据库。

    定义数据库的命令:DDL

    #创建数据库
    create database 数据库名;
    
    #删除数据库
    drop database 数据库名;
    
    #查询数据库
    show databases;
    
    #选定数据库
    use 数据库名;
    
    #创建表
    create table 表名 (
    	列名 数据类型 [primary key] [auto_increment],
    	列名 数据类型 [not null] [unique] [default '默认值'] [comment '字段说明'],
    	列名 数据类型 [not null] [unique] [default '默认值'] [comment '字段说明'],
    	...
    	[constraint 外键名 foreign key(外键列) references 表名(主键列) [on update|delete cascade]]
    );
    
    #删除表
    drop table 表名;
    

    下面根据模型定义数据库:

    #创建数据库
    create database hotel;
    
    #查询数据库
    show databases;
    
    #选定数据库
    use hotel;
    
    #证件类型表
    create table identity_type (
    	identity_type_id int primary key auto_increment, 
    	identity_type_name varchar(50) not null comment '证件类型名称'
    );
    
    #客人表
    create table customer (
    	cust_id int primary key auto_increment,
    	cust_name varchar(255) not null unique default '' comment '客人名称',
    	mobile varchar(11) default '' comment '手机号码',
    	identity_num varchar(50) not null unique default '' comment '证件号码',
    	identity_type_id int not null comment '外键列,引用证件类型表',
    	constraint fk_cust_identity_type foreign key(identity_type_id) references identity_type(identity_type_id)
    );
    
    #房间类型
    create table room_type (
    	room_type_id int primary key auto_increment, 
    	room_type_name varchar(50) not null comment '房间类型名称'
    );
    
    #房间
    create table room (
    	room_id int primary key auto_increment, 
    	room_num varchar(10) not null comment '房号',
    	room_type_id int not null comment '外键列,引用房间类型表',
    	status int not null comment '房间状态,1代表未入住,2代表已入住',
    	constraint fk_room_type foreign key(room_type_id) references room_type(room_type_id)
    );
    
    #入住登记表
    create table register (
    	cust_id int not null comment '外键,引用客人表',
    	room_id int not null comment '外键,引用房间表',
    	in_time datetime not null comment '入住时间',
    	out_time datetime comment '离开时间',
    	constraint fk_register_cust foreign key(cust_id) references customer(cust_id),
    	constraint fk_register_room foreign key(room_id) references room(room_id)
    )
    

    至此,数据库设计阶段的任务已经完成。

    二、总结

    数据库设计其实并不难,本人觉得比较难的地方在于开始的分析阶段。就是如何根据客户需求把数据库里面的实体,以及实体之间的关系分析出来。所以,在数据库设计阶段,我们应该把重点放在业务需求的分析上,准确把握客户的需求,这样才能够设计出一套比较好的数据库。

    展开全文
  • 数据库设计的基本步骤

    万次阅读 多人点赞 2017-08-13 20:52:16
    数据库设计的基本步骤 按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段 1.需求分析 2.概念结构设计 3.逻辑结构设计 4.物理结构设计 5.数据库实施 6.数据库的运行和维护   在...
  • 个人博客数据库设计

    千次阅读 2019-03-23 14:26:55
    最近要做数据库大作业,在思考了很久之后,还是设计一个简单的个人博客数据库数据库采用的时MySQL5.7。 数据库下载(提取码: kr78) 一、 概述及分析 1.1 项目背景 随着互联网的发展,越来越多的人拥有了自己的...
  • 浅谈数据库设计

    千次阅读 2017-06-21 17:50:21
    浅谈数据库设计 ——-目录(?)[+]第一章 需求分析设计简介设计步骤需求分析重要性实例小型电子商务网站第二章 逻辑设计E-R图设计范式概要第一范式1NF第二范式2NF第三范式3NF BC范式第三章 物理设计物理设计要做什么...
  • 数据库设计(有实例)

    万次阅读 多人点赞 2017-12-03 15:27:59
    数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据存储模型。并建立数据库中的表结构以及表与表之间的关联关系的过程。使之能有效的对应用系统中的...
  • 数据库设计三大范式

    万次阅读 2019-02-26 22:51:35
    数据的概念 对象object,也称为实体型。在现实世界中具有相同性质、遵循相同规则的一类事物的抽象称为对象。对象是实体集数据化的结果,比如学生、老师、课程等是对象。 实例instance 是指对象中的每一个具体的...
  • 数据库设计三大范式(例子图解)

    千次阅读 2019-04-25 20:44:42
    为了减少数据冗余,设计数据表时必须遵循一定的规则,在关系型数据库中这种规则就称为范式。 引用:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html 1.第一范式1NF(确保每列保持原子性) 每一...
  • 数据库设计三大范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足...
  • 首先关于数据库三大范式是什么,我们不再多说,网上很多博客写的都很好,例如以下链接: ... 版权声明:以上链接为博主原创文章,遵循 CC 4.0 by-sa 版权协议,...虽然数据库设计范式是设计经验,不是强制遵守的规则...
  • 数据库设计常用三大范式

    千次阅读 2018-08-09 12:14:46
    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范式:第一范式(1NF)、第二范式...
  • Oracle:数据库设计三大范式

    千次阅读 2016-12-06 09:06:10
    数据库设计三大范式 为什么要谈及范式?  这也是为了数据库设计做准备,对于表设计而言,我们需求何种程度的设计,这完全取决你数据的规模,好比你建房子,要是建个一两层,基本上不需要什么设计,直接开工就行,...
  • 数据库设计三大范式

    千次阅读 2017-03-24 09:30:29
    第一范式:原子性 - 就是确保数据库中表的每个字段值都不能再拆分 第二范式:确保数据表的每列都和主键有关系 第三范式:确保数据表的每列都和主键是直接相关的,而不是间接相关的
  • 一点乱糟糟的前言 都说关系型数据库和面向对象的...问题: 为什么OOP要提出三大特点和23中设计模式呢,关系型数据库又为什么要满足三大范式呢? 这个问题我隐约有所顿悟,但是难以用语言来回答。。。,大体来说...
  • 数据库自身优化 优化①:增加次数据文件,设置文件自动增长(粗略数据分区) 1.1:增加次数据文件  从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型...
  • 关系型数据库设计三大范式

    千次阅读 2016-11-25 21:27:53
    1.何为数据库范式?设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同 规范要求被称为不同的范式,各种范式呈递次...简单来讲,就是数据库设计的一系列规范,每一级范式都是基于前一范式的基
  • 详解数据库设计三大范式 2013-10-02 20:24 56人阅读 评论(0) 收藏 举报 数据库设计三大范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就...

空空如也

1 2 3 4 5 ... 20
收藏数 1,182,710
精华内容 473,084
关键字:

数据库设计