一.数据库设计的概念

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

二.数据库设计的重要性

设计决定代码量,一将不行,累死三军。

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

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.第三范式:

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

九.规范性和性能的关系

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

c#数据库设计--1、概述的更多相关文章

  1. 数据库设计_ERMaster安装使用_PowerDesigner数据设计工具

    数据库设计 1. 说在前面 项目开发的流程包括哪些环节 需求调研[需求调研报告]-- 公司决策层 (1) 根据市场公司需求分析公司是否需要开发软件来辅助日常工作 (2) 公司高层市场考察,市场分析,决 ...

  2. Mysql数据库(一)数据库设计概述

    1.数据库的体系结构 1.1 数据库系统的三级模式结构是指模式.外模式和内模式. 1.2 三级模式之间的映射分为外模式/模式映射和模式/内模式映射. 2.E-R图也称“实体-关系图”,用于描述现实世界 ...

  3. mySQL教程 第1章 数据库设计

    E-R设计 很多同学在学SQL语句时,觉得非常困难,那是因为你在学一个你根本不了解的数据库,数据库中的表不是你设计的,表与表之间的关系你不明白.因此在学SQL语句之前,先介绍一下数据库设计. 下面举例 ...

  4. SQL SERVER学习2——数据库设计

    数据库设计是数据库知识中比较重要的部分,我们需要了解数据库设计的基本步骤,E-R图的画法. 数据库设计的基本概述 检验一个数据库设计好坏的标准就是,看他是否能够方便的执行各种数据检索和处理操作,并且有 ...

  5. T-MAX—项目系统设计与数据库设计

    团队作业第四次-项目系统设计与数据库设计 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第四次-项目系统设计与数据库设计 团队名称 T-MAX 这个作业的目标 在开 ...

  6. MySQL 表的约束与数据库设计

    DQL 查询语句 排序 # 单列排序 * 只按某一个字段进行排序,单列排序 # 组合排序 * 同时对多个字段进行排序,如果第1个字段相等,则按照第2个字段排序,依次类推 * 语法: # 具体操作 * ...

  7. 数据库设计中的Soft Delete模式

    最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...

  8. 使用django开发博客过程记录1——数据库设计

    1.数据库设计 2.插入测试数据 3.配置相关问题 1.数据库设计 数据库有简单的三张表:Article.Category.Tag以下是代码 # -*- coding:utf-8 -*- from _ ...

  9. 基于SSM的租赁管理系统0.3_20161225_数据库设计

    数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...

随机推荐

  1. 用 select 语句实现递归的方法

    with Test_Recursion(Id,ParentId)AS(select Id,ParentId  from [V_KPI_DetailsActivities] where ParentId ...

  2. java中int和Integer对比的一些坑

    --------------------- 作者:狂飙的yellowcong 来源:CSDN 原文:https://blog.csdn.net/yelllowcong/article/details/ ...

  3. winform执行程序报错:已停止工作,windows正在检查该问题的解决方案

    每次运行程序时都会弹出错误框:winform已停止工作,windows正在检查该问题的解决方案 事件查看器错位信息: 错误应用程序名称: TMS_winform.exe,版本: 1.0.0.0,时间戳 ...

  4. 【计算机网络】数据交换技术和多路复用技术的正(nao)确(can)打开方式

    交换的作用   数据交换是计算机网络中两个终端进行数据传输的方式,它又可以分成两种类型:电路交换和分组交换.很显然,问题的核心在于“交换”,那么我们首先要思考的是:交换的作用是什么?   “交换”的作 ...

  5. 识别同音字词pypinyin, 分词 jieba

    一.pypinyin 在处理语音输入指令时, 比如 请给圆圆发消息,那么转化为文字识别时, 无法确定转换的是圆圆还是园园或是源源, 为了解决这个问题, 就把指令转换为拼音来处理,这样就可以处理同音字了 ...

  6. 题解 P5091 【【模板】欧拉定理】

    欧拉定理:若 \(gcd(a,n)=1\),\(a^{\varphi(n)}\equiv 1(mod\ n)\) 设 \(1\sim n-1\) 中与 \(n\) 互素的 \(\varphi(n)\) ...

  7. 01_python_初始python

    一.初始python python是一门解释型语言,弱类型语言 / python解释器最为常用的是cpython(官方) 弱类型语言:   a = 1 a = 'alex'   #说明变量a既可以是整 ...

  8. C#6.0语言规范(十三) 接口

    接口定义合同.实现接口的类或结构必须遵守其合同.接口可以从多个基接口继承,并且类或结构可以实现多个接口. 接口可以包含方法,属性,事件和索引器.接口本身不为它定义的成员提供实现.接口仅指定必须由实现接 ...

  9. ThinkCMF后台验证码不显示,无法登陆怎么办?

    ThinkCMF5在本地部署之后,过一段时间可能会莫名其妙的出现后台验证码不显示的问题,不明就里.着急登陆后台的话,可以先禁用后台验证码,方法如下: 打开文件:/app/admin/controlle ...

  10. D3.js的基础部分之数组的处理 数组的排序和求值(v3版本)

    操作数组   D3提供了将数组洗牌.合并等操作,使用起来是很方便的.   d3.shuffle(array,[,lo[,ji]]) : //随机排列数组. d3.merge(arrays) :   / ...