一、数据管理技术的三个发展阶段:

1)人工管理阶段(20世纪50年代中期) 特点:数据不保存;应用程序管理数据;数据不共享;数据没有独立性;

2)文件系统阶段(20世纪50年代后—60年代)特点:数据以文件形式长期保存;文件系统管理数据;数据共享性差、冗余度大;数据独立性差;

3)数据库系统阶段(20世纪60年代—现在)特点:数据结构化;数据由DBMS统一管理与控制;数据共享性高、冗余度低;数据独立性高;

二、数据库管理系统的功能:

1)数据定义功能:由DBMS提供的数据定义语言(Data Definition Language,DDL)定义数据库中的数据对象。

2)数据操纵功能:由DBMS提供的数据操纵语言(Data Manipulation Language,DML)实现对数据库的查询、插入、删除和修改;

3)数据控制功能:由DBMS提供的数据控制语言(Data Control Language,DCL)实现数据保护和事务管理的功能,包括完整性、安全性、并发控制和数据库恢复;

4)数据库的建立与维护功能

三、概念模型(也称信息模型)——E-R图(Entity-Relationship Diagram)

概念结构设计即对现实世界进行抽象描述,在需求分析所得数据流图和数据字典的基础上,为计算机存储做准备;概念结构设计的内容即建立概念模型;描述概念模型最常用方法是E-R图或UML图方法。

主要概念

实体(Entity):客观存在的各类事物;

属性(Attribute):实体所具有的特性;

联系(Relationship):不同实体集中实体之间的联系,也可以是同一实体集中实体间的联系;

联系的种类:1:1联系;1:N联系;M:N联系

用E-R图建立概念模型

局部的E-R图又称为局部视图,将多个局部视图E-R图合并成一张完整的E-R图的过程称为视图集成。视图集成过程中可以解决冲突和消除冗余

分E-R图之间的三类冲突

1)属性冲突

2)命名冲突

3)结构冲突:同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性,需要统一;

四、逻辑结构设计——E-R图向关系模型的转换

1)一个实体转换为一个关系模式;

实体的属性——>关系的属性

实体标识符——>关系的码

2)联系的转换

1:1联系——与任意一端对应的关系模式和并;

1:n联系——与n端对应的关系模式合并;

m:n联系——一个独立的关系模式

五、关系模式的优化

从以下几方面:

1)关系模式规范化

2)对关系模式进行必要的合并

3)进行合理的分解,包括水平分解、垂直分解

六、关系模式的存取方法选择

DBMS常用存取方法:

1)索引方法,目前主要是B+树索引方法

2)聚簇(cluster)方法

3)Hash方法

七、SQL数据库的三级结构/两级映像

三级模式体系结构:

两级映像:

外模式/模式映像

模式/内模式映像

1)数据的逻辑独立性

应用程序(外模式)与数据库的逻辑结构(模式)是相互独立的,即数据的逻辑结构发生改变,应用程序不用变。

2)数据的物理独立性

应用程序(外模式)与存储在磁盘上的数据库文件中的存储结构(内模式)是相互独立的,即数据文件的组织方式改变不需要修改应用程序。

注:数据库的存储结构有哪些?

欢迎交流与指正!*~* *~*

