数据库实战(二)(引言+关系代数)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀数据库

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

前言

常见概念

一、什么是数据库?

二、什么是数据独立性?数据库系统如何实现数据独立性?

三、简述数据库管理员的职责

四、简述数据库系统三级模式结构及其同数据独立性之间的关系

五、什么是 DBMS?

六、 试述 ER 模型、层次模型、网状模型、关系模型和面向对象模型的主要特点

关系代数

题目一 

题目二

总结 


前言

本系列的重点是大学本科课程《数据库系统概念》。总结数据库学习中的各类知识点,并且对各类数据库考试中可能遇到的题型和对应的解法做总结归纳。在自我复习的同时也将这份心得带给大家,希望能对大家的数据库学习提供帮助~~
本篇复习的点是数据库中的常见概念

常见概念

一、什么是数据库?

定义:数据库=存放数据的一个仓库=数据集合

修饰:按照数据模型组织、长期存储在计算机内、为多用户共享、由数据库管理系统统一管理

数据库是按照一定的数据模型组织的、长期存储在计算机内,可为多个用户共享的、由数据库管理系统统一管理和控制的数据的集合

二、什么是数据独立性?数据库系统如何实现数据独立性?

数据独立性:数据和应用程序相互独立

数据库利用三级结构两级映像实现数据独立性

数据独立性是指应用程序和数据之间是相互独立的,即数据发生变化不必修改应用程序。数据变化包括数据逻辑结构变化、数据物理结构变化,因此独立性可以分为逻辑独立性物理独立性。逻辑独立性指数据逻辑结构变化不影响应用程序变化;物理独立性指数据物理结构变化不必修改应用程序。

数据独立性包括以上两个部分,是由DBMS的三级模式两级映像实现的。三级模式包括外模式、模式、内模式,两级映像包括外模式/模式映像和模式/内模式映像。当数据物理结构变化时,通过修改模式/内模式映像,可以使得模式不发生变化,因此应用程序不用修改;当数据逻辑结构变化时,通过修改外模式/模式,可以使得外模式不变,因此应用程序不变。因此保证了数据独立性

三、简述数据库管理员的职责

定义:模式定义、存储结构及存取方式定义、

修改:模式及物理组织的修改

日常使用:数据访问授权、日常维护

模式定义:数据库管理员通过DDL书写一系列的定义来构造最初的数据库模式

存储结构和存取方式定义:定义数据库用什么存储结构来存储,同时决定是否使用索引等存取方式

模式及物理组织的修改:在定义完成后,因需求变化或提高性能,改进数据库模式/物理结构

数据访问授权:在日常使用中,DBA能够授予不同的用户不同的权限去访问数据库不同的部分

日常维护:定期备份数据库、监视数据库的运行

四、简述数据库系统三级模式结构及其同数据独立性之间的关系

1、简述数据系统三级模式结构

2、简述数据独立性

3、通过两级映像分析三级模式结构和数据独立性的关系

数据库系统存在三级模式分别是外模式、模式和内模式,同时三级模式中存在二级映像分别是外模式/模式映像、模式/内模式映像。数据独立性是指应用程序和数据相互独立,包括逻辑独立性和物理独立性。当物理结构发生变化可以修改模式/内模式映像使得模式不发生变化,从而使得应用程序不发生变化;当逻辑结构发生变化时可以修改模式/模式映像,使得外模式不发生变化,从而使得应用程序不变化

五、什么是 DBMS?

DB:数据库

DBA:数据库管理员

DBMS:数据库管理系统

数据库管理系统,对数据库进行统一的管理和控制

六、 试述 ER 模型、层次模型、网状模型、关系模型和面向对象模型的主要特点

模型描述:

1、数据结构

2、靠什么实现联系

3、执行效率

4、用户理解难度

5、DML是过程化还是非过程化——>编程难度

1、E-R模型是实体联系模型。从实体和实体间的各种关系来表达联系,与计算机系统无关,用户容易理解,且能够充分表达现实世界

2、层次模型的数据结构是树结构,记录之间联系通过指针实现,查询较快,但是DML属于过程化的,操作复杂

