【你也能从零基础学会网站开发】关系型数据库中的表(Table)设计结构以及核心组成部分

🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

关系型数据库中的表结构

表 (Table)

表(table)关系型数据库核心单元,是数据存储的地方。
在表中,数据被组织成的形式。
每一行代表一个实体(即现实世界中的一个事物),每一列代表实体的一个属性

如图

在这里插入图片描述

当我们使用关系模型来存储和组织数据时,这些数据会被组织成一个像上面这样的表格结构。

这个表格有,而每一行代表了一条数据记录,每一列代表了数据中的一个字段或属性。

所以,我们可以简单地把这个表格理解成一张表,而这张表就是关系模型中的关系, 换句话说,一个关系就对应着一张表

一般这种关系(表) 定义的方式为 关系名(表名称)(属性1,属性2.....属性n)

例如: 上面的关系可描述为:学生表(学号、学生姓名、年龄、...)

这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体之间的各种关系

元组

元组也叫记录, 是中的一行即为一个元组,或称为一条记录

如图

字段(属性)

属性就是表中的字段, 在中的每一列称为一个字段,而是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义, 事实上的设计实际上就是对字段的设计, 创建的时候,为每个字段分配一个数据类型,定义它们的数据长度和其他属性。

属性值(字段值) 也就是交叉位置表示某个属性值!

如图

主键

简单的说主键中每一行数据的唯一标识,用于区分不同的记录。

主键是数据库中的一个多个属性(字段)的组合,它的特点就是能够唯一标识中的每一行数据,也就是每一个实体

当然你也可以说成是用于唯一确定一个元组的数据!

如图

例如学生表中,我们通常会让学号主键,又比如教师表中让教师编号主键

主键可以是一个字段也可以是多个字段,常用作一个索引字段

所以每条记录的关键字(主键)都是不同的,因而可以唯一地标识一个记录,关键字(主键)也称为主关键字,或简称主键

这里需要再次注意一下, 在数据库设计中,如果单个字段无法唯一标识表中的每一行数据,那么就可以选择多个字段一起作为主键。这种由多个字段组成的主键被称为复合主键。

复合主键中的每个字段都是主键的一部分,它们共同唯一标识表中的一行数据。

所以,主键既可以是一个字段,也可以是多个字段的组合

外键

外键主要是用来描述表与表之间的关系!

简单来说它就像是一个桥梁,让两个不同的表能够相互连接,通过它可以实现从一个表跳转到另一个表。

如图


举个栗子

现在有两个表,一个是学生表(student),一个是班级表(class)
学生表中有学生的姓名、学号等信息,而班级表中有班级的名称、班级编号等信息。

问现在,如果我们想知道每个学生属于哪个班级,我们就可以在学生表中添加一个外键,这个外键指向班级表中的班级编号

这样一来,每当我们查看学生表时,就可以通过这个外键知道每个学生所在的班级了。同样的,如果我们要查找某个班级的所有学生,也可以通过这个外键反向查找!

所以,外键的主要作用就是建立和维护两个表之间的关系,让数据库的管理和使用变得更加方便和高效

主表和从表的关系

有了外键这个概念那么这里就衍生出了一个主表从表的概念

它们之间的关系为: 主表是被参照的表,含有主键, 而从表是参照主表的表,含有指向主表主键的外键

如图


我们要知道在数据库中,主表从表的关系是基于外键约束来建立的。

主表也称为父表参照表 是一个包含主键的表,这个主键是唯一标识表中每一行的数据。

从表也称为子表被参照表 是一个包含外键的表,这个外键是指向主表主键的字段,用于建立与主表之间的联系,刚刚上面也已经讲过了!

主表从表所依赖的,它提供了从表所需要参照的数据, 从表则通过外键主表相关联,以便能够访问和使用主表中的数据。

这种关系使得数据库能够维护数据的一致性完整性,因为外键约束确保了从表中的外键字段只能包含主表中已经存在的主键值。

