数据模型三要素分别为
范式即设计数据库时,需要遵循的一些规范。要遵循后面的要求,就必须遵循前面的所有范式要求。
关系数据库中共有6种范式,分别为
满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。
第一范式即数据表的每一列都是不可分割的基本数据项。
如“出生日期”一列中,如果再分割为“阳历出生日期”和“农历出生日期”,就不符合第一范式。
第二范式是在第一范式的基础上建立起来的,满足第二范式就必须满足第一范式。
在第一范式的基础上,数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,则满足第二范式。
学号 | 姓名 | 年龄 | 课程名称 | 成绩 | 学分 |
---|---|---|---|---|---|
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 |
这样的数据表是符合第二范式的,消除了数据冗余、更新异常、插入异常、删除异常。
第三范式是在第二范式的基础上建立起来的,满足第三范式就必须满足第二范式。
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。
学号 | 姓名 | 年龄 | 学院 | 学院电话 |
---|---|---|---|---|
001 | 张三 | 20 | 信息学院 | 123456 |
002 | 李四 | 21 | 信息学院 | 123456 |
003 | 王五 | 20 | 会计学院 | 123405 |
上表存在关系:(学号)->(姓名,年龄,学院,学院电话)。所以满足第二范式。
同时存在关系:(学号)->(学院)->(学院电话)。所以不满足第三范式。
它也会存在数据冗余、更新异常、插入异常、删除异常的情况。
将上关系表改为以下关系表:
学号 | 姓名 | 年龄 | 学院 |
---|---|---|---|
001 | 张三 | 20 | 信息学院 |
002 | 李四 | 21 | 信息学院 |
003 | 王五 | 20 | 会计学院 |
学院 | 学院电话 |
---|---|
信息学院 | 123456 |
会计学院 | 123405 |
这样就符合第三范式,消除了数据冗余、更新异常、插入异常、删除异常。
数据库逻辑设计是整个数据库设计的前半段,包括所需的实体和关系,实体规范化等工作。
数据库物理设计是数据库设计的后半段,将一个给定逻辑结构实施到具体的环境中时,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法,这个过程就是数据库的物理设计。
确定数据库的物理结构包含下面四方面的内容:
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个优化方案作为数据库物理结构。在数据库物理设计中,最有效的方式是集中地存储和检索对象。
视图是从一个或多个表(或视图)导出的虚拟表。
数据库中只存储标准视图的定义,并不存储标准视图的内容。如果在视图上创建了唯一聚集索引,则数据库中将保存该视图的内容。
创建视图的语句如下:
create view view_name
as
select column_name from table_name where view_event
go
其中:
view_name:表示视图名称,可自己定义;
column_name:表示需要创建视图的列名,可自行定义;
table_name:表示需要创建视图的表名,可自行定义;
view_event:表示条件。
创建索引视图的步骤:
视图的优点:
视图的缺点:
例题:
在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用户即来宾用户。(ps:作者曾在《信息安全技术》课上做过Windows账号克隆实验,那是第一次接触到guest用户,不过对此并不了解,而且Windows中的guest用户与SQL sever中的guest用户又有着不同的地方。要知道guest用户有何用处,推荐看看SQL SEVER数据库中Guest用户)
关于SQL sever 2008身份验证模式,在“Windows身份验证模式”下,不允许sa登录到SQL sever服务器。
不管是哪种身份验证模式Windows中的administrator无需授权就可登录到SQL sever服务器。
安装后SQL sever之后,可以根据需要随时更改身份验证模式。
在“Windows身份验证模式”下,所以Windows用户登录到SQL sever服务器都无需再提供用户名和密码,但SQL sever会从用户登录到Windows时提供的用户名和密码查找当前用户的信息,判断其是否是SQL sever的合法用户,不是,则拒绝登录。
DDL即数据库模式定义语言,用于描述数据库要存储的现实世界实体的语言。
一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。
数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化程序设计语言)的组成部分。SQL语言包括四种主要程序设计语言类别的语句:
游标的作用:查询返回的结果很大,可在存储过程或者函数中使用游标逐条读取数据记录。
declare cursor_name cursor for select_statement
其中
cuisor_name:表示游标名称,可自行定义。
open cursor_name
fetch cursor_name into var1, var2,…
close cursor_name
(PS:终于回家了!!之前回老家去看望外公外婆,本来打算过几天就回来的,可是人算不如天算,才去没两天就彻底封路了,直到前两天才有机会回来。已经三个多星期没有写文章了,接下来要加油了,得多多向大佬们学习!同时希望这次疫情早点结束。中国加油!武汉加油!~)