Why databases and the relational model · Pourquoi les bases de données et le modèle relationnel
| English | Français |
|---|---|
| table/ˈteɪbl/ | tableau |
| relational database/rɪˈleɪʃənl ˈdeɪtəbeɪs/ | base de données relationnelle |
| flat files/flæt faɪlz/ | fichiers plats |
| data redundancy/ˈdeɪtə rɪˈdʌndənsi/ | redondance des données |
| data inconsistency/ˈdeɪtə ˌɪnkənˈsɪstənsi/ | incohérence des données |
| integrity/ɪnˈteɡrɪti/ | intégrité |
| field/fiːld/ | champ |
| entity/ˈentɪti/ | entité |
| record/ˈrekɔːd/ | enregistrement |
| tuple/ˈtuːpl/ | tuple |
| attribute/ˈætrɪbjuːt/ | attribut |
| primary key/ˈpraɪməri kiː/ | clé primaire |
| composite key/ˈkɒmpəzɪt kiː/ | clé composite |
| candidate key/ˈkændɪdeɪt kiː/ | clé candidate |
| secondary key/ˈsekəndəri kiː/ | clé secondaire |
| indexing/ˈɪndeksɪŋ/ | indexation |
| foreign key/ˈfɒrən kiː/ | clé étrangère |
| referential integrity/ˌrefəˈrenʃl ɪnˈteɡrɪti/ | intégrité référentielle |
| one-to-many/wʌn tə ˈmeni/ | un-à-plusieurs |
| many-to-many/ˈmeni tə ˈmeni/ | plusieurs-à-plusieurs |
The paper IBM did not want
- In 1970 an IBM researcher called Edgar Codd published a twelve-page paper proposing that data be stored in simple tables, linked by shared values, and asked for in a language that said what you wanted rather than where it was on the disk.
- IBM already sold a database that stored data as trees tied to the file layout, so it ignored him for years. Every program written against those files had to be rewritten whenever the layout changed.
- By the 1980s every bank, airline and government department was moving to Codd's tables. Half a century later they still run on them.
- This lesson is the problems of the file-based approach, how a relational database 关系数据库 solves them, and the words you must use exactly.
Le document que IBM ne voulait pas
- En 1970, un chercheur d'IBM nommé Edgar Codd a publié un document de douze pages proposant que les données soient stockées dans de simples tableaux, liés par des valeurs partagées, et demandés via un langage indiquant quoi vous vouliez plutôt que où cela se trouvait sur le disque.
- IBM vendait déjà une base de données stockant les données sous forme d'arbres liés à la mise en page des fichiers, elle l'a donc ignoré pendant des années. Chaque programme écrit contre ces fichiers devait être réécrit chaque fois que la mise en page changeait.
- Dans les années 1980, toutes les banques, les compagnies aériennes et les services gouvernementaux adoptaient les tables de Codd. Un demi-siècle plus tard, ils fonctionnent toujours sur cette base.
- Cette leçon concerne les problèmes de l'approche basée sur les fichiers, comment une base de données relationnelle 关系数据库 les résout, et les termes que vous devez utiliser exactement.
The file-based approach
- Before databases, each program kept its own flat files 平面文件: the sales program had a customer file, the accounts program had another, the delivery program a third.
- Each file had a fixed layout that the program's code depended on, and nothing outside the program knew what was in it.
- It works for one small program. The trouble starts when the second program needs the same data.
Three programs, three copies of the customer
L'approche basée sur les fichiers
- Avant les bases de données, chaque programme conservait ses propres fichiers plats 平面文件 : le programme de ventes avait un fichier clients, le programme comptable en avait un autre, le programme de livraison un troisième.
- Chaque fichier avait une mise en page fixe sur laquelle dépendait le code du programme, et rien en dehors du programme ne savait ce qu'il contenait.
- Cela fonctionne pour un petit programme unique. Le problème commence quand le second programme a besoin des mêmes données.

