数据库系统原理1

2023-05-16

第一章

数据库管理技术发展的不同阶段形成不同的特点

数据描述经历了三个阶段对应于三个数据模型

 

第二章

数据库系统的生命周期,书中可能和我们学习软工的时候有些出入,其实就是不同时间有不同的理解,横看成岭侧成峰,多看一些自然可以把握全局

区分超键、候选键、主键,首先看一下他们之间的关系图

如:在一个班级里假设没有重名的同学,现有四个属性:学号 姓名 年龄 性别

超键:在关系中可以唯一标识元组的属性集。学号是超键;学号、姓名是超键;学号,姓名、性别是超键。所以超键可以是一个属性也可以是一个属性集,只要可以唯一标识就行。

候选键:不含有多余属性的超键。意思就是可以是多个属性确定,如:班里有男生小明和女生小明,现在就可以用姓名和性别来唯一确定他们,如果你删除 其中一个属性就不可以唯一确定了。

主键:用户选作元组标识的候选键。如学号和姓名都是候选键,但是这个时候我选择学号作为唯一标识符,那么它就是主键,主键带有我们的主观色彩。

 

 三类完整性约束

1.实体完整性规则:元组在组成主键属性上不为空

2.参照完整性规则:主键和外键对应

3.用户定义完整性规则:定义数据类型时要满足用户需求

 

画ER模型

1.图形表示:实体:矩形;属性:椭圆;关系:菱形

 

 

2.例题:某课程的计算机模拟考试系统涉及的部分信息如下:

用户:用户号、姓名、密码。

试题:试题编号、试题内容、知识点、难度系数、选项A、选B、选项C、选项D、答案。

试卷:试卷编号、生成时间。

说明:允许用户多次登录系统进行模拟测试;每次登录后,测试试卷由系统自动抽题随机生成,即每次生成试卷均不相同;每份试卷由若干试题组成;系统要记录每次测试的起始和结束时间,以及测试成绩。

(1)建立一个反映上述局部应用的ER模型,要求标注联系类型(可省略实体属性)。

分析

步骤1用矩形把三个实体:用户 试卷 试题表示出来;

步骤2看用户和试卷之间的关系“允许用户多次登录系统进行模拟测试”可知用户:试卷是1:N联系;“系统要记录每次测试的起始和结束时间,以及测试成绩”这个是在测试过程中生成的,所以把三个属性写在关系测试中;

步骤3看试卷和试题的关系:“测试试卷由系统自动抽题随机生成,即每次生成试卷均不相同”可知一份卷子是有许多题组成,每一道题又可以组成许多卷子,所以是M:N的关系,下图即得:

由ER模型转换关系模型:还是上题:

(2)根据转换规则,将ER模型转换成关系模型,要求标注每个关系模型的主键和外键(如果存在)。

分析:

步骤1:用户,用户的主键是用户名,在用户:试卷=1:N,所以用户的主键用户号应该写在试卷中作为外键

步骤2:试卷同上,把用户名作为他的外键

步骤3:在试卷和试题之间是M:N的关系,他们的属性按照原来的写不用变,但是需要把试卷和试题的主键提取出来作为主键,建立一个新的关系模型,注意:因为他们都是外键所以每个下面要写波浪线,他们两个是主键,所以要画一条直线

其他的ER模型和关系模型题基本就是这个思路了。

 

第三章

每个关系模型只对应一个实体类型或一个联系类型

1.闭包

如:设有关系模式R(ABCDEG),F是R上成立的FD集,F={D→G,C→A,CD→E,A→B},则(AC)+F为

分析:先分别看A、C、AC根据关系F={D→G,C→A,CD→E,A→B},可以推出什么,A->B,所以闭包变成(ABC)F,然后再看A、B、C、AB、AC、BC、ABC分别可以推出什么即可,因为没有可以推出的,所以为ABC

2.无损分解:刚鹏写的非常好,就不写了,嘿嘿谈模式分解——表的分解 

3.范式

第一范式:如果关系模式R中的每个关系r的属性都是不可分的原子

