📘 CodingMarble Learn

数据库概念:DBMS、关系和键

把数据分别放在不同的文件里,会造成重复、不一致和安全性差。数据库把相关的数据有条理地放在一起,而 DBMS(比如 MySQL)就是管理数据库的软件。在关系模型中,数据保存在表(关系)里,表由列(属性)和行(元组)组成;域是一列允许取的所有值的集合。候选键能唯一确定每一行;从中选出一个作为主键,其余的叫备用键。

🎬 分步故事

  1. 分开的文件会重复保存数据,还容易对不上。数据库只保存一份。
  2. DBMS 站在用户和数据之间,负责管理一切。
  3. 一张表就是一个关系:列是属性,行是元组。
  4. 域就是一列允许取的值的集合。
  5. 候选键能认出每一行。选一个当主键,其余的叫备用键。
  6. 轮到你了:试试每一列,看它能不能当键。

提示:拖动3D画面可以旋转,用两根手指可以缩放。

🤔 常见疑问,一次讲清

电子表格不就是数据库吗?

电子表格可以放一张表,但 DBMS 还多了很多人同时共享、规则(键、域)、安全性和强大的查询。

为什么把行叫做元组?

在数学里,一组有顺序的值叫元组。每一行就是一组有顺序的值,每个属性对应一个。

域由谁来决定?

由数据库设计者根据现实中的规则来定(年级 9 到 12,分数 0 到 100)。然后 DBMS 会拒绝范围之外的值。

AdmNo 和 Email 都是唯一的,为什么选 AdmNo?

它短,从不改变,而且每个学生都有。电子邮箱可能会换,也可能没有。

键可以由两列组成吗?

可以。当没有哪一列单独是唯一的时候,像 (Class, RollNo) 这样的一组列就可以当键。这叫复合键。

为什么需要数据库?

在文件系统里,每个部门各管各的文件,于是出现这些问题:

数据库是把相关数据有条理地放在一处的集合,这样数据可以共享、保持一致,也更安全。

数据库管理系统(DBMS)

DBMS是用来创建、存储、更新、查找和管理数据库的软件,还能控制谁可以使用它。例如:MySQL、Oracle、PostgreSQL、SQLite、Microsoft Access。

好处:冗余少、数据一致、很多人可以同时使用、用密码和权限保证安全、能备份和恢复,还可以用查询语言(SQL)轻松查找。

日常用途:银行、火车订票、学校档案、网上购物、医院。

关系模型:关系、属性、元组、域

在关系数据模型中,数据保存在表里。

规则:每一列的名字都不同;行或列的顺序无所谓;没有两行完全一样;每个单元格只放一个值(或者 NULL,表示未知)。

键:候选键、主键和备用键

例子:STUDENT(AdmNo, Name, Class, Email)。Name 会重复,Class 也会重复,所以它们不是键。AdmNo 和(如果一直填写且互不相同的)Email 是候选键。选 AdmNo 作主键,Email 就成了备用键。

另外还有两个有用的概念:复合键是把两列或更多列合在一起用(比如 Class + RollNo);外键是一张表里的一列,它指向另一张表的主键,把两张表联系起来。

动手试试:在你的学生证里找键

看看你的学生证或公交卡。把每个项目(姓名、班级、学号、入学编号、电话)都列出来。对每一项问两个问题:两个学生会有相同的值吗?它可以为空吗?写下哪些是候选键,你会选哪一个当主键。然后在 3D 的第 6 步里再试一遍同样的想法。

重点公式和概念

例题讲解

1. 一张表有 5 列 30 行。求它的度和基数。

度 = 5,基数 = 30。

2. 一张 4 × 10(度为 4,基数为 10)的表,增加 2 行和 1 列后,新的值是多少?

度 = 5,基数 = 12。

3. EMPLOYEE(EmpID, Name, Aadhaar, Dept)。指出候选键、主键和备用键。

EmpID 和 Aadhaar 都是唯一的 → 候选键。选 EmpID 作主键;Aadhaar 是备用键。Name 和 Dept 可能重复。

4. 为什么 Name 不能作 STUDENT 的主键?

两个学生可能同名,所以它不能唯一地确定一行。

5. 写出用一个字母保存的属性 Gender 的域。

{"M", "F", "O"}(或者学校允许的其他代码)。

常见错误

练习测验

1. 关系中的一行叫做:
2. 关系中列的个数是它的:
3. 没有被选为主键的候选键叫:
4. 下面哪一个是 DBMS?
5. 同样的数据存在很多文件里,这叫:

练习:自己动手回答

输入或选择你的答案,然后点“检查”。卡住了就看提示;回答后会显示完整解答。

常见问题

为什么需要数据库?

为了避免分开的文件里出现重复和不一致的数据,并且方便地共享、保护和查找数据。

候选键、主键和备用键有什么区别?

每个候选键都能唯一地识别行;选中的那个是主键;其余的是备用键。

什么是度和基数?

度是关系中列(属性)的个数;基数是行(元组)的个数。

哪里会学到

ItalySecondaria di secondo grado – classe 3ªTools and foundations
ItalySecondaria di secondo grado – classe 4ªTools and foundations
NetherlandsHAVO 5 (eindexamenjaar)Elective theme: Databases
NetherlandsVWO 6 (eindexamenjaar)Elective theme: Databases
PolandLiceum ogólnokształcące, klasa IIProgramming and solving problems with computers
RomaniaClasa a X-aDatabases
RomaniaClasa a XII-aModule 1: Databases (compulsory)
RomaniaClasa a XII-aModule 2: Database management systems (optional)
RomaniaClasa a XII-aModern user skills
RomaniaClasa a XII-aWorking with a database application
Ukraine9 класInformation systems and data management
Ukraine10 класBase module: database systems
CBSE (India)Class 11Database Concepts and SQL
CBSE (India)Class 11RDBMS
England (GCSE, A level)Year 113.7 Relational databases and SQL
Japan高校1年Networks and data
Japan高校(専門学科)1〜3年Using Software
Japan高校(専門学科)1〜3年Computer Systems Technology
Japan高校(専門学科)1〜3年Databases
South Korea고등학교 2학년Understanding data science
South Korea고등학교 3학년Data and information
Germany (Bavaria)Jahrgangsstufe 10Data modelling and relational databases
FranceSecondeThemes
FrancePremièreTabular data
FranceTerminaleSpecific option — management information systems
Russia9 классTheoretical foundations
Russia11 классInformation technologies

先学这些

接着学