数据库期末考试题

数据库安全性

(1)用户标识和鉴别:

该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才能提供系统的使用权

(2)存取控制

通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未授权的人员无法存取数据

(3)视图机制

为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

(4)审计

建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人,时间和内容等。

(5)数据加密

架构角色之间关系

我们要说的包括服务器登录名Server Login,服务器角色Server Role,数据库用户DB User,数据库架构DB Schema,数据库角色DB Role 。以上几个名词应该从服务器与数据库来区分,服务器包含一到多个数据库,其中:

服务器登录名,指有权限登录到某服务器的用户;

服务器角色,指一组固定的服务器用户,默认有9组;

登录名一定属于某些角色,默认为public
服务器角色不容许更改
登录后也不一定有权限操作数据库
数据库用户,指有权限能操作数据库的用户;

数据库角色,指一组固定的有某些权限的数据库角色;

数据库架构,指数据库对象的容器;

数据库用户对应于服务器登录名以便登录者可以操作数据库
数据库角色可以添加,可以定制不同权限  
数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象
而通过下图可以让这些概念清晰一些:

即:

服务器登录名属于某组服务器角色;
服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限
数据库用户属于某组数据库角色以获取操作数据库的权限
数据库角色拥有对应的数据库架构,数据库用户可以通过角色直接拥有架构
数据库用户有默认架构,写SQL语句可以直接以“对象名”访问
非默认架构则要以“架构名.对象名”访问

说说哪些地方体现了完整性

1、域的完整性:数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。用Check来实现约束,在数据库设计工具中,对字段的取值范围进行定义时,有一个Check按钮,通过它定义字段的值城。

2、参照完整性:就是定义外码与主码之间的引用规则。用PK、FK、表级触发器来实现。原理规则就是若属性(或属性组)f是基本关系r的外码,它与基本关系s的主码ks相对应(基本关系r和s不一定是不同的关系),则对于r中每个元组在f上的值必须为:或者取空值(f的每个属性值均为空值)或者等于s中某个元组的主码值。

3、实体完整性规则(entityintegrity):若属性a是基本关系r的主属性,则属性a不能取空值。由于实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系。现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识,数据库设计关系模型必须遵守实体完整性规则。

4、用户定义完整性:用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。它是一些业务规则,用存储过程和触发器来实现。

建数据库的表角色权限视图

索引的设计视图的设计

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一道可能的MySQL数据库期末考试题考试题目: 一个学生选课的数据库包含两张表:学生表(student)和选课表(course_student)。学生表包含学生的id、姓名、性别和出生日期等信息;选课表包含选课记录的id、学生id和课程id等信息。请根据以下要求,编写SQL语句查询对应的结果。 1. 查询每个学生选了多少门课程,并按照选课门数从多到少排序。 2. 查询每个学生所选的课程名称和任课教师,并按照学生id升序排序。 3. 查询选了“数学”课程的学生的姓名和选课门数,并按照选课门数从多到少排序。 4. 查询选了“数学”课程但未选“英语”课程的学生的姓名和选课门数,并按照选课门数从多到少排序。 5. 查询选课门数排名前三的学生的id、姓名和选课门数。 考试答案: 1. ```sql SELECT cs.student_id, COUNT(*) AS course_count FROM course_student AS cs GROUP BY cs.student_id ORDER BY course_count DESC; ``` 2. ```sql SELECT s.id, s.name, c.name AS course_name, c.teacher FROM student AS s JOIN course_student AS cs ON s.id = cs.student_id JOIN course AS c ON cs.course_id = c.id ORDER BY s.id ASC; ``` 3. ```sql SELECT s.name, COUNT(*) AS course_count FROM student AS s JOIN course_student AS cs ON s.id = cs.student_id JOIN course AS c ON cs.course_id = c.id WHERE c.name = '数学' GROUP BY s.id ORDER BY course_count DESC; ``` 4. ```sql SELECT s.name, COUNT(*) AS course_count FROM student AS s JOIN course_student AS cs1 ON s.id = cs1.student_id JOIN course AS c1 ON cs1.course_id = c1.id LEFT JOIN course_student AS cs2 ON s.id = cs2.student_id AND cs2.course_id = (SELECT id FROM course WHERE name = '英语') WHERE c1.name = '数学' AND cs2.course_id IS NULL GROUP BY s.id ORDER BY course_count DESC; ``` 5. ```sql SELECT s.id, s.name, COUNT(*) AS course_count FROM student AS s JOIN course_student AS cs ON s.id = cs.student_id GROUP BY s.id ORDER BY course_count DESC LIMIT 3; ``` 希望以上MySQL数据库期末考试题和答案能够对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东方-教育技术博主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值