欢迎来到数据库的世界!
你有没有想过,Netflix 是如何准确记住你上次观看心爱剧集的集数?又或者学校如何在不混乱的情况下,管理数以千计学生的资料、成绩和出席记录?答案就是数据库 (Databases)。在本章中,我们将探讨数据是如何被组织、链接和传输的。如果一开始觉得有点生硬也不用担心,我们将透过日常生活中的例子来为大家拆解!
1. 平面文件 (Flat Files) 与关系型数据库 (Relational Databases)
在进入进阶概念之前,我们需要先了解数据存储的两种主要方式。
平面文件数据库 (Flat File Database)
想象一个巨大且单一的电子表格,将所有信息都挤进同一个表中,这就是平面文件 (Flat File) 数据库。虽然它设置起来很简单,但却有很大的问题:
1. 数据冗余 (Data Redundancy): 你会发现自己不断重复输入相同的信息(例如客户每次购物都要重新输入地址)。
2. 数据完整性 (Data Integrity): 如果客户搬家了,你必须找出他们所有的记录并逐一修改地址。只要漏掉一行,你的数据就会出现错误!
关系型数据库 (Relational Database)
关系型数据库则聪明得多。我们不再使用一个巨大的表,而是将数据拆分成多个较小的表(例如“客户”表和“订单”表),并将它们链接 (link) 起来。
例子:与其为了 50 个订单而写 50 次客户名字,你只需在“客户”表中写一次,然后使用“客户 ID”将其链接到他们的订单即可。
小复习: 平面文件对于简单的购物清单还行,但对于任何复杂的系统,我们都会使用关系型数据库来节省空间并防止错误。
2. 成功的“关键”(Keys)
在关系型数据库中,我们使用键 (Keys) 来保持所有资料的组织性和链接性。
主键 (Primary Key): 这是表中每条记录的唯一标识码。它必须是唯一的——没有两条记录可以使用相同的编号。
例子:你的学生编号或护照号码。
外键 (Foreign Key): 这是一个表中的字段,它是另一个表的主键。它就像是两个表之间的“桥梁”或链接。
例子:在“订单”表中,“客户ID”就是一个指向“客户”表的外键。
次键 (Secondary Key): 这是一个用于快速搜索或索引数据的字段。它不必是唯一的。
例子:当你打电话给商店时,他们可能会询问你的“姓氏”来查找账户。“姓氏”就是次键,因为它比随机的 ID 号码更容易记住。
记忆小撇步:
Primary = Personal(个人的专属 ID)。
Foreign = Friend(通往另一个表的链接,像朋友一样互通)。
Secondary = Search(用于快速搜索资料)。
3. 实体关系 (ER) 建模
实体 (Entity) 就是我们想要存储数据的“对象”(例如学生、书本或汽车)。ER 建模 (ER Modelling) 就是画出一张图表,用来展示这些实体之间是如何关联的。
关系主要有三种:
1. 一对一 (1:1): 一个人只有一本护照。
2. 一对多 (1:M): 一位母亲可以有多个孩子,但每个孩子只有一位亲生母亲。
3. 多对多 (M:M): 许多学生修读许多科目。(注意:关系型数据库不喜欢直接处理 M:M 关系;通常需要一个“链接表”在中间进行拆解!)
你知道吗? 在绘制这些图表时,我们通常会使用“乌鸦脚 (Crow's Foot)”标记法。单线代表“一”,而看起来像鸟爪的符号则代表“多”。
4. 数据的获取、选择与管理
既然我们有了结构,那该如何使用这些数据呢?数据生命周期中有四个主要步骤:
数据获取 (Capturing)
这是将数据存入数据库的过程。
- 手动: 将资料输入到在线表格。
- 自动: 使用 OCR(光学字符识别)读取印刷文字,或是在超级市场扫描条码。
数据选择 (Selecting)
这是选择你具体想要查看的资料。你通常不会想看整个数据库,而只想看“所有 12 年级的学生”。我们使用查询 (Queries)(通常使用名为 SQL 的语言编写)来“过滤”数据,只显示我们需要的内容。
数据管理 (Managing)
这涉及到保持数据库的健康状态。包括更新 (Updating)(更改电话号码)、删除 (Deleting)(移除旧账户)以及将数据排序 (Sorting) 成有用的顺序。
数据交换 (Exchanging)
有时我们需要将数据从我们的数据库发送到另一个电脑系统。为此,我们使用大家都能理解的标准格式:
- CSV (逗号分隔值): 一种简单的文本文件,数据之间以逗号分隔。
- XML 或 JSON: 更现代化的格式,用于应用程序之间透过互联网传输数据。
常见错误: 同学们常会误以为“获取”和“交换”是一样的。记住:获取是将数据存入,而交换则是数据在不同系统间的流动。
5. 重点总结
1. 关系型数据库使用多个链接表来减少重复的数据(冗余)。
2. 主键是唯一的标识码;外键是表与表之间的链接。
3. ER 图表协助我们可视化实体(如“客户”和“产品”)之间如何关联。
4. 数据交换依赖 CSV 或 JSON 等通用格式,确保不同系统可以互相“对话”。
继续练习吧!数据库的核心就是逻辑。一旦你看懂了表与表之间的“链接”,整个系统就变得浅显易懂了。你一定做得到的!