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

🚀 个人主页 极客小俊

✍🏻 作者简介:程序猿、设计师、技术分享

🐋 希望大家多多支持, 我们一起学习和进步!

🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

关系型数据库中的表结构

表 (Table)

表(table)是关系型数据库的核心单元,是数据存储的地方。

在表中,数据被组织成行和列的形式。
每一行代表一个实体(即现实世界中的一个事物),每一列代表实体的一个属性

如图

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

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

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

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

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

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

元组

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

如图

字段(属性)

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

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

如图

主键

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

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

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

如图

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

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

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

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

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

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

外键

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

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

如图


举个栗子

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

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

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

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

主表和从表的关系

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

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

如图

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

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

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

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

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

如果是使用的是SQL语句的情况下, 创建这两个表的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语法之后,你就能搞明白了!


"👍点赞" "✍️评论" "收藏❤️"
大家的支持就是我坚持下去的动力!


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


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

相关推荐
Decay__5 分钟前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
Decay__6 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
吃一碗粉只付一碗钱11 小时前
10-令牌里的用户主键不要明文
服务器·数据库·sql·sqlserver·c#
sun032212 小时前
【JDK 动态代理】 和 【CGLIB 代理】对比
java·数据库·sql
l1t14 小时前
DeepSeek总结的AI 智能体应该用哪种语言搜索其记忆:SQL 还是 SPARQL?
数据库·人工智能·sql
geovindu15 小时前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
l1t17 小时前
DeepSeek总结的从 SQL 桥梁到智能体基础设施:Hex 的 DuckDB 实践
数据库·sql·duckdb
正儿八经的少年17 小时前
MyBatis 一对一、一对多 SQL
数据库·sql·mybatis
Decay__18 小时前
03_MySQL 存储引擎与存储管理 —— InnoDB 深入、表空间/ibd、binlog/redo/undo 与双写缓冲
运维·数据库·sql·mysql·架构