Trois programmes, trois copies du client
The limitations
- Data redundancy 数据冗余: the same data, a customer's address, is held in several files, wasting storage and effort.
- Data inconsistency 数据不一致: the copies are updated separately, so they drift apart and nobody knows which is right.
- Data dependence: programs are tied to the file format, so a change to the layout means rewriting every program that uses the file.
- Integrity 完整性 is hard to enforce, data is hard to share safely, searching across files is slow, and security cannot be set per field.
Les limites
- Redondance de données 数据冗余 : les mêmes données, l'adresse d'un client, sont détenues dans plusieurs fichiers, gaspillant du stockage et des efforts.
- Incohérence de données 数据不一致 : les copies sont mises à jour séparément, elles divergent et personne ne sait laquelle est correcte.
- Dépendance aux données : les programmes sont liés au format de fichier, donc un changement de mise en page signifie réécrire tous les programmes utilisant ce fichier.
- Intégrité 完整性 est difficile à appliquer, les données sont difficiles à partager en toute sécurité, la recherche à travers les fichiers est lente, et la sécurité ne peut pas être définie par champ.
Storing a customer's address in several separate files leads to: · Stocker l'adresse d'un client dans plusieurs fichiers séparés entraîne :
The same data held in many places (redundancy) can be updated separately and become inconsistent. · Les mêmes données détenues à de multiples endroits (redondance) peuvent être mises à jour séparément et devenir incohérentes.
In a flat-file system the same data is often duplicated across files, which can become inconsistent when only one copy is updated. · Dans un système de fichiers plats, les mêmes données sont souvent dupliquées entre les fichiers, ce qui peut devenir incohérent lorsqu'une seule copie est mise à jour.
That redundancy and the resulting inconsistency is the core problem the relational model solves. · Cette redondance et l'incohérence qui en résulte constituent le problème central que résout le modèle relationnel.
Which are limitations of the file-based approach? Select all · tout that apply. · Quelles sont les limites de l'approche basée sur des fichiers ? Sélectionnez toutes les réponses applicables.
Redundancy, inconsistency and data dependence are the three named limitations. Tables and joins belong to the relational approach that replaces it. · La redondance, l'incohérence et la dépendance aux données sont les trois limites nommées. Les tables et les jointures appartiennent à l'approche relationnelle qui remplace celle-ci.
How a relational database answers them
- A relational database stores the data in tables 表 managed by one piece of software, the DBMS, which every program uses.
- Each fact is stored once, so redundancy and inconsistency disappear: an address is changed in one place and every program sees the change.
- Programs ask the DBMS for data by name, so the storage can change without the programs changing: data independence.
- Integrity rules, access rights and backups are enforced centrally, and any table can be searched or joined with any other.
One copy of the data, one gatekeeper
Comment une base de données relationnelle y répond
- Une base de données relationnelle stocke les données dans des tables 表 gérées par un seul logiciel, le SGBD (DBMS), auquel chaque programme accède.
- Chaque fait est stocké une seule fois, éliminant redondance et incohérence : une adresse changée à un endroit est vue par tous les programmes.
- Les programmes demandent les données au SGBD par nom, permettant aux stocks de changer sans modifier les programmes : indépendance des données.
- Règles d'intégrité, droits d'accès et sauvegardes sont appliqués centralisés, et n'importe quelle table peut être recherchée ou jointe à une autre.