3、网状模型的数据结构是有向图,记录之间联系通过指针实现,查询较快,但是DML属于过程化的,编程复杂,不易理解

4、关系模型的数据结构是二维表格,联系靠关系实现。DML属于非过程化的,编程简单,容易理解

5、面向对象模型的数据结构主要是类和对象,联系靠封装、多态、继承等实现。具有丰富的表达能力,能够很好反映现实世界的实际情况。但是用户难以理解,知识面较广

关系代数

关系代数求解流程:

1、确定需要哪几个关系模式

2、确定关系模式之间的关系应该怎么样(技巧见下面)

各种关系使用的场景:

1、产生联系——>自然连接(员工和经理在同一城市——>员工经理要有联系)

2、比较条件(相等、大于、小于)——>笛卡尔积(员工和经理在同一城市——>同一城市同一街道)

3、否条件=全集-正条件(不在那里工作=全集-在那里工作)

4、与“所有”比较大小关系——>可以用Gmin和Gmax聚集处理(比所有高——>Gmax找最高,比较)

5、查询“所有”元组——>利用与全集自然连接

6、爷孙关系——>利用同一关系模式做笛卡尔积(爸爸1儿子1 爸爸2儿子2关系 满足 儿子1=爸爸2)

7、需要多属性参与——>自然连接拓充属性

8、找+比较“所有”下的“所有"——>Gcount+Gmax(聚集函数不能嵌套使用,应该用中间关系分开)

9、与“所有”比较大小关系——>可以用全集-不满足条件=满足条件(减少一次聚集函数使用)

10、使用聚集函数后的更名操作是不必要的,属性名就可以用聚集函数代替(类似sum(salary)就是一个属性名)

11、对于需要用到多次聚集函数/复杂运算的题目——>赋值运算利用中间关系简化

12、已知一个关系,包含所有这个关系元组——>除运算

13、每个+每个——>两个属性进行分组研究(所有出版社找所有员工里满足的)

14、没有借书、上课的也包括——>在加入时就要用左外连接(左边的一定存在)

15、求平均——>用avg

15、平均数=所有/人数——>利用count求每个的值+利用avg实现所有/人数

题目一 

基于员工关系模式完成以下查询:

Employee(person_name, street, city)

Works(person_name,company_name,salary)

Company(company_name, city)

Manages(person_name,manager_name) 

1、找出与其经理居住在同一城市同一街道的员工

  1. 确定关系模式用employee和manages
  2. 思考两个关系模式用的具体关系

2、找出不在First Bank Corporation 公司工作的职工

  1. 确定关系模式用works和employee(首先是职工,然后是不在~工作;职工在employee中找,因为是职工可能最近刚刚辞职不在works里)
  2. 思考两个关系模式用的具体关系

Πperson-name(employee) - Πperson-name(σcompany-name = ‘First Bank Corporation’(works))

3、找出比First Bank Corporation 公司所有员工的收入都高的员工姓名

  1. 确定关系模式用works
  2. 思考两个关系模式用的具体关系

4、找出所有在经理’Jones’下工作的员工

  1. 确定关系模式用managers
  2. 思考两个关系模式用的具体关系

修正:

1、mname=manager_name

2、选择后还要投影到person_name 

 5、找出所有在经理’Jones’下工作的员工所居住的城市

  1. 确定关系模式用managers
  2. 思考两个关系模式用的具体关系

 6、找出’Jones’经理的经理

  1. 确定关系模式用managers
  2. 思考两个关系模式用的具体关系

 7、找出比住在‘Mumbai’的所有员工收入都高那些员工

  1. 确定关系模式用employee⋈works(同时考虑地址和收入)
  2. 思考两个关系模式用的具体关系

8、找出First……的所有员工姓名和居住城市

Πperson_name,city(σcompany name = ‘First Bank Corporation’(works⋈employee))

9、找出所有居住地与工作的公司在同一城市的员工姓名

Πperson_name(σcompany.city=employee.city(employee⋈ works⋈ company))

10、找出员工最多的公司

1、找到所有公司的员工——>聚集函数Gcount

2、在所有公司的员工数关系中找最大的——>Gmax

3、在所有公司的员工数关系中找最大的这里用了另一个思路——>求全集的补集

