数据库原理及应用


过了一个开心的五一

0x01简介

  • 基本定义

数据库:某一领域中相关数据的集合
数据:已知的事实,可以被记录,并具有隐含意义在数据库中存储数据的真实世界的一部分。例如,学生在大学的成绩。
数据库管理系统(DBMS):帮助建立和维护计算机化数据库的软件包/系统。
数据库系统:DBMS软件和数据本身一起。有时还包括应用程序和用户。

  • 数据库方法的主要特点

1.数据库系统的自描述性质;
2.程序与数据之间的隔离;
3.数据抽象:数据模型用于隐藏存储细节,并向用户呈现数据库的概念视图。程序指的是数据模型的构造,而不是数据存储的细节。
4.支持多种视图的数据:每个用户可以看到数据库的不同视图,该视图只描述该用户感兴趣的数据
5.数据共享和多用户事务处理

  • 使用数据库方法的优点

1.控制数据存储、开发和维护工作中的冗余;(多用户共享数据)
2.限制未经授权访问数据;
3.为程序对象提供持久存储;
4.为高效的查询处理提供存储结构(例如索引);
5.提供备份和恢复服务;
6.为不同类型的用户提供多个接口;
7.表示数据之间的复杂关系;
8.对数据库强制完整性约束;
9.使用演绎和活动规则从存储的数据中得出推论和动作。


0x02重点

1.假设一个数据库包含 4 个关系

教师关系 T(Tno、Tname、Title、IDCard),具有教师编号(Tno)、教师姓名(Tname)、职称(Title)、身份证号码(IDCard)等属性;
课程关系 C(Cno, Cname, Tno):课程号(Cno)、课程名(Cname)、教师名(Tno);
学生 S(Sno, Firstname, Lastname, Birthday, Sex,IDCard):学号(Sno)、姓名、生日、性别、身份证(IDCard)的关系;
选课关系(Sno、Cno、Score):学号(Sno)、课程号(Cno)和成绩(Score)。

根据现实世界中的情况:

  1. 请给出教师关系的两个合理的候选键,一个主键。
    候选键:Tno, IDCard;主键:Tno
  2. 写出 SC 关系的主键和外键,分别说明它们的含义。
    主键:(Sno学号, Cno课程号)??;外键(Sno学号),它的值引用学生关系中属性 Sno 的值。
  3. 给出 S 关系中生日属性和得分属性合适的数据类型。
    Birthday Datetime,Score float
  4. 在 SC realtion 中为属性分数添加值在 0 到 100 之间的约束。
    Alter table SC add constraint Check(score between 0 and 100)
  5. 关系 T 的职称属性增加非空约束。
    Alter table T add constraint title not null

2.举例说明关系模式、关系、主键、候选键等概念

关系是用于描述数据的一张二维表,组成表的行称为元组,组成表的列称为属性。
候选键(Candidate Key)也称为候选码。能唯一的标识关系中每一个元组的最小属性集。一个关系可能有多个候选键。
主键(Priamary Key,PK)也称为主码。一个唯一识别关系中元组的最小属性集合。可以从关系的候选键中,指定其中一个作为关系的主键。一个关系最多只能指定一个主键。要求作为主键的列不允许取NULL值。
外键(Foreign Key,FK)关系R中的某个属性K是另一个关系S中的主键,则称该属性K是关系R的外键。通过外键可以建立两表间的联系。


3. 叙述数据和程序的物理独立性和逻辑独立性

解答要点:
物理独立性:存储模式变化,只要调整模式/内模式映像,即可保持模式不变,从而应
用程序不需要改变。
逻辑独立性:模式变化,只要调整外模式/模式映像,即可保持外模式不变,从而应用
程序不需要改变。


4.关系模型 3 大类别约束和含义,并举例说明

  1. 实体完整性

实体完整性给出了主键的取值的最低约束条件。
规则4.1 :主键的各个属性都不能为空值。

  1. 参照完整性

参照完整性给出了在关系之间建立正确的联系的约束条件。
定义4.1:设F是关系R的一个或一组属性(但F不是R的主键),K是关系S的主键。如果F与K相对应,则称F是关系R的外键,并称关系R为参照关系,关系S为被参照关系。而关系R和关系S可以是同一个关系。
规则4.2:外键或者取空值(要求外键的每个属性均为空值),或者等于被参照关系中的主键的某个值。

  1. 用户定义完整性

规则4.3 属性的取值应当满足用户定义的约束条件。


5.基本SQL应用

E1


6.基于用户、角色的授权方法

read -允许读取数据,但不允许修改数据。
insert-允许插入新数据,但不允许修改现有数据。
update-允许修改,但不允许删除数据。
delete-允许删除数据。
index-允许创建和删除索引。
resources-允许创建新的关系修改
alteration-在关系中添加或删除属性。
drop-允许删除关系。

SQL授权grant <privilege list> on <relation name or view name> to <user list>
SQL取消授权revoke <privilege list> on <relation name or view name> from <user list>

E2

假设有一个员工管理系统包括以下table: emp, dept
1、设计两个角色:adminrole为admin角色,另一个角色为employeerole一般员工角色,分别赋予它们对两个表和系统的合理访问权限;
2、让两个角色分别包含至少两个用户(也许需要创建user)
3、验证您的权限设置。
老师示例:

mysql -u root -p
create user hxw identified by '123';
grant all privileges on *.* to hxw;
create database exam;
create table student(stuid int primary key, stuname varchar(20),birthday datetime);
create table course(cid int primary key, cname varchar(20),credit double);
create table grade(stuid int ,cid int,score int,primary key(stuid,cid));
insert into student values(1,"zhang","2000-09-12");
insert into student values(2,"wang","2001-09-12");
create role if not exists   'exam_read','exam_rw';
Exit
mysql -u root -p
grant select on exam.* to exam_read;
grant select,insert,delete,update on exam.* to exam_rw;
create user readuser1 identified by '123';
create user readuser2 identified by'123';
create user rwuser1 identified by '123';
create user rwuser2 identified by '123';
grant exam_read to readuser1,readuser2;
grant exam_rw to rwuser1,rwuser2;
set default role exam_read to readuser1,readuser2;
set default role exam_rw to rwuser1,rwuser2;
exit
mysql -u readuser1 -p
show grants for hxw;
grant grant option on *.* to hxw;
create user rwuser3 identified by '123';
grant exam_rw to rwuser3;
set default role exam_rw to rwuser3;
grant all privileges on *.* to hxw with grant option;
desc grade;

7.数据库完整性与安全性区别

数据库完整性保证数据库中数据的正确性;
数据库安全性是防止数据库中数据被非法访问;
总结来说,数据库安全性措施的防范对象是非法用户和非法操作,数据库的完整性措施的防范对象是不合语义的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ca1m4n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值