Une copie des données, un gardien
How does a relational database remove data inconsistency? · Comment une base de données relationnelle élimine-t-elle l'incohérence des données ?
One copy, one update, no drift. The DBMS gives every program the same current value. · Une seule copie, une seule mise à jour, aucune divergence. Le SGBD donne à chaque programme la même valeur actuelle.
The vocabulary: tables, rows and columns
- A table (a relation) is a grid of rows and columns, one table for each type of entity 实体, a thing about which data is stored:
CUSTOMER,ORDER,PRODUCT. - A record 记录 is one row, one instance of the entity; the formal word is tuple 元组.
- A field 字段 is one column, one piece of information about each record; the formal word is attribute 属性.
Rows are records, columns are fields, and one column reaches into the other table
Le vocabulaire : tables, lignes et colonnes
- Une table (relation) est une grille de lignes et colonnes, une table par type d'entité 实体, une chose pour laquelle des données sont stockées :
CUSTOMER,ORDER,PRODUCT. - Un enregistrement 记录 est une ligne, une instance de l'entité ; le terme formel est tuple 元组.
- Un champ 字段 est une colonne, une information concernant chaque enregistrement ; le terme formel est attribut 属性.

Les lignes sont des enregistrements, les colonnes sont des champs, et une colonne s'étend vers l'autre table
Read a relational table with SELECT · Lire une table relationnelle avec SELECT
A relational table is just rows (records) and columns (fields). WHERE keeps the rows that match a condition; SELECT then keeps only the columns you asked for. · Une table relationnelle est constituée de lignes (enregistrements) et de colonnes (champs). WHERE garde les lignes correspondant à une condition ; SELECT garde ensuite uniquement les colonnes demandées.
The vocabulary: keys
- A primary key 主键 is a field, or combination of fields, that uniquely identifies each record; it is never null and never duplicated. A composite key 复合键 is a primary key made of two or more fields.
- A candidate key 候选键 is any field or combination that could serve as the primary key. A secondary key 次键 is a non-primary field that is indexed for fast searching; indexing 索引 builds an index on a field so look-ups and joins run faster.
- A foreign key 外键 is a field whose value matches the primary key of another table, linking the two. In shorthand, the primary key is underlined and the foreign key noted:
Le vocabulaire : clés
- Une clé primaire 主键 est un champ ou combinaison de champs identifiant uniquement chaque enregistrement ; elle n'est jamais nulle ni dupliquée. Une clé composite 复合键 est une clé primaire composée de deux champs ou plus.
- Une clé candidate 候选键 est tout champ ou combinaison pouvant servir de clé primaire. Une clé secondaire 次键 est un champ non-primaire indexé pour une recherche rapide ; indexation 索引 crée un index sur un champ afin que les recherches et joints soient plus rapides.
- Une clé étrangère 外键 est un champ dont la valeur correspond à la clé primaire d'une autre table, liant les deux. En abrégé, la clé primaire est soulignée et la clé étrangère notée :
CUSTOMER(CustomerID, Name, Phone)
ORDER(OrderID, CustomerID, OrderDate) -- CustomerID is a foreign key → CUSTOMER
A primary key: · Une clé primaire :
The primary key uniquely identifies each row. A foreign key is the one that links to another table. · La clé primaire identifie de manière unique chaque ligne. Une clé étrangère est celle qui se lie à une autre table.
Match each kind of key to what it is. · Faites correspondre chaque type de clé à ce qu'elle est.
The primary key identifies a row; a foreign key links to another table; composite = several fields together; candidate = a possible primary key. · La clé primaire identifie une ligne ; une clé étrangère se lie à une autre table ; composite = plusieurs champs ensemble ; candidate = une clé primaire possible.
A field whose value matches the primary key of another table is a ______ key. · Un champ dont la valeur correspond à la clé primaire d'une autre table est une clé ______.
The foreign key is what creates the relationship between two tables. · La clé étrangère est ce qui crée la relation entre deux tables.
Worked example: name the parts of a library database
- A library records its books, its members and each loan. Identify the entities, a primary key for each, and the foreign keys.
- Entities:
BOOK,MEMBER,LOAN. Primary keys:BookID,MemberID,LoanID, each chosen because it is unique for every record and never blank; a title or a name would not do, since two books can share a title. LOAN(LoanID, BookID, MemberID, DateOut, DateDue):BookIDandMemberIDare foreign keys, each matching the primary key of its own table. A member's phone number belongs inMEMBER, not in every loan.
Exemple résolu : nommer les parties d'une base de données de bibliothèque
- Une bibliothèque enregistre ses livres, ses membres et chaque prêt. Identifiez les entités, une clé primaire pour chacune, et les clés étrangères.
- Entités :
BOOK,MEMBER,LOAN. Clés primaires :BookID,MemberID,LoanID, chacune choisie car elle est unique pour chaque enregistrement et jamais vide ; un titre ou un nom ne conviendrait pas, car deux livres peuvent partager un titre. LOAN(LoanID, BookID, MemberID, DateOut, DateDue):BookIDetMemberIDsont des clés étrangères, chacune correspondant à la clé primaire de sa propre table. Le numéro de téléphone d'un membre appartient àMEMBER, pas à chaque prêt.
In LOAN(LoanID, BookID, MemberID, DateOut), BookID and MemberID are ____ keys. · Dans LOAN(LoanID, BookID, MemberID, DateOut), BookID et MemberID sont des clés ____.
Each matches the primary key of another table, BOOK and MEMBER, and links the loan to them. · Chacune correspond à la clé primaire d'une autre table, BOOK et MEMBER, et relie l'emprunt à celles-ci.
Relationships and referential integrity
- A relationship links two entities. One-to-one: each member has one library card. One-to-many 一对多: one member has many loans; each loan belongs to one member. Many-to-many 多对多: a book has many authors and an author writes many books.
- Referential integrity 参照完整性 means every foreign-key value must match an existing primary key in the table it refers to: no loan for a member who does not exist, no orphan records.
- The DBMS enforces it: it refuses an insert with an unknown foreign key, and refuses to delete a record that other records still refer to.
Relations et intégrité référentielle
- Une relation lie deux entités. Un-à-un : chaque membre a une carte de bibliothèque. Un-à-plusieurs 一对多 : un membre a plusieurs prêts ; chaque prêt appartient à un membre. Plusieurs-à-plusieurs 多对多 : un livre a plusieurs auteurs et un auteur écrit plusieurs livres.
- Intégrité référentielle 参照完整性 signifie que chaque valeur de clé étrangère doit correspondre à une clé primaire existante dans la table qu'elle référence : aucun prêt pour un membre inexistant, aucun enregistrement orphelin.
- Le SGBD l'applique : il refuse une insertion avec une clé étrangère inconnue, et refuse de supprimer un enregistrement auquel d'autres enregistrements font encore référence.
Referential integrity ensures that: · L'intégrité référentielle garantit que :
It prevents orphan records — you cannot reference a primary key that does not exist. · Elle empêche les enregistrements orphelins — vous ne pouvez pas référencer une clé primaire qui n'existe pas.
Match each relationship to its type. · Faites correspondre chaque relation à son type.
Count how many of each entity can be linked to one of the other. Many-to-many needs a link table to store. · Comptez combien d'entités de chaque type peuvent être liées à une entité de l'autre. Un rapport plusieurs-à-plusieurs nécessite une table de liaison pour stocker.
Worked example: what referential integrity stops
- A customer with three outstanding orders is deleted from the
CUSTOMERtable. Explain how referential integrity applies. - Each order's
CustomerIDis a foreign key that must match an existing customer. Deleting the customer would leave three orders pointing at a record that no longer exists: orphan records. - The DBMS therefore refuses the deletion until the orders are deleted or reassigned, or, if set up to cascade, deletes the orders too. Either way no order ever refers to a customer who is not there.
- Say what the rule is, what would break it, and what the DBMS does.
Exemple résolu : ce que l'intégrité référentielle empêche
- Un client avec trois commandes impayées est supprimé de la table
CUSTOMER. Expliquez comment l'intégrité référentielle s'applique. - La
CustomerIDde chaque commande est une clé étrangère qui doit correspondre à un client existant. Supprimer le client laisserait trois commandes pointant vers un enregistrement n'existant plus : enregistrements orphelins. - Le SGBD refuse donc la suppression tant que les commandes ne sont pas supprimées ou réassignées, ou, si configuré pour cascader, supprime aussi les commandes. De toute façon, aucune commande ne fait référence à un client absent.
- Dites ce que la règle est, ce qui la violerait, et ce que fait le SGBD.
Referential integrity allows a customer to be deleted while orders in another table still refer to that customer. · L'intégrité référentielle permet de supprimer un client alors que des commandes dans une autre table font toujours référence à ce client.
That would create orphan records. The DBMS refuses the deletion, or cascades it to the orders, so every foreign key keeps pointing at an existing record. · Cela créerait des enregistrements orphelins. Le SGBD refuse la suppression, ou la propage aux commandes, afin que chaque clé étrangère pointe toujours vers un enregistrement existant.
Definitions the examiner accepts
| Term | Definition |
|---|---|
| entity | a thing about which data is stored, represented by one table |
| attribute | one item of data about an entity, a column |
| tuple | one row of a table, one record |
| primary key | an attribute or combination of attributes that uniquely identifies each tuple |
| candidate key | an attribute or combination that could be chosen as the primary key |
| secondary key | an indexed attribute used to search the table quickly |
| foreign key | an attribute in one table that is the primary key of another, forming the link |
| referential integrity | every foreign-key value refers to an existing primary key |
Définitions acceptées par l'examinateur
| Terme | Définition |
|---|---|
| entité | une chose pour laquelle des données sont stockées, représentée par une table |
| attribut | un élément de données concernant une entité, une colonne |
| tuple | une ligne d'une table, un enregistrement |
| clé primaire | un attribut ou combinaison d'attributs identifiant uniquement chaque tuple |
| clé candidate | un attribut ou combinaison qui pourrait être choisi comme clé primaire |
| clé secondaire | un attribut indexé utilisé pour rechercher rapidement dans la table |
| clé étrangère | un attribut dans une table qui est la clé primaire d'une autre, formant le lien |
| intégrité référentielle | chaque valeur de clé étrangère fait référence à une clé primaire existante |
Marks that slip away
- A tuple is a row, an attribute is a column. Swapping them costs both marks.
- "Unique" alone does not define a primary key; it identifies each record and is never null.
- A foreign key may repeat: one customer, many orders. It is the primary key that may not.
- A secondary key is for fast searching, not for identification. Do not call it "a second primary key".
Pièges qui font perdre des points
- Un tuple est une ligne, un attribut est une colonne. Les inverser coûte les deux points.
- "Unique" seul ne définit pas une clé primaire ; elle identifie chaque enregistrement et n'est jamais nulle.
- Une clé étrangère peut répéter : un client, plusieurs commandes. C'est la clé primaire qui ne peut pas.
- Une clé secondaire sert à la recherche rapide, pas à l'identification. Ne l'appellez pas "une seconde clé primaire".
You've got it
- the file-based approach suffers redundancy, inconsistency and data dependence, with weak integrity, sharing, searching and security
- a relational database stores each fact once in tables managed by one DBMS, so programs are independent of the storage and rules are enforced centrally
- entity → table · tuple → record, row · attribute → field, column · primary key identifies, foreign key links, candidate could identify, secondary is indexed for searching
- referential integrity: every foreign key matches an existing primary key, so no orphan records
Vous avez compris
- l'approche basée sur les fichiers souffre de redondance, incohérence et dépendance aux données, avec une intégrité, partage, recherche et sécurité faibles
- une base de données relationnelle stocke chaque fait une seule fois dans des tables gérées par un seul SGBD, ce qui rend les programmes indépendants du stockage et les règles sont appliquées au centre
- entité → table · tuple → enregistrement, ligne · attribut → champ, colonne · clé primaire identifie, clé étrangère lie, candidate pourrait identifier, secondaire est indexée pour la recherche
- intégrité référentielle : toute clé étrangère correspond à une clé primaire existante, donc pas d'enregistrements orphelins