本题的属性更名运算可以不必要,t1的属性默认就是cname、count(pname) 

13 、 找出工资总额最少的公司 (smallest payroll)

本题思路和上一题相类似 

14 、 找出人均工资比 First 公司人均工资高的公司

题目二

基于图书关系模式完成以下查询

Member(memb_no,name,dob)

Books(isbn,author,publisher)

Borrowed(memb_no, isbn,date)                                                                                                                                                                                                                                                                                                                              

 1、找出借了任何由MG出版的书的员工的姓名

∏name(σpublisher=’MG’(member ⋈ books ⋈ borrowed))

确定好需要三个关系来共同处理本题便做完了

2、找出借了由MG出版的所有的书的员工的姓名

∏name( (∏memb_no,isbn(borrowed) ÷ ∏isbn(σpublisher=’Mc’(books))) ⋈ member)

本题的关键点在于——除运算

3、找出借了至少5本不同的由MG出版的书的员工的姓名

 4、对于每个出版商,找出借了至少5本该出版商的书的员工的姓名

5、找出平均每个成员借了多少本书(没借书的成员也包含在内)。

左外连接将没借的也包括在里面 

总结 

本文的所有知识点、图片均来自《数据库系统概念》(黑宝书)、山东大学李晖老师PPT。不可用于商业用途转发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙】HUAWEI DevEco Studio安装

HUAWEI DevEco Studio介绍 面向HarmonyOS应用及元服务开发者提供的集成开发环境(IDE), 助力高效开发。 DevEco Studio当前最新版本是: 3.1。 DevEco Studio计划里程碑 版本类型说明 下载 下载网址:DevEco Studio安装包官⽅下载 双击运行…

C++ | Leetcode C++题解之第169题多数元素

题目&#xff1a; 题解&#xff1a; class Solution { public:int majorityElement(vector<int>& nums) {int candidate -1;int count 0;for (int num : nums) {if (num candidate)count;else if (--count < 0) {candidate num;count 1;}}return candidate;…

STM32通过Flymcu串口下载程序

文章目录 1. Flymcu 2. 操作流程 2.1 设备准备 2.2 硬件连接 2.3 设置BOOT引脚 2.4 配置 2.5 下载程序 1. Flymcu Flymcu软件可以通过串口给STM32下载程序&#xff0c;如果没有STLINK的时候&#xff0c;就可以使用这个来烧录程序。软件不用安装&#xff0c;直接打开就行…

Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?

1 引言 电脑配置 Windows 11 cuda 12.0 RTX4090 由于tensorflow2官网已经不支持cuda11以上的版本了&#xff0c;配置cuda和tensorflow可以通过以下步骤配置实现。 2 步骤 &#xff08;1&#xff09;创建conda环境并安装cuda和cudnn&#xff0c;以及安装tensorflow2.10 con…

[Python学习篇] Python字典

字典是一种可变的、无序的键值对&#xff08;key-value&#xff09;集合。字典在许多编程&#xff08;Java中的HashMap&#xff09;任务中非常有用&#xff0c;因为它们允许快速查找、添加和删除元素。字典使用花括号 {} 表示。字典是可变类型。 语法&#xff1a; 变量 {key1…

CIRCOS圈图绘制 - circos安装

Circos是绘制圈图的神器&#xff0c;在http://circos.ca/images/页面有很多CIRCOS可视化的示例。 Circos可以在线使用&#xff0c;在线使用时是把表格转为圈图&#xff0c;不过只允许最大75行和75列&#xff1b;做一些简单的示意图会比较好&#xff0c;最后时会介绍下在线的tab…

第二十四篇——纠错码:对待错误的正确态度是什么?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 当我们面对错误的发生&#xff0c;是一个确定事件的时候&#xff1b;我们…

Golang | Leetcode Golang题解之第169题多数元素

题目&#xff1a; 题解&#xff1a; func majorityElement(nums []int) (ans int) {cnts : 0for _, v : range nums {if v ans {cnts} else if cnts 0 {ans v} else {cnts--}}return }

python flask配置邮箱发送功能,使用flask_mail模块

&#x1f308;所属专栏&#xff1a;【Flask】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点…

