结论
:两种数据库的本质在于存储数据的形式不同
关系型数据库概念
关系型数据库最大的特征就是表,我们将对象的属性映射为表的一个个列名,将数据按照对应关系逐行填充。(如下图)我们对数据进行CRUD的时候,都是基于表中的一行行数据进行操作的。
假设,我们想要插入一条用户信息的数据(结合上图)的时候,除了添加用户名之外,还得补充上用户性别、出生日期等其他数据才行,除非是表设计的时候对于某些字段做了允许为空的设置,否则我们必须保证表中存储数据的完整性。我们持久化数据的时候就需要保证数据的完整性。好处:数据的完整性,才能·保证了数据的安全性和稳定性
非关系型数据库概念
非关系数据库的存储方式则是更为熟悉和常见的结构:
键值对
,我们通过key : value的形式来保存对应的数据;就拿上图的的用户表作为例子,我们可以用PeopleId : 202226
,PeopleName:刘德华
,PeopleGendeer:男
…来表示一条数据,这里面并没有用到表结构,但是二者实际的存储数据并没有任何变化。这样的话,就带来一种好处,我可以根据业务需要很方便地修改存储的键,比如要新增多一个用户银行卡字段,只需要多加一个key值即可。不再需要像传统的关系型数据库一样,调整表结构了。非关系型数据库的好处显而易见,拓展性高,约束性小,操作速度快;但同时,劣势也在此。对于需要高度安全的数据,非关系型数据库就无法保证了
关系型数据库
MySQL
:免费、开源、适用中小型和个人使用;后面MySQL被sun公司收购,sun公司又被Oracle收购,最新的版本应该不是免费的了。
Oracle
:大多数大型商业公司的选择,Oracle支持高并发,大访问量,支持事务,数据库性能好,稳定性高,但是收费.
非关系型数据库
MongoDB
:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案.
Redis
:比较典型的Nosql
数据库,其优秀的缓存机制更是开发人员常常使用到的功能之一.
对于
业务变动较大和频繁
,经常需要修改字段
,对安全性要求不高
的数据而言,使用非关系型数据库是一个很好的选择。反之,如果业务对于数据有着比较高的安全性要求
,那么现阶段使用关系型数据库会是更好的选择
数据模型
是对客观事物及其联系的数据的描述。从事物的特征到计算机中的数据表示,对现实世界问题的抽象经历了三个不同层次。即:概念数据模型
、逻辑数据模型
、物理数据模型
概念数据模型
又称概念模型,是现实世界到概念世界的抽象。概念模型是整个数据模型的基础。著名的模型是实体—联系模型(简称:E-R图)
逻辑数据模型
又称数据模型,是概念世界的抽象描述到信息世界的转换。概念模型只有在转换成数据模型后才能在数据库中得以表示;常用数据模型有层次模型、网状模型、关系模型。这类模型具有严格的定义(数据结构、数据操作、数据完整性约束)
数据结构
:是指实体类型和实体间联系的表达和实现
数据操作
:是对数据库的检索和更新(包含插入、删除和修改)两类操作
数据完整性约束
:给出数据及其联系应具有的制约和依赖规则
物理数据模型
又称物理模型,是信息世界在机器世界的实现。
术语 | 说明 |
---|---|
实体(entity) | 客观存在并可相互区别的事物(一个学生、一个部门、一门课) |
属性(attribute) | 实体具有的某一特征(学生的学号、姓名、性别…) |
码(key) | 唯一标识实体的属性或属性集称为码,且不应有冗余属性(学号是学生实体的码) |
域(domain) | 属性的取值范围(例如学号长度为8位) |
实体集(entity set) | 同型实体的集合(全体学生就是一个实体集) |
实体型(entity type) | 具有相同属性的实体必然具有共同的特征和性质,用实体名和属性名集合表示同类实体() |
联系 | 具体看下文 |
相信很多向我一样刚入门数据库的小伙伴,在这个地方肯定一开始是搞得稀里糊涂的,那么今天就让小编来彻底给你梳理下下。
一对一联系(1:1)
专业表述
:如果对于实体集A中的每一个实体,在实体集B中最多只有一个实体与之联系,反之亦然;则称实体集A和实体集B具有一对一联系。例如:①一所大学只有一个书记,而一个书记只能在一所学校任职。学校和书记就是一对一的关系。
②一个人只有一个身份证号,一个身份证号只对应一个人。身份证号和这个人就是一对一关系。
一对多联系(1:n)
专业表述
:如果实体集A中的每一个实体,在实体集B中有N个实体(N>=0)与之联系,反之,实体集B中的每一个实体,在实体集A中最多只有一个实体与之联系。则称A-B他们之间存在一对多的联系。例如:①一个企业聘用多名工人,而一个工人只能在一个企业中工作。则企业和工人之间存在一对多关系
②一间教室可以给多个正在上英语课学生使用,而一个正在上英语课的学生只能在一间教室上课。
多对多联系(n:m)
专业表述
:如果实体集A中的每一个实体,在实体集B中有N个实体(N>=0)与之联系,反之,实体集B中的每一个实体,在实体集A中有M个实体(M>=0)与之联系。则称A-B他们之间存在多对多的联系。例如:①一个企业聘用多名工程师,而一个工程师可以在多个企业中兼职。则企业和工程师之间存在多对多关系
②一本书可以被多个学生借阅,而一个学生可以借阅多本书。书和学生存在多对多的关系
实体型(集)
:用矩形表示,矩形框内写明实体集名。
属性
:用椭圆表示,并且用无向边将其与相应的实体集体连接起来。
联系
:用菱形表示,菱形内写明联系名,并且用无向边将其与相应的实体集体连接起来,并且在无向边旁边标上联系的类型(1:1、1:n、n:m)
题1:
假设每个学生选修若干门课程,且每个学生每选一门课只有一个成绩,每个教师只担任一门课的教学,一门课由若干教师任教。“学生”有属性:学号、姓名、地址、年龄、性别。“教师”有属性:职工号、教师姓名、职称,“课程”有属性:课程号、课程名。
①试画出E-R图,并注明属性和联系类型。(5分)
②将E-R图转换成关系模型 ,并注明主码和外码 (5分)
(1)
(2)
学生(学号,姓名,地址,年龄,性别)
课程(课程号,课程名)
教师(职工号,教师姓名,职称,课程)
选课(学号,课程号,成绩)
题2
设有商店和顾客两个实体,“商店”有属性:商店编号、商店名、地址、电话,“顾客”有属性:顾客编号、姓名、地址、年龄、性别。假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次。
①试画出ER图,并注明属性和联系类型。
(1)
题3:
某研究所有多名科研人员,每一个科研人员只属于一个研究所,研究所有多个科研项目,每个科研项目有多名科研人员参加,每个科研人员可以参加多个科研项目。科研人员参加项目要统计工作量。“研究所”有属性:编号,名称、地址,“科研人员”有属性:职工号、姓名、性别、年龄,职称。“科研项目”有属性:项目号、项目名、经费。
①试画出ER图,并注明属性和联系类型.
(1)
外模式、模式、内模式、
数据结构
:关系模型的数据结构非常单一,只有关系、实体及实体之间的联系都用关系表示。即关系模型中数据的逻辑结构是一张二维表。
关系操作集合
:关系操作是高度非过程化的、用户不必指出存取路径。
关系的完整性约束条件集合
(实体完整性、参照完整性、用户定义的完整性)
实体完整性:
若属性A是基本关系R的主属性,则属性A不能取空值,即关系中的主码不允许为空值。参照完整性
:通俗地说就是外键约束码
:码是关系中的属性或属性组(有的码是由几个属性共同决定的),若它的值唯一地标识了一个元组,则称该属性或属性组为候选码(candidate key)。主码
:若一个关系有多个候选码,则选定其中一个为主码(primary key)关系的性质
:
关系的性质
:
上一篇:面向对象(高级)
下一篇:C# dll代码混淆加密