第二范式:如果关系为1NF,且每个非主属性完全依赖于候选键(不存在局部依赖

第三范式:如果关系是1NF,且每个非主属性都不传递依赖于R的候选键

 

例题:设某校教材管理系统中,有一个记录各班级领用教材情况的关系模式:

R(教材编号,教材名称,出版社,班级号,领用时间,领用数量)

如果规定:每个班级每次可领用多种教材,但每种教材只允许领用一次;同一种教材可被不同班级领用;不同班级可同时领用教材。

分析:

第一范式:教材编号->教材名称;教材编号->出版社;(班级号,教材编号)->领用时间;(班级号,教材编号)->领用数量。 关键码(班级号,教材编号)

第三范式:R1(教材编号,教材名称,出版社) R2(班级号,教材编号,领用时间,领用数量)

 

第四章

前言:

 

关系代数:查询操作是以谓词演算为基础的运算

关系代数的五个基本操作

关系代数的四个组合操作

外连接:R和S做自然连接时,把原来应该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性上填上空值

优化:尽可能早地执行选择操作,投影操作,避免直接做笛卡尔积

关系演算:查询操作是以集合操作为基础的运算

元组关系演算

例如:

R(s):R是关系名,s是元组变量。s是R的一个元组。

s[i]θu[j]:s和u是元组变量,θ是算术比较运算符,s[i]表示s元组的第i个分量。元组s的第i个分量和元组u的第j个分量满足θ关系。

1)R1={t|S(t)∧t[1]>2}表示:关系S的第1列中大于2的数对应的行截取留下组成新的关系表。即如下:

2)R2={t|(∃u)(S(t)∧R(u)∧t[3]<u[2])}表示:关系S中的元组为t,关系R中的元组为u,在S表中,S的第三列的数<R的第二列的数其中的一个(∃)

所以在S表中除去最后一行即可得

域关系演算

用域变量代替元组的每一个分量,这个和上的类似,如上图的关系R1={t|S(t)∧t[1]>2}可以表示

R1={xyz|S(xyz)∧x>2}其实就是用xyz把关系的每一列表示出来

 

尾音:喜欢盲人摸象的故事,剥丝抽茧一点点得到真相。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库系统原理1 的相关文章

  • 产品设计中关于思考力那些事

    这周的面试 xff0c 对我自己来说 xff0c 更像是一种迭代反思 从做什么怎么做 xff0c 到为什么做 xff0c 的一种强制思考 一方面是入行时间短 xff0c 另一方面是公司产品业务主导 xff0c 相对不需要产品去思考 xff0
  • 永不磨灭的设计模式(有这一篇真够了,拒绝标题党)

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述定义分类创建型 xff08 creational xff09 结构型 xff08 structural xff09 行为型 xff08 beha
  • shusheng007编程手记

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述工具篇IntelliJ IDEA在Idea中下载源码时 xff0c 报无法下载源码 Postman使用Postman发送Post请求服务端报得到
  • SpringBoot如何整合RabbitMQ

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述rabbitmq简介SpringBoot整合安装rabbitmq初级用法高级用法配置交换器与队列发送消息消费消息测试 总结 概述 好久没有写博客
  • 秒懂SpringBoot之@Async如何自定义线程池

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述异步初探线程池ThreadPoolExecutorThreadPoolTaskExecutor 验证线程池配置拒绝策略为AbortPolicy拒
  • 秒懂SpringBoot之参数验证全解析(@Validated与@Valid)

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述实例SpringBoot 验证概述引入依赖使用相关注解标记使用 64 Valid标记统一处理异常 高级用法复杂对象参数验证基本类型参数验证Ser
  • 如何添加本地JAR文件到Maven项目中

    版权申明 非商业目的可自由转载 博文地址 xff1a 出自 xff1a shusheng007 相关文章 xff1a 秒懂Java序列化与反序列化 秒懂 Java注解类型 xff08 64 Annotation xff09 秒懂Java多线
  • 秒懂Java泛型

    版权申明 非商业目的可自由转载 博文地址 xff1a https blog csdn net ShuSheng0007 article details 80720406 出自 xff1a shusheng007 文章目录 概述什么是泛型为什
  • 实际项目中如何使用Git做分支管理

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 相关文章 Git日常开发常用命令汇总 文章目录 前言概述Git的基本使用方法使用Git管理项目的方式主分支支持分支总结图 总结 前言 记得刚工作的时候根本不知
  • 秒懂Java代理与动态代理模式

    版权申明 非商业目的可自由转载 博文地址 xff1a https blog csdn net shusheng0007 article details 80864854 出自 xff1a shusheng007 设计模式汇总篇 xff0c
  • 秒懂Java动态编程(Javassist研究)

    版权申明 非商业目的可自由转载 博文地址 xff1a https blog csdn net ShuSheng0007 article details 81269295 出自 xff1a shusheng007 概述什么是动态编程 反射动态
  • B端项目整体设计流程

    一 B端产品的能力图谱 1 逻辑思维与抽象能力 2 技术知识储备 3 复杂项目管理能力 xff1a 沟通能力 执行能力 团队协助能力 组织协调能力 4 业务与经营管理知识 二 B端产品设计流程 1 业务调研 a 明确调研目标 战略层 xff
  • Git日常开发常用命令汇总

    版权申明 非商业目的z注明出处可自由转载 博文地址 xff1a https blog csdn net ShuSheng0007 article details 89642945 出自 xff1a shusheng007 相关文章 实际项目
  • in为什么慢

    IN为什么慢 xff1f 在应用程序中使用子查询后 xff0c SQL语句的查询性能变得非常糟糕 例如 xff1a SELECT driver id FROM driver where driver id in SELECT driver

