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

高级系统架构师笔记——数据库设计基础知识(2)关系数据库基本概念

(2)关系数据库基本概念

        • 关系的基本术语:
        • 关系数据库模型
        • 关系的完整性约束

关系数据库系统是支持关系数据模型的数据库系统。

关系的基本术语:
  • 属性(Attribute):描述事务的特征,如学生通过学号、姓名、性别等属性来描述

  • 域(Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。如性别域{男, 女}。关系数据模型中所有的域都应是原子数据(Atomic Data)。

  • 目或度(Degree):一个关系中属性的个数

  • 候选码(Candidate Key):关系中的某一属性或属性组的值能唯一的标识一个元组,该属性或属性组为候选码

  • 主码(Primary Key):又称主键,一个关系中有多个候选码,选定其中一个作为主键

  • 主属性(Prime Attribute):包含在任何候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性(Non-Prime Attribute)。

  • 外码(Foreign Key):如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系的码,则该属性集对关系模式R而言是外码

  • 全码(All-key):关系模型的所有属性组是这个关系的候选码,称为全码

  • 笛卡尔积
    设 D 1 , D 2 , D 3 , . . . , D n 为任意集合,定义 D 1 , D 2 , D 3 , . . . , D n 的笛卡尔积为: D 1 × D 2 × D 3 × . . . × D n = { ( d 1 , d 2 , d 3 , . . . , d n ) ∣ d i ∈ D i , i = 1 , 2 , 3 , . . . , n } 其中,集合中每一个元素 ( d 1 , d 2 , d 3 , . . . , d n ) 叫作一个 n 元组( n − t u p l e ,及 n 个属性的元组), 元素中每一个值 d i 叫作元组的一个分量。若 D i = ( i = 1 , 2 , 3 , . . . , 0 ) 为有限集, 其基数 ( C a r d i n a l N u m b e r ,元组的个数 ) 为 m i = ( i = 1 , 2 , 3 , . . . , 0 ) , 则 D 1 × D 2 × D 3 × . . . × D n 的基数 M 为: M = ∏ i = 1 n m i 设D_1,D_2,D_3,...,D_n为任意集合,定义D_1,D_2,D_3,...,D_n的笛卡尔积为:\\ D_1 \times D_2 \times D_3 \times ... \times D_n = \{(d_1,d_2,d_3,...,d_n)|d_i\in D_i, i=1,2,3,...,n \} \\ 其中,集合中每一个元素(d_1,d_2,d_3,...,d_n)叫作一个n元组(n-tuple,及n个属性的元组),\\ 元素中每一个值d_i叫作元组的一个分量。若D_i=(i=1,2,3,...,0)为有限集,\\ 其基数(Cardinal Number,元组的个数)为m_i=(i=1,2,3,...,0),\\ 则D_1 \times D_2 \times D_3 \times ... \times D_n的基数M为:\\ M=\prod_{i=1}^n m_i D1,D2,D3,...,Dn为任意集合,定义D1,D2,D3,...,Dn的笛卡尔积为:D1×D2×D3×...×Dn={(d1,d2,d3,...,dn)diDi,i=1,2,3,...,n}其中,集合中每一个元素(d1,d2,d3,...,dn)叫作一个n元组(ntuple,及n个属性的元组),元素中每一个值di叫作元组的一个分量。若Di=(i=1,2,3,...,0)为有限集,其基数(CardinalNumber,元组的个数)mi=(i=1,2,3,...,0)D1×D2×D3×...×Dn的基数M为:M=i=1nmi
    A={1,2}(集合 A 含 2 个元素),B={x,y}(集合 B 含 2 个元素),则:A×B={(1,x),(1,y),(2,x),(2,y)}

关系数据库模型

在数据库中要区分型和值**。关系数据库中的型也称为关系数据库模式**,是关系数据库结构的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。关系的描述称为关系模式(Relation Schema)。可以形式化地表示为:
R ( U , D , d o m , F ) ,其中, R 表示关系名; U 是组成该关系的属性名集合; D 是属性的域; d o m 是属性向域的映像集合; F 为属性间数据的依赖关系集合。 R(U,D,dom,F),其中,\\ R表示关系名;\\ U是组成该关系的属性名集合;\\ D是属性的域;\\ dom是属性向域的映像集合;\\ F为属性间数据的依赖关系集合。 R(U,D,dom,F),其中,R表示关系名;U是组成该关系的属性名集合;D是属性的域;dom是属性向域的映像集合;F为属性间数据的依赖关系集合。
通常将关系模式简记为:
R ( U ) 或 R ( A 1 , A 2 , A 3 , . . . , A n ) ,其中, R 为关系名, A 1 , A 2 , A 3 , . . . , A n 为属性名或域名, 属性向域的映像常常直接说明属性的类型、长度。通常在关系模式主属性上加下画线表示该属性为主码属性。 R(U)或R(A_1,A_2,A_3,...,A_n),其中,\\ R为关系名,\\ A_1,A_2,A_3,...,A_n为属性名或域名,\\ 属性向域的映像常常直接说明属性的类型、长度。通常在关系模式主属性上加下画线表示该属性为主码属性。 R(U)R(A1,A2,A3,...,An),其中,R为关系名,A1,A2,A3,...,An为属性名或域名,属性向域的映像常常直接说明属性的类型、长度。通常在关系模式主属性上加下画线表示该属性为主码属性。

例如:学生关系S有学号Sno、学生姓名Same、系名SD、年龄SA属性;课程关系C有课程号Cno、课程名Cname、先修课程号PCno属性;学生选课关系SC有学号Sno、课程号Cno、成绩Grade属性。定义关系模式及主码如下:

  • 学生关系模式
    S ( S n o ‾ , S n a m e , S D , S A ) S(\underline{Sno}, Sname, SD, SA) S(Sno,Sname,SD,SA)

  • 课程关系模式
    C ( C n o ‾ , C n a m e ) , P C n o , D o m ( P c n o ) = C n o C(\underline{Cno}, Cname), PCno, Dom(Pcno)=Cno C(Cno,Cname),PCno,Dom(Pcno)=Cno
    PCno是先行课程号,来自Cno域,但由于PCno属性名不等于Cno值域名,所以要用Dom来定义。但是,不
    能将Pcno直接改为Cno,因为在关系模型中,各列属性必须取相异的名字。

关系的完整性约束

完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。因此,完整性规则防止的是对数据的意外破坏。关系模型的完整性规则是对关系的某种约束条件。

  • 实体完整性(Entity Integrity):每个数据表都必须有主键,而作为主键的所有字段,其属性必须是唯一且非空值。

  • 参照完整性(Referential Integrity):也称引用完整性。若F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值或者取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。简单来说一个关系中的外键,其数据来源必须是相关联关系的属性值或者空值。比如某企业员工Emp关系模式和部门Dept关系模式表示如下:

    • Emp(员工号,姓名,性别,参加工作时间,部门号)
    • Dept(部门号,名称,电话,负责人)

    Emp和Dept关系存在着属性的引用,即员工关系中的“部门号”值必须是确实存在的部门的部门号。按照关系的完整性规则,员工关系中的“部门号”属性取值要参照部门关系的“部门号"属性取值。如果新入职的员工还未分配具体的部门,那么部门号取空值。

  • 用户定义完整性(User Defined Integrity):针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。

http://www.dtcms.com/a/481927.html

相关文章:

  • SAP MM采购申请创建接口分享
  • for循环语句练习题
  • [Agent开发平台] 后端的后端 | MySQL | Redis | RQ | idgen | ObjectStorage
  • AI(学习笔记第十二课) 使用langsmith的agents
  • 怎么制作网站教程wordpress用什么建
  • 多态:(附高频面试题)虚函数重写覆盖,基类析构重写,重载重写隐藏对比,多态原理,虚表探究一文大全
  • 《从系统调用到驱动回调:read() 如何映射到 chrdev_read()》
  • 【杂记】AI智能体产品开发中的多种语言混合编程
  • 财务开票的类型、异同点以及蓝字和红字的区别
  • 高阶数据结构-并查集
  • 从零开始的C++学习生活 8:list的入门使用
  • 平面设计师网站宁波制作网站哪个好
  • 简单的网站制作wordpress添加广告插件吗
  • 应用软件程序页面类型与核心元素解析
  • 从基金入门到长期主义:我如何建立自己的投资认知体系
  • 微算法科技MLGO推出隐私感知联合DNN模型部署和分区优化技术,开启协作边缘推理新时代
  • (20)100天python从入门到拿捏《JSON 数据解析》
  • 战略携手!沃飞长空与西门子数字化工业软件签约
  • 从零开始的C++学习生活 7:vector的入门使用
  • 队列数据结构详解:从原理到实现
  • JavaScript构造函数详解
  • 学习无刷直流电机驱动硬件
  • 案例应聘网络营销做网站推广网络营销的种类有哪些
  • 西安网站建设网莱芜网站推广
  • 从RNN到LSTM:深入理解循环神经网络与长短期记忆网络
  • AIDL 接口的定义与生成,使用
  • 深度解析过拟合与欠拟合:从诊断到正则化策略的全面应对
  • python - 装箱项目/3D Bin Packing problem
  • 【自动驾驶】自动驾驶概述 ⑨ ( 自动驾驶软件系统概述 | 预测系统 | 决策规划 | 控制系统 )
  • STM32F103C8T6 GY-906 MLX90614ESF 无线测温传感器模块的使用方法和代码驱动