三级数据库知识点学习(二)

文章目录

  • 一、E-R图
  • 二、概念数据模型
  • 三、B/S结构的数据库应用系统
  • 四、函数依赖
  • 五、smallint
  • 六、内嵌表值函数
  • 七、锁
  • 八、建立索引(补充)
  • 九、分布式数据库(补充)
  • 十、OLTP和OLAP
    • 1.OLTP
    • 2.OLAP

一、E-R图

E-R图,即实体联系图。这里仅简单介绍E-R图中的概念和一些简单的E-R图。
E-R图由四个部分组成,分别为

  • 实体:使用矩形框表示,在矩形框中记入实体名称。
  • 联系:使用菱形框表示,在菱形框中记入联系名称,并用实线与实体连接起来。
  • 属性:使用圆形框表示,在圆形框中记入属性名称,实体和联系皆可有属性。
  • 连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)

在E-R图中存在三种一般性约束,分别为一对一约束、一对多约束和多对多约束。

  • 一对一约束(1:1)
    三级数据库知识点学习(二)_第1张图片
    其中实体家庭教师(姓名,教龄)和学生(姓名,年龄)之间的教学联系是1:1的联系,即家庭教师与学生进行一对一教学。
  • 一对多约束(1:n)
    三级数据库知识点学习(二)_第2张图片
    其中实体教师(教师号,姓名,教龄)和学生(学号,姓名)之间的教学联系是1:n的联系,即一位教师可以教多位学生。
  • 多对多约束(n:n)
    三级数据库知识点学习(二)_第3张图片
    其中实体学生(学号,姓名)与活动(名称,性质,形式)之间的参与联系是n:n联系,即一个活动可以由多个学生共同参加,同时一个学生可以参加多个活动。

二、概念数据模型

概念数据模型,主要用来描述世界的概念化结构,它使数据库设计人员在设计的初始阶段摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据库管理系统无关,所以没有描述数据的完整性约束条件。
概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。也就是从现实世界到信息世界的第一层抽象。

三、B/S结构的数据库应用系统

B/S结构即浏览器和服务器结构。客户机不需要安装任何特定的软件,只需要有一个浏览器就可以就可以与服务器进行交互,。如很多采用ASP、PHP、JSP技术的网站就是典型的基于B/S体系结构的。
特点:用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,主要的事务逻辑在服务器实现,所以其对客户端配置要求不高,即使对服务器要求较高,也不需要安装客户端软件。

四、函数依赖

函数依赖,即当某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。

  • 定义:设R(U)是属性集U上的关系模型X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X。其本质是根据属性间的依赖情况来判断关系是否具有模型不合适的属性。
  • 概念:
  1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
  2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
    例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立。
  3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。

如:

  • 如果X和Y之间是1:1关系(一对一关系),如学校和校长之间就是1:1关系,则存在函数依赖X → Y和Y →X。
  • 如果X和Y之间是1:n关系(一对多关系),如年龄和姓名之间就是1:n关系,则存在函数依赖Y → X。
  • 如果X和Y之间是m:n关系(多对多关系),如学生和课程之间就是m:n关系,则X和Y之间不存在函数依赖。

五、smallint

smallint,即一种数据类型
smallint为一种精确数值数据类型,其精度在算术运算后不变。它需要 2 个字节存储。
有符号的 SMALLINT 值的范围是 –2^215 到 2^215 – 1,即 –32768 到 32767。
无符号的 SMALLINT 值范围是 0 到 2^216 – 1,即 0 到 65535。
在考虑最大数据范围的前提下,优先使用smallint类型,因为其精度在算术运算后不变。
SQL sever中另外还有几种数据类型及其长度分别为

  • int数据类型:存储为 4字节整数,取值范围 -2^31— 2^31,所以在考虑最大数据范围的前提下,优先考虑使用smallint类型。
  • bigint数据类型:可以精确的表示从 -2^63— 2^63-1 之间的整数,数据类型存储为8字节存储空间,当bigint值在int数据类型支持的范围内时, sql server 才将bigint 隐式转换成int, 如果bigint 表达式包含了一个在int 数据类型支持范围之外的值,就会在运行时出现转换错误。在数据类型优先表中,bigint 数据类型位于int之上, smallint之下。
  • tinyint数据类型:如果字段设置为unsigned, 只能存储从0 到255之间的整数,不能用来存储负数。如果字段没有设置为unsigned, 将会存储 -128 到127之间的数。tinyint 存储采用1个字节 。

