首页 > 数据库 >数据库期中复习笔记

数据库期中复习笔记

时间:2024-10-19 16:44:12浏览次数:1  
标签:关系 ... 复习 数据库 元组 期中 TABLE pi 属性

《数据库》期中复习

只有两个重点:SQL语句和抽象地描述一个数据库。

第二章 关系数据模型

数据模型是用于描述数据或信息的标记,由数据结构、数据操作和数据上的约束条件组成。

一个关系的列被称为属性 attribute,关系名和其属性的集合称为关系的模式 schema,关系的每一行称为元组 tuple,元组的每个分量所属的类型称为域 domain,一个给定关系中的一个元组的集合叫做关系的一个实例 instance

键 key是关系的一组属性组成的集合,通过键的定义,可以保证一个关系实例中在这组属性上的元组是唯一的。

pAUv9i9.png

(a) 考虑三个元组的全排列为 \(3!\) 三个属性的全排列为 \(3!\) 答案为 \(3!*3!=36\)

(b) 略

(c) 容易证明答案 \(n!m!\) 如果考虑元组出现重复情况,每种元组的个数为 \(a_1, a_2, ..., a_k\) 答案应该是 \(\frac{n!m!}{a_1!a_2!...a_k!}\)


SQL 支持的数据类型包括:

  1. 可变长度字符串 VARCHAR(n),表示最多可有 n 个字符的字符串;固定长度字符串 CHAR(n),表示恒定有 n 个字符的字符串。

  2. 位串 BIT(n),表示恒定有 n 个比特的串;可变位串 BIT VARYING(n),表示最多有 n 个比特的串。

  3. 逻辑类型 BOOLEAN,可取值为 TRUEFALSEUNKNOWN

  4. 整数类型 INTSHORTINT

  5. 浮点类型 FLOATDOUBLE,表示浮点数;高精度的浮点类型 DOUBLE PRECISION;指定小数点后位数的 DECIMAL(n, d),表示有 n 位有效数字,小数点在右数第 d 位。

  6. 日期和时间类型 DATETIME;为了区分日期和字符串类型,往往需要额外添加 DATE 关键字,比如 DATE '2020-10-19' 表示一个日期。

简单的表定义如下:

CREATE TABLE <relation name>
(
    <attribute name> <data type>,
    ...
    <attribute name> <data type>
);

删除某个关系:

DROP TABLE <relation name>;

修改关系中的某个属性(增加新的属性或者删除原有属性):

ALTER TABLE <relation name> 
ADD <attribute name> <data type>;

ALTER TABLE <relation name> 
DROP COLUMN <attribute name>; -- MySQL 中使用 DROP COLUMN

为了避免用 NULL 填充默认值,可以在创建表或者增加新的属性的时候指定默认值

CREATE TABLE <relation name>
(
    <attribute name> <data type> DEFAULT <default value>,
    ...
    <attribute name> <data type> DEFAULT <default value>
);
ALTER TABLE <relation name> 
ADD <attribute name> <data type> DEFAULT <default value>;

有两种方式为关系指定键PRIMARY KEYUNIQUEPRIMARY KEY 指定的属性 S 不能有 NULL 值,但是 UNIQUE 可以允许 NULL 值。

CREATE TABLE <relation name>
(
    <attribute name> <data type> PRIMARY KEY,
    ...
    <attribute name> <data type> UNIQUE
);

pAUvyeU.png

pAUv2FJ.png

(d) 答案如下:

CREATE TABLE Printer(
    model VARCHAR(10) PRIMARY KEY,
    color BOOLEAN,
    type VARCHAR(10),
    price DECIMAL(10, 2)
)

(e) 答案如下:

ALTER TABLE Printer
DROP COLUMN color;

(f) 答案如下:

ALTER TABLE Laptop
ADD od VARCHAR(10) DEFAULT 'none';

在关系上定义并、交、补运算:R 和 S 是具有同样属性集合的表,同时 R 和 S 的各个属性的域也必须匹配且有相同的顺序。

  1. 并运算:\(R \cup S\),包含 R 和 S 中的所有元组。

  2. 交运算:\(R \cap S\),包含 R 和 S 中共有的元组。

  3. 差运算:\(R - S\),包含 R 中但不在 S 中的元组。

投影操作用来从关系 R 生成一个新的关系,这个关系只包含 R 中的一部分属性。投影操作的结果是一个关系,其模式是 R 的属性的一个子集。

\[\pi_{A_1, A_2, ..., A_n}(R) \]

选择操作用来从关系 R 中选择出满足某个条件的元组。选择操作的结果是一个关系(元组的集合),其模式是 R 的模式。

\[\sigma_{condition}(R) \]

笛卡尔积接受两个关系作为输入,生成一个新的关系,其模式是输入关系的元组的集合的笛卡尔积。

\[R \times S \]

自然连接是一种特殊的连接操作,它是在两个关系的笛卡尔积上应用选择操作,选择那些在两个关系的公共属性上取值相等的元组。如果一个元组不能和另一个关系中的任何元组匹配,那么这个元组被称为悬浮元组 dangling tuple

\[R \bowtie S \]

\(\theta\) 连接是一种连接操作,它是在两个关系的笛卡尔积上应用选择操作,选择那些满足某个条件的元组。当条件是在两个关系的公共属性上取值相等时,\(\theta\) 连接和自然连接是等价的。

\[R \bowtie_{condition} S \]

有一个很有意思的等价关系可以连接笛卡尔积和自然连接:

定义条件 \(c\) 为 \(R.A = S.A \land R.B = S.B \land ...\),\(L\) 是在关系 \(R\) 和 \(S\) 中不在 \(R\) 和 \(S\) 的属性上的属性的集合,那么:

\[R \bowtie S = \pi_L (\sigma_c(R \times S)) \]

重命名操作是为关系的属性或者关系本身指定一个新的名字。重命名操作的结果是一个新的关系,其模式是原来的模式,但是属性名或者关系名被替换为新的名字。

\[\rho_{newname}(attrname1, attrname2, ...)(R) \]

pAUxRHS.png

(a)

\(\pi_{model}(\sigma_{speed >= 3.00}(PC))\)

(b)

\(\pi_{maker}(\sigma_{hd >= 100}(Product \bowtie Laptop))\)

(f)
\(\pi_{hd}(\sigma_{PC1.model <> PC2.model \text{ AND } PC1.hd = PC2.hd}(\rho_{PC1}(PC) \bowtie \rho_{PC2}(PC)))\)


已经讨论了数据结构和数据操作,接下来讨论数据约束。数据约束是关系数据库中的一种重要机制,用来保证数据的完整性和一致性。

用关系代数表示约束有两种风格:

  1. “ R 的值必须为空”的约束,与“R中没有元组”等价,用 \(R = \emptyset\) 表示。

  2. “R 的值必须是 S 的子集”的约束,用 \(R \subseteq S\) 表示。

这两种形式是等价的,因为 \(R \subseteq S\) 显然等价于 \(R - S = \emptyset\)。

引用完整性约束 referential integrity constraint 是一种常见的约束,如果关系 R 中的某个属性(A)的值 v,人们希望这个值也是关系 S 中的某个属性(B)的值,那么这个约束就是引用完整性约束。

\[\pi_{A}(R) \subseteq \pi_{B}(S) \]

键约束 key constraint 是一种约束,要求关系中的某个属性集合是一个键,这一约束同样可以用关系代数表示。

以上面的练习为例,可以有

\[\sigma_{PC1.model = PC2.model \text{ AND } PC1.hd <> PC2.hd}(\rho_{PC1}(PC) \bowtie \rho_{PC2}(PC)) = \emptyset \]

此时,PC 的 model 构成了一个键。

通过上述的方式,我们就找到了一种彻彻底底形式化描述数据库的方法。

pAUxv4J.png

\[\pi_{A1, A2, ..., An}(R) - \pi_{A1, A2, ..., An}(S) = \emptyset \]

等价于

\[\pi_{A1, A2, ..., An}(R) \subseteq \pi_{A1, A2, ..., An}(S) \]

标签:关系,...,复习,数据库,元组,期中,TABLE,pi,属性
From: https://www.cnblogs.com/sysss-blogs/p/18476060

相关文章

  • 【MySQL数据库】MySQL日志管理与备份恢复
    文章目录MySQL日志1.错误日志(ErrorLog)2.通用查询日志(GeneralQueryLog)3.二进制日志(BinaryLog,Binlog)4.慢查询日志(SlowQueryLog)注意重启MySQL服务动态修改配置MySQL日志相关查询指令1.登录MySQL2.查看通用查询日志是否开启3.查看二进制日志是否开启4.查......
  • 使用Flyway进行数据库版本控制
    1.flyway介绍Flyway是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理和自动化数据库结构的变更。它可以跟踪和管理数据库的版本控制,并在应用程序启动时自动执行升级或回滚操作。在项目或产品中,很难一开始就把业务理清楚、......
  • 数据库tips27
    (十七)、事务/隔离级别事务具有原子性、一致性、隔离性和持久性。这4个特性也称事务的ACID性质。①原子性(atomicity)。事务是原子的,要么都做,要么都不做。②一致性(consistency)。事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交......
  • 2021年10月自考《数据库系统原理》04735试题
    目录一.选择题二.填空题三.简答题四.综合题五.设计题一.选择题1.以下不属于数据中存储数据的特点是(书中)P28页A.永久存储 B.集中管理 C.有组织D.可共享2.数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是(书中)P29页A.DBS包括DB和DBMSB.DBMS包括DB......
  • jsp二手车市场商户管理系492nz--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表商家,店铺信息,二手车辆,租赁申请,退租申请,续租申请,提醒信息开题报告内容一、研究背景随着二手车市场的快速发展,商户管理问题日益凸显。商户信息散乱、管理......
  • jsp二手车交易平台6447v--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,汽车类型,卖家,二手汽车,汽车订单,汽车退订开题报告内容一、研究背景随着汽车市场的不断扩大和消费者对二手车需求的增加,传统的二手车交易方式已无法满足......
  • jsp儿童疫苗接种管理系统q51zm(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表家长,接种人员,儿童信息,疫苗类型,疫苗信息,入库信息,出库信息,疫苗预约,接种信息,在线反馈,疫苗规划表开题报告内容一、项目背景随着公共卫生意识的提升,儿童......
  • jsp儿童成长信息管理系统t7728--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景在信息化时代背景下,儿童成长的记录与管理逐渐趋向于数字化、智能化。家长、教师及教育机构对儿童成长信息的关注日益增强,传统的纸质记......
  • 数据库性能调优:定位Slow SQL!
    定位慢SQL(SlowSQL)是数据库性能调优中的一个重要任务,目的是找到和优化那些执行时间较长的SQL查询。以下是常用的定位慢SQL的方法和步骤:1.使用数据库自带工具大多数数据库管理系统(DBMS)提供了内置的工具和视图来帮助定位慢SQL。以下是一些主要数据库的常用工具:MySQL慢......
  • mysql当数据库发现了慢sql怎么定位?--待验证
    1、应用侧生成链路id。使用skywalking2、mybatis写拦截器,sql里面加入链路id`@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class,Integer.class})})publicclassSqlStatementInterceptorimplementsInterceptor{......