随机推荐

  • 漫谈IT项目团队管理心得

    漫谈IT项目团队管理心得 如果在软件项目实施中选出最难解决的几个问题 xff0c 那么管理问题一定名列前茅 在管理问题中 xff0c 团队管理又是其中的难点 一个项目管理的好坏 xff0c 很大程度就体现在团队的建设和管理上 团队管理涉及到
  • error: [Errno 111] Connection refused

    用户cdh安装 hadoop的过程中 xff0c 启动CM xff0c 日志出现连接错误 cloudera 需要配置好dns xff0c 他是通过dns解析主机名来访问的 xff0c 这里可能dns解析有问题 xff0c 所以最好是把 us
  • dbca提示command not found

    1 dbca提示command not found 如果在database软件安装无错误后 xff0c 应该是环境变量找不到 2 检查环境变量 xff0c 果然有11 333 xff0c 这是远程粘贴板的问题吧 3 修改后 xff0c so
  • IT如何转为销售

    销售 xff0c 在很多人眼中是不入流的职业 不少人认为 xff0c 没有一技之长或没有能力才退而求其次去做一个销售 然而 xff0c 年薪50万的技术工程师 xff0c 马仁业为什么会放弃大家眼中神一样的职业 xff0c 去做一个没有底薪
  • MYSQL单行长度不能超过 65535

    报错 xff1a Row size too large The maximum row size for the used table type not counting BLOBs is 65535 mysql属于关系型 xff0c 行式
  • jdbcTemplate.batchUpdate在批量执行的时候,性能差没有效果,看看怎么解决的。

    我用的阿里druid数据库连接池 xff08 其实这个和连接池毛线关系没得 xff09 xff0c 创建jdbctemplate在执行insert 15000条数据时 xff0c 我发现还是30条 xff0c 20条 xff0c 35条这样
  • rabbit-mq 本地环境搭建

    一 xff1a 安装RabbitMQ需要先安装Erlang语言开发包 xff0c 直接下载地址 xff1a http erlang org download otp win64 18 3 exe 尽量安装时不选择C盘 xff0c 避免操作系
  • oracle小数点前面没有0,纠结解惑

    一1 天前台人找到我 xff0c 说我们安装的数据库有问题 xff0c 为什么小数点前面是0就不显示呢 xff0c 我去看了一下 xff0c command窗口要显示 SQL gt create table ml test num numb
  • 网监后台管理系统设计思路

    本次做的是网监系统saas服务平台的后台管理系统 xff0c 不涉及复杂功能逻辑 就是从菜单 模板 系 统 组织架构 角色 用户的设计思路 产品需求 xff1a 在各个省市网监系统的数量不断增长 xff0c 且系统逻辑和功能模块大致相同 x
  • 分类算法 c4.5 详解

    C4 5是一系列用在机器学习和数据挖掘的分类问题中的算法 它的目标是监督学习 xff1a 给定一个数据集 xff0c 其中的每一个元组都能用一组属性值来描述 xff0c 每一个元组属于一个互斥的类别中的某一类 C4 5的目标是通过学习 xf
  • 正则表达式匹配Html代码中图片路劲

    正则表达匹配图片路径 public static string GetHtmlImageUrlList string sHtmlText 定义正则表达式用来匹配 img 标签 Regex regImg 61 new Regex 64 34
  • (GPU版)Pytorch+pycharm+jupyter安装记录(截至23年3月14日)

    由于搞了一台旧主机 xff0c 主机上没有pytorch等软件程序 xff0c 所以重新装一遍 xff0c 顺便记录一下 xff01 一 安装显卡GPU的驱动程序 xff0c 搞定CUDA先 WIN 43 R打开命令行 xff0c 输入命令
  • Alibaba官方最新发布的这份Java学习导图+彩版手册,真不是吹的

    时间飞逝 xff0c 转眼间毕业七年多 xff0c 从事 Java 开发也六年了 我在想 xff0c 也是时候将自己的 Java 整理成一套体系 这一次的知识体系面试题涉及到 Java 知识部分 性能优化 微服务 并发编程 开源框架 分布式
  • linux下使用第三方商店安装应用

    安装 snap store 进行下载 xff0c 相当与第三方应用商店 xff0c 但是往往比某一个官方软件源里面的应用要丰富或更实用 到 snap docs 中选择你的 linux 版本进入安装文档 xff0c 根据指示一步一步安装即可
  • Centos7离线安装sqlserver2017

    Centos7离线安装sqlserver2017 根据操作系统版本选择下载匹配的sqlserver版本 可以在这里找一下https packages microsoft com config 我选择是先在一台有网的机器上下载好rpm安装包之
  • HC-05蓝牙模块配置

    目录 1 连接蓝牙模块a 蓝牙模块通过USB转TTL连接电脑b 打开串口助手 xff0c 波特率设置为38400c 检验是否连接成功 2 配置波特率3 修改密码4 设置主从模式5 设置蓝牙连接模式6 查询自身地址7 添加配对蓝牙地址8 测试
  • Windows沙盒技术调研

    转载自 xff1a 移动云开发者社区 一 Windows沙盒技术介绍 Windows沙盒提供了轻型桌面环境 xff0c 可安全地隔离运行应用程序 沙盒环境中Windows软件保持 34 沙盒 34 状态 xff0c 并独立于主机运行 沙盒是
  • OS + Linux Shell bash / sh / ksh / csh / tcsh / adb shell

    s Android adb shell ADB Android debug bridge Android手机实际是基于Linux系统的 Google提供的ADB工具包带有fastboot exe rar http dl iteye com
  • kali利用CVE_2019_0708(远程桌面代码执行漏洞)攻击win7

    一 漏洞说明 2019年5月15日微软发布安全补丁修复了CVE编号为CVE 2019 0708的Windows远程桌面服务 xff08 RDP xff09 远程代码执行漏洞 该漏洞在不需身份认证的情况下即可远程触发 危害与影响面极大 目前
  • 数据库系统原理1

    第一章 数据库管理技术发展的不同阶段形成不同的特点 数据描述经历了三个阶段对应于三个数据模型 第二章 数据库系统的生命周期 xff0c 书中可能和我们学习软工的时候有些出入 xff0c 其实就是不同时间有不同的理解 xff0c 横看成岭侧成