如果是使用的是SQL语句的情况下, 创建这两个表的SQL语句如下:

CREATE TABLE class (  class_id INT PRIMARY KEY,  class_name VARCHAR(255)  
);  CREATE TABLE student (  student_id INT PRIMARY KEY,  name VARCHAR(255),  class_id INT,  FOREIGN KEY (class_id) REFERENCES class(class_id)  
);

案例中FOREIGN KEY (class_id) REFERENCES class(class_id)语句定义了外键约束,它指定了学生表中的class_id列是外键
它引用了班级表中的class_id列。

这样,数据库就知道这两个表是如何相互关联的了, 如果这里你看不明白也没关系 后面我们慢慢讲到SQL语法之后,你就能搞明白了!

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

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

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

相关文章

【Git 学习笔记】Ch1.1 Git 简介 + Ch1.2 Git 对象

还是绪个言吧 今天整理 GitHub 仓库,无意间翻到了几年前自学 Git 的笔记。要论知识的稳定性,Git 应该能挤进前三——只要仓库还在,理论上当时的所有开发细节都可以追溯出来。正好过段时间会用到 Git,现在整理出来就当温故知新了。…

DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior

深圳先进研究院&上海ai lab&港中文https://github.com/XPixelGroup/DiffBIRhttps://arxiv.org/pdf/2308.15070 问题引入 使用一个统一的框架来处理image restoration任务,包含图片超分BSR,图片去噪BID和人脸restoration BFR,分为两…

【从零开始学架构 架构基础】五 架构设计的复杂度来源:低成本、安全、规模

架构设计的复杂度来源其实就是架构设计要解决的问题,主要有如下几个:高性能、高可用、可扩展、低成本、安全、规模。复杂度的关键,就是新旧技术之间不是完全的替代关系,有交叉,有各自的特点,所以才需要具体…

微信AI机器人智能助手:利用大模型定制训练知识库

随着人工智能技术的迅速发展,AI已经渗透到了我们生活得方方面面。AI文本撰写、AI绘画、AI生成视频、AI换脸等各类应用层出不穷。作为领先的创新人工智能和元宇宙厂商,道可云凭借自身在人工智能、元宇宙、虚拟数字人等领域的技术积累,将AI技术…

Android SurfaceFlinger ——获取显示屏信息(十八)

经过前面文章对开机启动动画的流程梳理,引出了实际上在开机启动动画中,并没有Activity,而是通过 OpenGL es 进行渲染,最后通过某种方式,把数据交给 Android 渲染系统。 让我们回忆一下开机动画前期准备的相关步骤,大致分为如下几个: 1)getInternalDisplayToken:获取显…

在C++中何时应该使用异常处理

在C中,异常处理是一种用于处理运行时错误的技术,它允许程序在发生错误时优雅地恢复或终止,而不是突然崩溃或产生不可预测的行为。以下是几种情况下应该使用异常处理的场景: 错误恢复:当程序遇到可以从中恢复的错误时&…

跨越界限,巴比达带你访问远程桌面【内网穿透技术分享】

在远程工作的时代,远程桌面访问成为了许多职场人士的日常。Windows系统默认的远程桌面服务监听在3389端口,但对于内网环境下的机器来说,直接从外部访问这个端口常常面临重重阻碍。不过,有了巴比达内网穿透,这一切都将不…

141个图表,完美展示数据分类别关系!

