1. 关系代数
- 选择 查询元组 -行
- 投影 查询属性 -列
- 笛卡尔积
- 集合差
- 集合并
2.常用操作
1.集合交 2.连接 ~笛卡尔积保留那些相匹配的
- 条件链接
- 等值连接 筛选等值留下
- 自然连接 最后进行筛选,把重复的列去掉
- 外连接
- 左外 左边全留
- 右外
- 外连接
- 除运算 有公共属性,被除数与除数所有相关属性都要有关联 **求解步骤过程: 第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下
第二步:被除关系R中与S中不相同的属性列是X ,关系R在属性(X)上做取消重复值的投影为{X1,X2}; 第三步:求关系R中X属性对应的像集Y 根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图4所示
第四步:判断包含关系 R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。对比即可发现: X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1; 而X2的像集包含了关系S中属性Y的所有值,所以R÷S的最终结果就是X2 ,**
3.SQL
https://www.liaoxuefeng.com/wiki/1177760294764384/1179610846971200
- 模式的定义与删除: CREATE SCHEMA “S-T” AUTHORIZATION WANG;如果没有指定模式名 模式名隐含为 用户名 给老张弄一个表table1 CREATE SCHEMA AUTHORIZATION ZHANG; CREATE TABLE TABLE1{ ID INT PRIMARY KEY; NAME CHAR(20) UNIQUE; FOREIGN KEY (ID) REFERENCES (NAME);; J NJ } 删除模式 DROP SCHEMA ZHANG CASCADE/RESTRICT(这是两种可选项,必须选)
- 基本表的定义与删除 上 修改基本表ALTER TABLE Student money INT;增加 ALTER TABLE Student ALTER COLUMN Sage INT;改int ALTER TABLE Course ADD UNIQUE(Cname); 删除:DROP TABLE Ab CASCADE/RESTRICT(这是两种可选项,必须选)
- 建立索引 CREATE UNIQUE INDEX Stusno On Student(Cno); DROP INDEX STUSNAME;
- 查询 SELECT … FROM … WHERE …; WHERE :1比较大小>< ; 2(NOT)BETWEEN 20 AND 30: 3Id IN (‘表名’,’ ') 4字符匹配 用LIKE :%任意长度字符串:a%d确定了开头结尾 _匹配一个 5涉及空值 NULL …IS NULL
ORDER BY Grade DESC;
- 5.聚集函数 COUNT() SELECT COUNT() FROMSTRUDENT SUM MAX AVG
- GROUP BY
DB的安全性 一、概述
1.简介
代码语言:javascript复制 数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。 数据库的数据保护主要包括数据的安全性和完整性。
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、 更改或破坏。安全性问题不是数据库系统所独有的, 所有计算机系统都存在不安全因素。
角色 的创建: CREATE ROLE wudi; GRANT SELECT ON U1 TO wudi; [ WITH ADMIN OPTION]
TCSEC/T0 D安全级别划分 为四组 七个等级
- A1验证设计
- B3安全域
- B2结构化保护
- B1标记安全保护
- C2受控的存取保护
- C1自主安全保护
- D最小保护 没保护的垃圾 ①D级 将一切不符合更高标准的系统均归于D组 典型例子:DOS是安全标准为D的操作系统 注:DOS在安全性方面几乎没有什么专门的机制来保障 ②C1级 非常初级的自主安全保护 能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。
s授权:GRANT SELECT ON TABLE Student to User; 取消授权: REVOKE UPDATE(Sno),SELECT ON TEBLE SC FROM U1;
现有的商业系统稍作改进即可满足 ③C2级 安全产品的最低档次 提供受控的存取保护,将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离 达到C2级的产品在其名称中往往不突出“安全”(Security)这一特色 典型例子:Windows 2000、Oracle 7 ④B1级 标记安全保护。“安全”(Security)或“可信的” (Trusted)产品。 被认可的安全产品! 对系统的数据加以标记,对标记的主体和客体实施强制存取控制(MAC)、审计等安全机制 B1级典型例子: 操作系统:惠普公司的HP-UX BLS release 9.09 数据库:Oracle公司的Trusted Oracle 7、Sybase公司的Secure SQL Server version 11.0.6 ⑤B2级 结构化保护 建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC ⑥B3级 安全域 该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程 ⑦A1级
2.不安全因素
- 非授权用户对数据库的恶意存取和破坏 数据库管理系统提供的安全措施主要包括用户身份鉴别、 存取控制和视图等技术。
CREATE USER U1 WITH DBA/RESOURCE/CONNECT;
2)数据库中重要或敏感的数据被泄露 数据库管理系统提供的主要技术有强制存取控制、 数据加密存储、加密传输及审计功能等。 3)安全环境的脆弱性 与计算机系统的安全性紧密联系。
二、安全性控制措施 用户要求进入计算机系统时, 系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统; 对已进入系统的用户, 数据库管理系统还要进行存取控制, 只允许用户执行合法操作; 操作系统也会有自己的保护措施; 数据最后还可以以密码形式存储到数据库中。 数据库有关的安全性, 主要包括用户身份鉴别、 多层存取控制、 审计、 视图和数据加密等安全技术。
DB安全控制模型:
1)DBMS对数据库用户进行身份鉴别, 防止不可信用户使用系统;
2)在SQL处理层进行自主存取控制和强制存取控制, 进一步还可以进行推理控制。
3)为监控恶意访问, 可根据具体安全需求配置审计规则, 对用户访问行为和系统关键操作进行审计。
4)通过设置简单入侵检测规则, 对异常用户行为进行检测和处理。
5)在数据存储层, 数据库管理系统不仅存放用户数据, 还存储与安全有关的标记和信息(称为安全数据), 提供存储加密功能等。 1.用户身份鉴别
1)静态口令鉴别:固定的用户名和密码 2)动态口令鉴别:用户一次一密。如短信、动态令牌等。
3)生物特征鉴别及智能卡鉴别
2.存取控制
存取控制机制:确保只授权给有资格的用户访问数据库的权限, 同时令所有未被授权的人员无法接近数据。
1)自主存取控制:用户对于不同的数据库对象有不同的存取权限, 不同的用户对同一对象也有不同的权限。
2)强制存取控制:每一个数据库对象被标以一定的密级, 每一个用户也被授予某一个级别的许可证。
3.视图机制
代码语言:javascript复制 为不同的用户定义不同的视图, 把数据对象限制在一定的范围内。 也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来, 从而自动对数据提供一定程度的安全保护。
*CREATE VIEW CS_STUDENT
AS
SELECT *
FROM Student
WHERE Sdept='CS'*
4.审计
代码语言:javascript复制 审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)中。 审计员可以利用审计日志监控数据库中的各种行为, 重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、 时间和内容等。 还可以通过对审计日志分析, 对潜
在的威胁提前采取措施加以防范**。但审计功能很浪费时间和空间。** AUDIT ALTER,UPDATE ON SC;
5.数据加密
代码语言:javascript复制 数据加密是防止数据库数据在存储和传输中失密的有效手段。
基本思想:根据一定的算法将原始数据——明文(plain text)变换为不可直接识别的格式——密文(cipher text),从而使得不知道解密算法的人无法获知数据的内容。数据加密主要包括存储加密和传输加密。
存储加密:数据在写到磁盘时对数据进行加密, 授权用户读取数据时再对其进行解密。
传输加密:链路层加密和端到端加密。同计算机网络中的数据传输加密方式。
DB的完整性
1.简介
代码语言:javascript复制 数据库的完整性(integrity)是指数据的**正确性(correctness)和相容性(compat- ability)。**
数据的正确性是指数据是符合现实世界语义、反映当前实际状况的;
数据的相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的。
问题:数据库的完整性概念与数据库的安全性概念有什么区别和联系?
代码语言:javascript复制 既有联系,又有区别。
数据的完整性是为**了防止数据库中存在不符合语义(不正确)的数据**。 防范对象:不合语义的、 不正确的数据,防止进入
数据的安全性是**保护数据库被恶意破坏和非法存取**。防范对象:非法用户和非法操作,防止用户非法存取
为了维护数据库的完整性,DBMS必须提供的功能:提供定义完整性约束条件的机制(实体、参照、自定义);提供完整性检查的方法;进行违约处理。
## 2.完整性约束条件
1)实体完整性
1)检查主码值是否唯一, 如果不唯一则拒绝插入或修改。 2)检查主码的各个属性是否为空, 只要有一个为空就拒绝插入或修改。
方法:检查记录中主码值是否唯一的一种方法是进行全表扫描, 依次判断表中每一条记录的主码值与将插入记录的主码值(或者修改的新主码值)是否相同。
2)参照完整性
一个表的主码和另一个表的外码之间。
对被参照表和参照表进行增、删、 改操作时有可能破坏参照完整性, 必须进行检查以保证这两个表的相容性。
对于参照完整性, 除了应该定义外码, 还应定义外码列是否允许空值。 一般地, 当对参照表和被参照表的操作违反了参照完整性时, 系统选用默认策略, 即拒绝执行。
3)用户定义的完整性
用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。
例如:属性上的约束条件、元组上的约束条件 check(sex IN (‘男’,‘女’)) CONSTRAINT C1 CHECK (…);
3.断言
代码语言:javascript复制 通过声明性断言 (declarative assertions)来指定更具一般性的约束。断言创建以后,任何对断言中所涉**及关系的操作都会触发DBMS对断言的检查,**任何使断言不为真值的操作都会被拒绝执行。(即限制某种条件)
4.触发器
代码语言:javascript复制 实现数据库完整性的一个重要方法是触发器。
触发器(trigger)的执行是由触发事件激活,并由数据库服务器自动执行的。一旦定义, 触发器将被保存在数据库服务器中。任何用户对表的增、删、改操作均由服务**器自动激活相应的触发器。触发后**,对规则的条件进行检查,如果**条件成立则执行规则中的动作,否则不执行该动作。**
触发器是一种功能强大的工具,很精细,但在**使用时要慎重,因为在每次访问一个表时都可能触发一个触发器,这样会影响系统的性能。对于违反完整性的操作一般的处理是采用默认方式,如拒绝执行。**
关系型数据库中已经讲到,一个关系模型应当是一个五元组。
R(U,D,DOM,F) 这里:
- 关系名R是符号化的元组定义。
- U为一组属性。 *- D为属性组U中的属性所来自的域。
- DOM为属性到域的映射。*
- F为属性组U上的一组数据依赖。
数据依赖是一个关系内部属性和属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关的联系。
数据依赖其中最重要的是函数依赖(FD)和多值依赖(MVD)。
6.2 规范化
6.2.1 函数依赖
代码语言:javascript复制非平凡函数依赖:X→Y,但Y不是X的子集,一般讨论的都是这个
平凡函数依赖:X→Y,且Y是X的子集
完全函数依赖和部分函数依赖: 在这里插入图片描述
传递函数依赖:
https://blog.csdn.net/jokes000/article/details/7521259