使用Python和BeautifulSoup轻松抓取表格数据

你是否曾经希望可以轻松地从网页上获取表格数据&#xff0c;而不是手动复制粘贴&#xff1f;好消息来了&#xff0c;使用Python和BeautifulSoup&#xff0c;你可以轻松实现这一目标。今天&#xff0c;我们将探索如何使用这些工具抓取中国气象局网站(http://weather.cma.cn)上的…

Spring Boot集成tensorflow实现图片检测服务

1.什么是tensorflow&#xff1f; TensorFlow名字的由来就是张量(Tensor)在计算图(Computational Graph)里的流动(Flow)&#xff0c;如图。它的基础就是前面介绍的基于计算图的自动微分&#xff0c;除了自动帮你求梯度之外&#xff0c;它也提供了各种常见的操作(op&#xff0c;…

python爬虫之selenium自动化操作

python爬虫之selenium自动化操作 需求&#xff1a;操作淘宝去掉弹窗广告搜索物品后进入百度回退又前进 selenium模块的基本使用 问题&#xff1a;selenium模块和爬虫之间具有怎样的关联? 1、便捷的获取网站中动态加载的数据 2、便捷实现模拟登录 什么是selenium模块&#x…

番外篇 | 基于YOLOv5-RCS的明火烟雾检测 | 源于RCS-YOLO

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文就给大家详细介绍如何将RCS-YOLO…

<Linux> 基础IO

文章目录 基础IO文件描述符重定向重定向本质重定向系统调用 基础IO 文件描述符 系统底层提供打开文件(open)&#xff0c;读(read)&#xff0c;写(write)&#xff0c;关闭文件(close)的系统调用&#xff0c;如果想详细了解可以复制以下命令仔细阅读使用方法&#xff0c;这里不…

如何解决windows自动更新,释放C盘更新内存

第一步&#xff1a;首先关闭windows自动更新组件 没有更新windows需求&#xff0c;为了防止windows自动更新&#xff0c;挤占C盘空间&#xff0c;所以我们要采取停止Windows Update服务。按下WinR打开运行对话框&#xff0c;输入services.msc&#xff0c; 然后按Enter。在服务…

24上软考成绩预计6月底公布?附查分指南

最近&#xff0c;很多小伙伴都在问上半年成绩什么时候出来&#xff1f;每天学习群变成了祈祷群&#xff0c;都在祈祷45,45,45。按照上一次的成绩发布时间&#xff0c;从考试结束到成绩发布&#xff0c;间隔了32天。这次是不是会更快&#xff1f; 一般阅卷只要7-10天&#xff0c…

内核模块的各种概念及示例

基本概念 (1)模块本身不被编译入内核映像&#xff0c;从而控制了内核镜像的大小。模块一旦insmod&#xff0c;它就和内核中的其他部分完全一样 (2)内核中已加载模块的信息也存在于/sys/module目录下&#xff1b;内核中将包含/sys/module/test_mod目录 (3)modprobe在加载某模…

系统架构设计师 - 数据库系统(1)

数据库系统 数据库系统数据库模式 ★分布式数据库 ★★★数据库设计阶段 ★★ER模型 ★关系模型 ★ ★结构约束条件完整性约束 关系代数 ★ ★ ★ ★概述自然连接 大家好呀&#xff01;我是小笙&#xff0c;本章我主要分享系统架构设计师 - 数据库系统(1)知识&#xff0c;希望内…

RX8025/INS5T8025实时时钟-国产兼容RS4TC8025

该模块是一个符合I2C总线接口的实时时钟&#xff0c;包括一个32.768 kHz的DTCXO。 除了提供日历&#xff08;年、月、日、日、时、分、秒&#xff09;功能和时钟计数器功能外&#xff0c;该模块还提供了大量其他功能&#xff0c;包括报警功能、唤醒定时器功能、时间更新中断功能…

索引和深分页优化案例

一、初始状态没加索引 总数据100w左右 浅分页 查询10条需要1.5s左右 select * from timer_task where app hzhXtimer order by run_timer limit 0,10深分页查询10条需要1.7s左右 select * from timer_task where app hzhXtimer order by run_timer limit 100000,10看执…