关系型数据库设计——E-R图的更多相关文章

  1. 数据库系统(四)---关系型数据库设计及E-R图

    1.关系型数据库: 关系型数据库是一类采用关系模型作为逻辑数据模型的数据库系统,遵从数据库设计的基本步骤,包括:需求分析.概念结构设计.逻辑结构设计.物理结构设计.数据库实施.数据库的运行和维护等阶段 ...

  2. 基于E-R模型的关系型数据库设计方法

    摘要 在管理信息系统开发中,数据库设计的目标是建立DBMS能识别的关系数据模型.而关系数据模型建立的基础是首先建立E-R模型,通过E-R模型才能转换为关系数据模型.如何建立E-R模型以及如何将E-R模 ...

  3. 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比

    摘要:这篇文章将介绍图数据库 Nebula Graph 的查询语言 nGQL 和 SQL 的区别. 本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.c ...

  4. 优化MySchool数据库设计之【巅峰对决】

    优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...

  5. 非关系型数据库Nosql的优缺点分析

    Nosql的全称是Not Only Sql,Nosql指的是非关系型数据库,而我们常用的都是关系型数据库.就像我们常用的mysql,oralce.sqlserver等一样,这些数据库一般用来存储重要信 ...

  6. 初识关系型数据库(SQL)与非关系型数据库(NOSQL)

    一.关系型数据库(SQL): Mysql,oracle 特点:数据和数据之间,表和字段之间,表和表之间是存在关系的 例如:部门表 001部分,   员工表 001 用户表,用户名.密码 分类表 和 商 ...

  7. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计

    笔记 4.在线教育后台数据库设计     简介:讲解后端数据库设计    ,字段冗余的好处,及常见注意事项 1.数据库设计:          er图:          实体对象:矩形        ...

  8. [MySQL] 关系型数据库的设计范式 1NF 2NF 3NF BCNF

    一.缘由: 要做好DBA,就要更好地理解数据库设计范式.数据库范式总结概览: 为了更好地理解数据库的设计范式,这里借用一下知乎刘慰老师的解释,很通俗易懂.非常感谢!   二.具体说明: 首先要明白”范 ...

  9. 关系型数据库与Key-value型数据库Mongodb模式设计对比

    MongoDb 相比于传统的 SQL 关系型数据库,最大的不同在于它们的模式设计( Schema Design )上的差别,正是由于这一层次的差别衍生出其它各方面的不同. 我们可以简单的认为关系型数据 ...

随机推荐

  1. ASP.NET MVC Tips

    1. _ViewStart.cshtml会在调用每个页面的时候执行,我们可以在页面内设置Layout页面,也可以在这个页面写一些逻辑来根据不同的情况引用不同的Layout页面,详情请参考此处:

  2. 常见HTTP状态200,304,403,404,503

    下面提供 HTTP 状态码的完整列表.您也可以查看 W3C官方HTTP 状态码说明(英文). 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求 ...

  3. mysql导入大量数据时报MySQL server has gone away错误的解决办法

    https://blog.csdn.net/eric520zenobia/article/details/77619469

  4. 【Leetcode】【Easy】Pascal's Triangle II

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  5. ThinkPHP5.0版本的优势在于:

    更灵活的路由: 依赖注入: 请求缓存: 更强大的查询语法: 引入了请求/响应对象: 路由地址反解生成: 增强的模型功能: API开发友好: 改进的异常机制: 远程调试支持: 单元测试支持: 命令行工具 ...

  6. python入门9 条件语句

    条件语句: if 条件为真: 执行语句块 (执行完结束不执行elif,else) elif 条件为真: 执行语句块 (执行完结束不执行else) else: 执行语句块 #coding:utf-8 # ...

  7. OC extern和变量

    注意: extern只能用来声明全部变量,不能拿来定义变量 #include <stdio.h> // 第一种做法是将a定义在main函数的前面 // int a; // 完整地声明全部变 ...

  8. IOS VFL语言(页面布局)

    ● 什么是VFL语言 ● VFL全称是Visual Format Language,翻译过来是“可视化格式语言” ● VFL是苹果公司为了简化Autolayout的编码而推出的抽象语言     VFL ...

  9. 漫谈C++:良好的编程习惯与编程要点(转载)

    这个博主写的文章真是细腻,全面,严谨,应当多读几回 原文http://www.cnblogs.com/QG-whz/p/5517643.html 阅读目录 以良好的方式编写C++ class Clas ...

  10. Android(java)学习笔记45:深入分析Java ClassLoader原理

    1. 前言: Android中的动态加载机制能更好的优化我们的应用,同时实现动态的更新,这就便于我们管理我们的应用,通过插件化来减轻我们的内存以及CPU消耗,在不发布新版本的情况下能更新某些模块. 当 ...