本文介绍使用Python工具seaborn详细实现分类关系图表,包含8类图141个代码模版。 分类关系图表用于展示数字变量和一个或多个分类变量之间的关系,可以进一步分为:箱形图(box plot)、增强箱形图(enhanced bo…

linux内核包括的驱动有哪些

Linux内核包含了大量的驱动程序,涵盖了几乎所有硬件类型。内核没有自带的就需要自己动手安装一下了。 1. 网络驱动(Network Drivers) 以太网驱动(Ethernet drivers):e1000, e1000e, r8169, tg3, ixgbe无线网卡驱动(Wireless drivers):iwlwifi, ath9k, brcmsmac, rt28…

STM32第十四课:低功耗模式和RTC实时时钟

文章目录 需求一、低功耗模式1.睡眠模式2.停止模式3.待机模式 二、RTC实现实时时钟1.寄存器配置流程2.标准库开发3.主函数调用 三、需求实现代码 需求 1.实现睡眠模式、停止模式和待机模式。 2.实现RTC实时时间显示。 一、低功耗模式 电源对电子设备的重要性不言而喻&#xff…

UE5(c++)开发日志(3):将前面写的输出日志的方法进行封装

Public下新增一个c类: 选择无属性,因为不需要添加任何东西进去, 也不需要借助里面任何东西。 创建一个命名空间Debug,可以在命名空间内写一点静态方法 : namespace Debug{} static void Print(const FString& message, con…

Jenkins教程-12-发送html邮件测试报告

上一小节我们学习了发送钉钉测试报告通知的方法,本小节我们讲解一下发送html邮件测试报告的方法。 1、自动化用例执行完后,使用pytest_terminal_summary钩子函数收集测试结果,存入本地status.txt文件中,供Jenkins调用 #conftest…

PyTorch实战OCR:CRNN与CTC Loss详解——深度学习图像转文字(2)

文章目录 一、CRNN(卷积递归神经网络) 1.1 CRNN介绍与网络结构 1.1.1 网络结构 二、网络结构详解 2.1 CNN 2.2 Map-to-Sequence2.3 RNN2.3 CTC Loss 2.3.1 序列合并机制 2.3.2 训练阶段2.3.3 划分标准2.3.4 CRNN总结结 一、CRNN(卷积…

ZipKin分布式链路追踪

MicrometerZipKin分布式链路追踪是一种在微服务架构中广泛使用的技术,用于实时观测系统的整体调用链路情况、快速发现并定位问题、判断故障对系统的影响范围与程度、梳理服务之间的依赖关系,并分析系统调用链路的性能与瓶颈点。以下是关于MicrometerZipK…

LeetCode.224基本计算器

问题描述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 解题思路 逆波兰表示法是一种无需括号即可定义运算顺序的数学表达式表示方法,…

使用 Web Animations API 创建动画效果

Web Animations API 是一种现代的方式来控制和创建在浏览器中运行的动画效果。它提供了一种更高效、更强大的方法来管理和执行动画,比传统的基于CSS动画和JavaScript动画更为灵活。 什么是 Web Animations API? Web Animations API 是一个JavaScript A…

AUTOSAR NvM模块(三)

NvMRbResistantToLayoutRemoval 该参数定义了一个NvM块是否对布局移除具有抵抗性。如果该参数配置为真并且该块已被写入,那么即使该块不再是当前布局的一部分(例如,当配置发生变化并且该块从布局中移除时),底层系统也…

资产编排大师:Symfony资产组件的全面解析

资产编排大师:Symfony资产组件的全面解析 在现代Web开发中,Symfony框架以其强大的组件系统而著称。资产组件是Symfony提供的关键工具之一,用于管理和优化前端资源,如JavaScript、CSS、图片等。本文将深入探讨Symfony资产组件的功…

全球AI新闻速递6.28

全球AI新闻速递 1.首款 Transformer 专用 AI 芯片 Sohu 登场。 2.钉钉:宣布对所有AI大模型厂商开放,首批7家接入。 3.华为联合清华大学发布《AI 终端白皮书》。 4.国家卫生健康委:推动AI技术在制定个性化营养、运动干预方案中的应用。 …

1Python的Pandas:基本简介

1. Pandas的简介 Pandas 是一个开源的 Python 数据分析库,由 Wes McKinney 在 2008 年开始开发,目的是为了解决数据分析任务中的各种需求。Pandas 是基于 NumPy 库构建的,它使得数据处理和分析工作变得更加快速和简单。Pandas 提供了易于使用…