【你也能从零基础学会网站开发】关系型数据库中的表(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.mfbz.cn/a/762454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FTP 文件传输协议:概念、工作原理;上传下载操作步骤

目录 FTP 概念 工作原理 匿名用户 授权用户 FTP软件包 匿名用户上传下载实验步骤 环境配置 下载 上传 wget 授权用户上传下载步骤 root用户登录FTP步骤 监听 设置端口号范围 修改用户家目录 匿名用户 授权用户 FTP 概念 FTP(File Transfer Prot…

C语言之线程的学习

线程属于某一个进程 共同点:都能并发 线程共享变量,进程不共享。 多线程任务中,其中某一个线程调用了exit了,其他线程会跟着一起退出 如果是特定的线程就调用pthread_exit 失败返回的是错误号 下面也是

VSCode无法识别 node、npm

一、前提 电脑新安装了node.js,在cmd查看node和npm版本没有问题,但是在VSCode无法识别 1.cmd查看版本: 2.VSCode报错信息: 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果…

C#——Property属性详情

属性 属性(Property)是类(class)、结构体(structure)和接口(interface)的成员,类或结构体中的成员变量称为字段,属性是字段的扩展,使用访问器&am…

视频转音频:怎样提取视频中的音频?6个提取音频的小技巧(建议收藏)

怎样提取视频中的音频?当我们想从视频中提取出声音时,通常会遇到很多问题。无论是想单独提取出视频里的音频,还是把它转成方便储存或者分享的音频格式,这都会涉及到视频转音频的一个需求。因此,在这篇指南里&#xff0…

如何编写高质量更优雅的代码(Java)

1、函数式接口—FunctionalInterface 好处:高逼格、代码收拢、解藕、统一处理 适用范围:具有共性的接口调用代码 举个栗子: 在我们平时的微服务开发中,调用其他服务的接口,通常要把接口调用部分做异常处理(try catch…

为何交易价格可能超出预期?

当你尝试执行订单时,如果收到“报价超出”的提示,这通常意味着交易无法按你的预期价格成交。对于某些交易者来说,这可能会带来一些困扰,但在外汇等流动性极高的市场中,这种情况是相当常见的。 外汇市场之所以吸引众多…

Python系统教程01

Python 是一门解释性语言,相对更简单、易学,它可以用于解决数学问题、获取与分 析数据、爬虫爬取网络数据、实现复制数学算法等等。 1、print()函数: print()书写时注意所有的符号都是英文符号。print()输出内容时,若要输出字符…

A股低开高走,近3000点,行情要启动了吗?

A股低开高走,近3000点,行情要启动了吗? 今天的A股,让人瞪目结舌了,你们知道是为什么吗?盘面上出现2个重要信号,一起来看看: 1、今天两市低开高走,银行板块护盘指数&…

如何使用AI学习一门编程语言?

无论你是软件开发新手还是拥有几十年的丰富经验,总是需要学习新知识。TIOBE Index追踪50种最受欢迎的编程语言,许多生态系统为职业发展和横向转型提供了机会。鉴于现有技术具有的广度,抽空学习一项新技能并有效运用技能可能困难重重。 最近我…

Linux启动elasticsearch,提示权限不够

Linux启动elasticsearch,提示权限不够,如下图所示: 解决办法: 设置文件所有者,即使用户由权限访问文件 sudo chown -R 用户名[:新组] ./elasticsearch-8.10.4 //切换到elasticsearch-8.10.4目录同级 chown详细格式…

关于vue创建项目失败报错(镜像过期)的解决方案

在新建vue项目时出现以下错误: 原因: npm.taobao.org和registry.npm.taobao.org旧域名于2021年官方公告域名更换事件,已于2022年05月31日零时起停止服务,域名HTTPS证书于2024年1月22日正式到期,不可再用。 解决方案:…

昇思MindSpore学习总结七——模型训练

1、模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后,可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码&#xff0…

gdb及其使用

gdb调试一&#xff1a; 首先进入gdb&#xff0c;确定好进程&#xff0c;输入进程号 确定要调试哪个文件&#xff0c;然后输入&#xff1a;&#xff08;b为打断点&#xff09; (gdb) b serialization_protobuffer.h:write<ros::serialization::OStream>(ros::serializat…

python自动化办公之shutil

目录 1复制文件&#xff0c;此时存在2份相同文件 2移动文件&#xff0c;此时仅有1份文件 3删除文件&#xff0c;此时0份文件 用到的库&#xff1a;shutil&#xff0c;os 实现的效果&#xff1a;复制文件&#xff0c;移动文件&#xff0c;删除文件 代码&#xff1a; 1复制…

【机器学习】FFmpeg+Whisper:二阶段法视频理解(video-to-text)大模型实战

目录 一、引言 二、FFmpeg工具介绍 2.1 什么是FFmpeg 2.2 FFmpeg核心原理 2.3 FFmpeg使用示例 三、FFmpegWhisper二阶段法视频理解实战 3.1 FFmpeg安装 3.2 Whisper模型下载 3.3 FFmpeg抽取视频的音频 3.3.1 方案一&#xff1a;命令行方式使用ffmpeg 3.3.2 方案二&a…

Error: A JNl error has occurred, please check your installation and try again.

Eclipse 运行main方法的时候报错&#xff1a;Error: A JNl error has occurred, please check your installation and try again. 一、问题分析 导致这个问题&#xff0c;主要原因&#xff0c;我认为是在新版本中&#xff0c;默认的JDK编译版本与我们配置的JDK版本不一致导致的…

【Linux】:命令行参数

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux命令行参数的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入…

代码随想录算法训练营第59天:动态[1]

代码随想录算法训练营第59天&#xff1a;动态 两个字符串的删除操作 力扣题目链接(opens new window) 给定两个单词 word1 和 word2&#xff0c;找到使得 word1 和 word2 相同所需的最小步数&#xff0c;每步可以删除任意一个字符串中的一个字符。 示例&#xff1a; 输入: …

JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?

目录 ▐ 前言 ▐ JavaEE是指什么? ▐ 什么是服务器&#xff1f; ▐ Tomcat安装教程 * 修改服务端口号 ▐ 将Tomcat集成到IDEA中 ▐ 测试 ▐ 结语 ▐ 前言 至此&#xff0c;这半年来我已经完成了JavaSE&#xff0c;Mysql数据库&#xff0c;以及Web前端知识的学习了&am…