六、内嵌表值函数

内嵌表值型函数的返回值是一个,表是单个 SELECT 语句的结果集,没有函数主体。
内嵌表值函数的语法为:

create function[属主名]函数名
([{@parameter_name[as]标量参数数据类型[=default]}[,…n]])
returns table
[with [,…n]]
[as]
return [()select语句]

(ps:对于内嵌表值函数与多语句表值函数,作者本人也不怎么懂,还在学习,希望学到以后可以继续分享~)

七、锁

共有两个概念,分别为排它锁和共享锁。

  • 排它锁:又称为写锁,当事物T对某个数据加上排它锁时,T可以对数据进行读和写,其他任何事物都不能再对该数据加任何其他类型的锁,直到T释放该锁才行;
  • 共享锁:又称为读锁,当事物T对某个数据加上共享锁,则T只能对该数据进行读操作,不能修改数据,且其他事物也可以对该数据加共享锁但不能加排它锁。只有等到该锁没有被其他任何事物访问时才能加排它锁。

八、建立索引(补充)

此处为上一篇博客中建立索引的补充。

  • 主索引:主索引是根据数据对象建立的索引,它们决定了被索引记录的位置,即在指定的索引字段或表达式中不允许出现重复值的索引。
    一个主文件中仅有一个主索引。
  • 辅索引:可以用于任何索引目的并且可以查找多个数据文件存放的位置。
    一个文件可以有多个辅索引。
  • 位图索引:位图索引一般在范围查询时使用,适合只有几个固定值的列,如性别、婚姻状况、行政区等等。如身份证号这样非固定几个值的就不适合使用位图索引。
    如果对位图索引感兴趣的可以看看位图(BitMap)索引,作者看过这篇文章后才懂的什么是位图索引。

九、分布式数据库(补充)

此处为上一篇博客中分布式数据库的补充。
透明性:

  • 分片透明性(最高层次)
  • 位置透明性
  • 局部数据模型透明性

数据分布策略两个角度:

  • 数据分片(先进行)
  • 数据分配(后进行)

分配方式:

  • 集中式:指所有数据片段都安排在一个场地上;
  • 分割式:全局数据有且只有一份,它们被分割成若干片段,每个片段被分配在一个特定地点上;
  • 全复制式:在每个站点上都有全局数据的复制样本,数据的冗余性最大;
  • 混合式:指全局数据被分为若干个数据,每个子集被安排在一个或多个不同的场地上,但是每个场地未必保存所有数据。

十、OLTP和OLAP

1.OLTP

OLTP即联机事务处理,是对数据库联机的日常操作,通常是对一条记录的查询和修改,要求快速响应用户的请求,对数据的安全性、完整性及事物吞吐量要求很高。

2.OLAP

OLAP即事务分析处理,是对事物的查询和分析操作,通常是对海量历史数据的查询和分析,要访问的数据量非常大,查询和分析操作十分复杂。

OLAP为宏观操作,OLTP为微观操作,前者面向企业的中上层和决策者使用,后者面向企业的中下层业务人员使用。

(PS:上一篇博客三级数据库知识点学习居然突破了2千访问量,出乎预料,不过评论和点赞都很少,作者都怀疑是不是某个人一直在刷访问量了,哈哈。不过只要能对读者有用就是对作者最大的鼓励了!最近作者感冒有点严重,不过疾病也不能成为我学习的阻力,望继续加油。同时文中可能有许多不足的地方,望大佬翻我的时候能够指出其中缺陷,作者还需要向各位大佬多多学习~)

你可能感兴趣的:(三级数据库知识点学习)