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

一、数据模型三要素

数据模型三要素分别为

  • 数据结构
  • 数据操作
  • 数据完整性约束

二、范式

范式即设计数据库时,需要遵循的一些规范。要遵循后面的要求,就必须遵循前面的所有范式要求。
关系数据库中共有6种范式,分别为

  • 第一范式(1NF)
  • 第二范式(2NF)
  • 第三范式(3NF)
  • BC范式
  • 第四范式(4NF)
  • 第五范式(5NF)

满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

1.第一范式(1NF)

第一范式即数据表的每一列都是不可分割的基本数据项。
如“出生日期”一列中,如果再分割为“阳历出生日期”和“农历出生日期”,就不符合第一范式。

2.第二范式(2NF)

第二范式是在第一范式的基础上建立起来的,满足第二范式就必须满足第一范式。
在第一范式的基础上,数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,则满足第二范式。

  • 部分函数依赖:存在组合关键字中的某些字段决定非关键字段的情况
学号 姓名 年龄 课程名称 成绩 学分
001 张三 20 程序设计 90 4
001 张三 20 数据结构 88 3
002 李四 21 程序设计 74 4
002 李四 21 数据结构 70 3

上表中存在关系:(学号,课程名称)->(姓名,年龄,成绩,学分)。所以不满足第二范式。
不符合第二范式,此关系表会存在以下问题:

  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常

将上关系表改为以下关系表:

  • 学生
学号 姓名 年龄
001 张三 20
001 李四 21
  • 课程
课程名称 学分
程序设计 4
数据结构 3
  • 选课关系
学号 课程名称 成绩
001 程序设计 90
001 数据结构 88
002 程序设计 74
002 数据结构 70

这样的数据表是符合第二范式的,消除了数据冗余、更新异常、插入异常、删除异常。

3.第三范式(3NF)

第三范式是在第二范式的基础上建立起来的,满足第三范式就必须满足第二范式。
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。

  • 传递函数依赖:如果存在"A → B → C"的决定关系,则C传递函数依赖于A。
学号 姓名 年龄 学院 学院电话
001 张三 20 信息学院 123456
002 李四 21 信息学院 123456
003 王五 20 会计学院 123405

上表存在关系:(学号)->(姓名,年龄,学院,学院电话)。所以满足第二范式。
同时存在关系:(学号)->(学院)->(学院电话)。所以不满足第三范式。
它也会存在数据冗余、更新异常、插入异常、删除异常的情况。

将上关系表改为以下关系表:

  • 学生
学号 姓名 年龄 学院
001 张三 20 信息学院
002 李四 21 信息学院
003 王五 20 会计学院
  • 学院
学院 学院电话
信息学院 123456
会计学院 123405

这样就符合第三范式,消除了数据冗余、更新异常、插入异常、删除异常。

三、数据库逻辑设计

数据库逻辑设计是整个数据库设计的前半段,包括所需的实体和关系,实体规范化等工作。

四、数据库物理设计

数据库物理设计是数据库设计的后半段,将一个给定逻辑结构实施到具体的环境中时,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法,这个过程就是数据库的物理设计。
确定数据库的物理结构包含下面四方面的内容:

  1. 确定数据的存储结构
  2. 设计数据的存取路径
  3. 确定数据的存放位置
  4. 确定系统配置

数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个优化方案作为数据库物理结构。在数据库物理设计中,最有效的方式是集中地存储和检索对象。

五、视图

视图是从一个或多个表(或视图)导出的虚拟表
数据库中只存储标准视图的定义,并不存储标准视图的内容。如果在视图上创建了唯一聚集索引,则数据库中将保存该视图的内容。
创建视图的语句如下:

create view view_name
as
select column_name from table_name where view_event
go

其中:
view_name:表示视图名称,可自己定义;
column_name:表示需要创建视图的列名,可自行定义;
table_name:表示需要创建视图的表名,可自行定义;
view_event:表示条件。

