当前位置: 首页 > news >正文

数据库(三)

关系模型的基本概念

关系模型就是处理Table的,由三个部分组成:

        描述DB各种数据的基本结构形式(Table/Relation)

        描述Table与Tbale之间所可能发生的各种操作(关系运算)

        描述这些操作所应遵循的约束条件(完整性约束)

关系模式的三个要素

        基本结构:Table/Relation

        基本操作:Relation Operator,包括并、差、广义积、选择、投影、交、连接、除

        完整性约束:实体完整性、参照完整性和用户自定义的完整性

Table的定义

域(Domain)

列:阈值范围称为“域”

域(Domain):一组值的集合,这组值具有相同的数据类型

        集合中元素的个数称为域的基数(Cardinality)

域名丈夫

域值李基、张鹏等

笛卡尔积(Cartesian Product)

行:元组

笛卡尔积(Cartesian Product):所有可能组合成的元组

        一组域D1,D2...Dn的笛卡尔积为:D1*D2*...*Dn = { (d1,d2,...,dn) | di \in Di , i = 1,...n}

        笛卡尔积的每个元素(d1,d2...dn)称作一个n-元组

        元组(d1,d2...dn)的每一个值di叫做一个分量(component)

        元组(d1,d2...dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合

        若Di的基数为mi,则笛卡尔积的基数,即元组个数为m1*m2*...mn

关系(Relation)

关系(Relation)一组域D1,D2,...Dn的笛卡尔积的子集

        笛卡尔积中具有某一方面意义的那些元组被称作一个关系

        由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名

        关系可用R(A1:D1,A2:D2,...,An:Dn)表示,可简记为R(A1,A2,...,An),这种描述又被称为关系模式(Schema)表标题(head)

        R是关系的名字,Ai是属性,Di是数学所对应的域,n是关系的度(列)目(行),关系中元组的数目称为关系的基数

        e.g:家庭(丈夫:男人,妻子:女人,子女:儿童)或家庭(丈夫,妻子,子女)

关系模式与关系

        同一关系模式下,可有很多的关系

        关系模式是关系的结构,关系是关系模式再某一时刻的数据

        关系模式是稳定的;而关系是某一时刻的值,是随时间可变化的

        关系模式是框架,关系是具体的实例

关系的特性

        列是同质:每一列中的分量来自同一域,是同一数据类型

        列位置互换性:区分那一列是靠列名

        行位置互换性:区分哪一行是靠某一或某几列的值

        关系是以内容(名字或值)来区分的,而不是属性再关系的位置来区分

理论上,关系的任意两个元组不能完全相同,但是现实应用中表可能不完全遵守此特性

        属性不可再分特性:关系第一范式

候选码(Candidate Key)/候选键

        关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,他就不具有这一性质了,这样的属性组称作候选码

        e.g:选课(S#,C#,Sname,Cname,Gread),(S#,C#)联合起来是一个候选码

主码(Primary Key)/主键

        当有多个候选码时,可以选定一个作为主码

        DBMS以主码为主要线索管理关系中的各个元组

主属性与非主属性

        包含在任何一个候选码中的属性被称为主属性,其他属性被称为非主属性

外码(Foreign Key)/外键

        关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码外键

        两个关系通常是靠外码连接起来的

实体完整性

        关系的主码中的属性值不能为空值 

        空值:不知道或无意义的值

参照完整性

        关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值,或者为空值

用户自定义完整性

        用户针对具体的应用环境定义的完整性约束条件

相关文章:

  • k8s主要控制器简述(一)ReplicaSet与Deployment
  • c++随机整数
  • Quartz知识点总结
  • 【大模型微调】使用Llama Factory实现中文llama3微调
  • OpenHarmony子系统开发 - 电池管理(一)
  • 哈希表与哈希算法:原理、实现与优化
  • C语言-动态内存管理
  • 【区块链 + 商贸零售】基于区块链的消费积分系统 | FISCO BCOS 应用案例
  • Nginx基于SSL的TCP代理
  • Vue3.如何把一个对象内的键值变成响应式变量
  • Bigemap Pro 拾取CAD地形图教程
  • uniapp工程中解析markdown文件
  • 在 JIT 编译的函数中调用非 JAX 函数
  • OpenAI Agents SDK 使用自定义的 OpenAI-Compatible API
  • 将对象内的键值转换为响应式变量后,在setup函数中用这些属性的时候为什么不用像ref那样加value
  • 冯・诺依曼架构深度解析
  • WPF-实现按钮的动态变化
  • OMRON Corporation Programming Contest 2025 (AtCoder Beginner Contest 397)题解
  • 对接豆包大模型
  • SvelteKit 最新中文文档教程(6)—— 状态管理
  • 回望星河深处,唤醒文物记忆——读《发现武王墩》
  • 中国科学院院士、我国航天液体火箭技术专家朱森元逝世
  • 金砖国家召开经贸联络组司局级特别会议,呼吁共同抵制单边主义和贸易保护主义
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额超5万元
  • “无锡景・江南韵”:中国评弹艺术在尼日利亚收获众多粉丝
  • 中美日内瓦经贸会谈联合声明