第一章:数据库的设计

1.1:为什么需要规范数据库的设计

1.1.1:什么是数据库设计

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

1.1.2:数据库设计非常重要

良好的数据库设计表现的几个方面

l 效率高

l 便于进一步扩展

l 可以使应用程序变得更加容易

1.2:设计数据库的步骤

需求分析阶段

概要设计阶段

详细设计阶段

1.2.1:收集信息

创建数据库之前,必须充分的理解数据库的需要完成的任务和功能

1.2.2:标识实体

在收集信息后,必须标识数据库要管理的关键对象或实体

1.2.3:标识每个实体需要存储的信息

标识实体的信息,该实体的属性,这些属性将组成表中的列

1.2.4:标识实体之间的关系

关系型数据库有一项很强大的功能,即他可以关联数据库中各项的相关信息

1.3:概要设计--------绘制E—R图

E-R图(entity-Relationship):实体关系图

1.3.1:实体-关系模型

1:实体:现实世界中客观存在的事物,具有行为特征和属性。

2:属性:属性就是实体的特征

3:联系:联系就是两个或连个以上的实体之间的关系

4:映射关系:表示通过联系与该实体关联的其他实体的个数。

一对一:X中的一个实体与Y中的一个实体关联。Y中的一个实体最多与X中的一个实体关联

一对多: X中的一个实体与Y中的任意多实体关联。Y中的一个实体最多与X中的一个实体关联

多对一:X中的实体与Y中的一个实体关联。Y中的一个实体最多与X中的任意多实体关联

多对多:X中的一个实体可以与Y中的任意多实体关联,,反正成立

5:实体关系图

矩形表示实体集

椭圆表示属性

菱形表示关系集

1.3.2:关系数据库模式

用二维表的形式表示实体和实体之间的数据模型称为关系模型

R(u) 或者R(A,B)     R:表示关系名U:表示属性集合A,B表示U中的属性

1.4:逻辑设计--------绘制数据库模型图

1.4.1:绘制数据库模型图步骤

新建数据库模型图

添加实体

添加数据列即相应的属性

添加实体之间的映射关系

1.5:数据规范化

1.5.1:设计问题

信息重复

比小心输入代表的意思一样,但是用的词却不一样。

更新异常

更新时造成的异常。

插入异常(无法表示某些信息)

本来是一样的实体,最后插入的一个或对个信息不一样

删除异常(丢失有用的东西)

在一些情况下,可能删除莫一行数据,会丢失一些数据

1.5.2:范式设计

确保每列的原子性。表示不可再分的最小数据单元

第一范式的基础上,每列都与主键有直接的关系。其他列都要依赖于主键。(即一个表描述意见事情)

第二范式的基础上,没列都和主键有直接的关系,但每列之间不存在依赖关系。

1.5.3:规范化和性能的关系

在实际开发过程中,既要考虑三大范式,避免数据的永裕和各种数据操作异常,又要考虑数据访问的性能,有时,为了减少表之间的连接,提高访问新能,允许适当的永裕,这是最合适的设计方案!!!

S2_SQL_第一章的更多相关文章

  1. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  2. MyBatis3.2从入门到精通第一章

    第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...

  3. Nova PhoneGap框架 第一章 前言

    Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...

  4. 第一章 MYSQL的架构和历史

    在读第一章的过程中,整理出来了一些重要的概念. 锁粒度  表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性 ...

  5. 第一章 Java多线程技能

    1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...

  6. 【读书笔记】《编程珠玑》第一章之位向量&位图

    此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书 ...

  7. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  8. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  9. 《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍

    Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件 ...

随机推荐

  1. 神奇的background

    background:url() fixed ....  可以实现页面向下滚动时背景图片 保持位置不变   感觉好像背景在随鼠标滚动而滚动一样

  2. 移动端iOS阻止橡皮筋效果

    一.遇到的问题 移动端开发中,iOS的微信浏览器也好.Safari也好在浏览网页的时候会出现橡皮筋效果.就是当页面拉到尽头的时候还能再继续拉动,露出浏览器的底色,松手会回弹回去. 微信浏览器: Saf ...

  3. LVS之-LAMP搭建wordpress

    author:JevonWei 版权声明:原创作品 LVS搭建wordpress,涉及的知识点有DNS,LAMP,NFS及LVS 网络拓扑图 网络环境 NFS 192.168.198.130 mysq ...

  4. diplay:table-cell和伪元素:after方法让图片居中

    让图片居中和文字居中是不一样的,文字居中可以通过line-height等调整,让图片居中方法,参考各种资料博文和测试  目前接触两种方法 display:table-cell和伪元素:after方法 ...

  5. 解决MVC模式文件下载附件中文名称乱码

    解决如下: 进行url编码:Server.UrlPathEncode(file.AttachmentName) return File(file.TempWorkPath, CommonTools.G ...

  6. 如何通过navigator.userAgent判断是哪款浏览器?

    userAgent 用户代理.通过浏览器控制台alert( navigator.userAgent );可以获得当前浏览器的信息,如果逆推呢? 通过navigator.userAgent判断是哪款浏览 ...

  7. MySQL (九)-- 代码执行结构、函数、存储过程

    1 代码执行结构 代码执行结构有三种:顺序结构.分支结构和循环结构. 1.1 分支结构 分支结构:实现准备多个代码块,按照条件选择性执行某段代码. 在MySQL中只有if分支. 基本语法 if 条件判 ...

  8. JQuery 相关用法和操作

    01-JQuery 基础语法: 1.使用JQuery必须先导入JQuery.x.x.xjs文件. 2.JQuery中的选择器: $(选择器).函数() ① $是JQuery的缩写,既可以使用JQuer ...

  9. 201521123090《Java程序设计》第6周学习总结

    本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对 ...

  10. 201521123053《Java程序设计》第四周总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 现在上课跟着老师的思路走,一般都能理解了.就是课上知识点有些难以记住. 特别讲讲这个思维导图 ...