创建索引视图的步骤:

  1. 使用SCHEMABINDING字句来创建一个视图。这个视图必须符合许多要求,例如,它只能引用统一数据库中的基表,而不能是其他标准视图。所有引用的函数必须是确定性的,行集函数、派生表和子查询都不能在索引视图中使用;
  2. 在视图上创建一个唯一索引。这个索引的叶子级由视图的完整结果集组成;
  3. 在聚集索引的基础上根据需求创建非聚集索引。非聚集索引可以按平常的方式创建;
  4. 创建并使用视图。

视图的优点:

  • 简单性
  • 安全性
  • 逻辑数据独立性

视图的缺点:

  • 性能差
  • 修改限制

六、alter database命令

例题:
在SQL sever 2008中,设要为数据库DB1添加一个新的数据文件,改文件的逻辑名为filex,物理文件名为filex.ndf,存储位置为D:\DB1,初始大小和最大大小均采用系统默认值,增长方式为自动增长,每次增加20%。下列语句中正确的是()

A.ALTER DATABASE DB1 ADD FILE(
NAME=filex,
FILENAME=‘D:\DB1\filex.ndf’,
FILEGROWTH=20%)

B.ALTER DATABASE DB1 ADD FILE(
NAME=filex,
FILENAME=‘D:\DB1\filex.ndf’,
FILEGROWTH=20)

C.ALTER DATABASE DB1 ADD FILE(
NAME=filex,
FILENAME=D:\DB1\filex.ndf,
FILEGROWTH=20%)

D.ALTER DATABASE DB1 ADD FILE(
NAME=filex,
FILENAME=D:\DB1\filex.ndf,
FILEGROWTH=20)

解析:在SQL sever 2008中,ALTER DATABASE命令中的FILENAME对应的代码需要带上单引号。FILEGROWTH如果加上%则为百分比,如果省略%,数据库系统则默认采用增加单位是MB。所以上题答案是A。

七、Guest用户

guest用户即来宾用户。(ps:作者曾在《信息安全技术》课上做过Windows账号克隆实验,那是第一次接触到guest用户,不过对此并不了解,而且Windows中的guest用户与SQL sever中的guest用户又有着不同的地方。要知道guest用户有何用处,推荐看看SQL SEVER数据库中Guest用户

八、SQL Sever 2008身份验证模式

关于SQL sever 2008身份验证模式,在“Windows身份验证模式”下,不允许sa登录到SQL sever服务器。
不管是哪种身份验证模式Windows中的administrator无需授权就可登录到SQL sever服务器。
安装后SQL sever之后,可以根据需要随时更改身份验证模式。
在“Windows身份验证模式”下,所以Windows用户登录到SQL sever服务器都无需再提供用户名和密码,但SQL sever会从用户登录到Windows时提供的用户名和密码查找当前用户的信息,判断其是否是SQL sever的合法用户,不是,则拒绝登录。

九、DDL

DDL即数据库模式定义语言,用于描述数据库要存储的现实世界实体的语言。
一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。
数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化程序设计语言)的组成部分。SQL语言包括四种主要程序设计语言类别的语句:

  • 数据定义语言(DDL)
  • 数据操作语言(DML)
  • 数据控制语言(DCL)
  • 事务控制语言(DCL)

十、游标

游标的作用:查询返回的结果很大,可在存储过程或者函数中使用游标逐条读取数据记录。

  • 声明游标:

declare cursor_name cursor for select_statement

其中
cuisor_name:表示游标名称,可自行定义。

  • 打开游标:

open cursor_name

  • 使用游标:

fetch cursor_name into var1, var2,…

  • 关闭游标:

close cursor_name

(PS:终于回家了!!之前回老家去看望外公外婆,本来打算过几天就回来的,可是人算不如天算,才去没两天就彻底封路了,直到前两天才有机会回来。已经三个多星期没有写文章了,接下来要加油了,得多多向大佬们学习!同时希望这次疫情早点结束。中国加油!武汉加油!~)

发布了6 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44321509/article/details/104408540