Why databases and the relational model · Por qué las bases de datos y el modelo relacional
| English | Español |
|---|---|
| table/ˈteɪbl/ | tabla |
| relational database/rɪˈleɪʃənl ˈdeɪtəbeɪs/ | base de datos relacional |
| flat files/flæt faɪlz/ | archivos planos |
| data redundancy/ˈdeɪtə rɪˈdʌndənsi/ | redundancia de datos |
| data inconsistency/ˈdeɪtə ˌɪnkənˈsɪstənsi/ | inconsistencia de datos |
| integrity/ɪnˈteɡrɪti/ | integridad |
| field/fiːld/ | campo |
| entity/ˈentɪti/ | entidad |
| record/ˈrekɔːd/ | registro |
| tuple/ˈtuːpl/ | tupla |
| attribute/ˈætrɪbjuːt/ | atributo |
| primary key/ˈpraɪməri kiː/ | clave primaria |
| composite key/ˈkɒmpəzɪt kiː/ | clave compuesta |
| candidate key/ˈkændɪdeɪt kiː/ | clave candidata |
| secondary key/ˈsekəndəri kiː/ | clave secundaria |
| indexing/ˈɪndeksɪŋ/ | indexación |
| foreign key/ˈfɒrən kiː/ | clave foránea |
| referential integrity/ˌrefəˈrenʃl ɪnˈteɡrɪti/ | integridad referencial |
| one-to-many/wʌn tə ˈmeni/ | uno a muchos |
| many-to-many/ˈmeni tə ˈmeni/ | muchos a muchos |
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.
El documento que IBM no quería
- En 1970, un investigador de IBM llamado Edgar Codd publicó un artículo de doce páginas proponiendo que los datos se almacenasen en tablas simples, vinculadas por valores compartidos, y se solicitasen mediante un lenguaje que indicara qué se deseaba en lugar de dónde estaba en el disco.
- IBM ya vendía una base de datos que almacenaba los datos como árboles vinculados al diseño del archivo, por lo que lo ignoró durante años. Cada programa escrito contra esos archivos tenía que reescribirse cada vez que cambiaba el diseño.
- Para la década de 1980, todos los bancos, aerolíneas y departamentos gubernamentales estaban migrando a las tablas de Codd. Medio siglo después, todavía funcionan con ellas.
- Esta lección trata sobre los problemas del enfoque basado en archivos, cómo una base de datos relacional 关系数据库 los resuelve, y las palabras que debe usar exactamente.
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
El enfoque basado en archivos
- Antes de las bases de datos, cada programa mantenía sus propios archivos planos 平面文件: el programa de ventas tenía un archivo de clientes, el programa de contabilidad otro, el programa de envíos un tercero.
- Cada archivo tenía un diseño fijo del que dependía el código del programa, y nada fuera del programa sabía qué había dentro.
- Funciona para un solo programa pequeño. Los problemas comienzan cuando el segundo programa necesita los mismos datos.

Tres programas, tres copias del cliente
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.
Las limitaciones
- Redundancia de datos 数据冗余: los mismos datos, la dirección de un cliente, se mantienen en varios archivos, desperdiciando almacenamiento y esfuerzo.
- Inconsistencia de datos 数据不一致: las copias se actualizan por separado, por lo que divergen y nadie sabe cuál es la correcta.
- Dependencia de datos: los programas están ligados al formato del archivo, por lo que un cambio en el diseño significa reescribir todos los programas que usan el archivo.
- La integridad 完整性 es difícil de imponer, los datos son difíciles de compartir de forma segura, la búsqueda a través de archivos es lenta y la seguridad no puede configurarse por campo.
Storing a customer's address in several separate files leads to: · Almacenar la dirección de un cliente en varios archivos separados conduce a:
The same data held in many places (redundancy) can be updated separately and become inconsistent. · Los mismos datos mantenidos en muchos lugares (redundancia) pueden actualizarse por separado y volverse inconsistentes.
In a flat-file system the same data is often duplicated across files, which can become inconsistent when only one copy is updated. · En un sistema de archivos planos, los mismos datos suelen duplicarse entre archivos, lo cual puede volverse inconsistente cuando solo se actualiza una copia.
That redundancy and the resulting inconsistency is the core problem the relational model solves. · Esa redundancia y la inconsistencia resultante es el problema central que resuelve el modelo relacional.
Which are limitations of the file-based approach? Select all · todos that apply. · ¿Cuáles son las limitaciones del enfoque basado en archivos? Selecciona todas las que correspondan.
Redundancy, inconsistency and data dependence are the three named limitations. Tables and joins belong to the relational approach that replaces it. · La redundancia, la inconsistencia y la dependencia de los datos son las tres limitaciones nombradas. Las tablas y las uniones pertenecen al enfoque relacional que lo reemplaza.
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
Cómo una base de datos relacional responde a esto
- Una base de datos relacional almacena los datos en tablas 表 gestionadas por un único software, el SGBD (DBMS), que utilizan todos los programas.
- Cada dato se almacena una sola vez, eliminando la redundancia e inconsistencia: si se cambia una dirección en un lugar, todos los programas ven el cambio.
- Los programas solicitan datos al SGBD por nombre, por lo que el almacenamiento puede cambiar sin que los programas lo hagan: independencia de los datos.
- Las reglas de integridad, los derechos de acceso y las copias de seguridad se imponen centralmente, y cualquier tabla puede buscarse o unirse con cualquier otra.

Una sola copia de los datos, un solo guardián
How does a relational database remove data inconsistency? · ¿Cómo elimina una base de datos relacional la inconsistencia de datos?
One copy, one update, no drift. The DBMS gives every program the same current value. · Una copia, una actualización, sin desviación. El SGBD proporciona a cada programa el mismo valor actual.
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
Vocabulario: tablas, filas y columnas
- Una tabla (o relación) es una cuadrícula de filas y columnas; hay una tabla para cada tipo de entidad 实体, es decir, algo sobre lo cual se almacenan datos:
CUSTOMER,ORDER,PRODUCT. - Un registro 记录 es una fila, una instancia de la entidad; la palabra formal es tupla 元组.
- Un campo 字段 es una columna, un dato sobre cada registro; la palabra formal es atributo 属性.

Las filas son registros, las columnas son campos, y una columna se extiende hacia la otra tabla
Read a relational table with SELECT · Leer una tabla relacional con 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. · Una tabla relacional son simplemente filas (registros) y columnas (campos). WHERE mantiene las filas que coinciden con una condición; SELECT luego mantiene solo las columnas que solicitaste.
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:
Vocabulario: claves
- Una clave primaria 主键 es un campo o combinación de campos que identifica únicamente cada registro; nunca es nula ni se duplica. Una clave compuesta 复合键 es una clave primaria formada por dos o más campos.
- Una clave candidata 候选键 es cualquier campo o combinación que podría servir como clave primaria. Una clave secundaria 次键 es un campo no primario que está indexado para búsquedas rápidas; el indexado 索引 crea un índice en un campo para que las consultas y uniones sean más rápidas.
- Una clave foránea 外键 es un campo cuyo valor coincide con la clave primaria de otra tabla, vinculando ambas. En abreviatura, la clave primaria va subrayada y la clave foránea se indica así:
CUSTOMER(CustomerID, Name, Phone)
ORDER(OrderID, CustomerID, OrderDate) -- CustomerID is a foreign key → CUSTOMER
A primary key: · Una clave primaria:
The primary key uniquely identifies each row. A foreign key is the one that links to another table. · La clave primaria identifica de forma única cada fila. La clave foránea es la que enlaza a otra tabla.
Match each kind of key to what it is. · Asocia cada tipo de clave con lo que representa.
The primary key identifies a row; a foreign key links to another table; composite = several fields together; candidate = a possible primary key. · La clave primaria identifica una fila; una clave foránea enlaza a otra tabla; compuesta = varios campos juntos; candidata = una posible clave primaria.
A field whose value matches the primary key of another table is a ______ key. · Un campo cuyo valor coincide con la clave primaria de otra tabla es una clave ______.
The foreign key is what creates the relationship between two tables. · La clave foránea es lo que crea la relación entre dos tablas.
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.
Ejemplo resuelto: nombrar las partes de una base de datos de biblioteca
- Una biblioteca registra sus libros, sus socios y cada préstamo. Identifique las entidades, una clave primaria para cada una y las claves foráneas.
- Entidades:
BOOK,MEMBER,LOAN. Claves primarias:BookID,MemberID,LoanID, elegidas cada una porque es única para cada registro y nunca está vacía; un título o un nombre no servirían, ya que dos libros pueden compartir un título. LOAN(LoanID, BookID, MemberID, DateOut, DateDue):BookIDeMemberIDson claves foráneas, cada una coincidiendo con la clave primaria de su propia tabla. El teléfono de un socio pertenece aMEMBER, no a cada préstamo.
In LOAN(LoanID, BookID, MemberID, DateOut), BookID and MemberID are ____ keys. · En LOAN(LoanID, BookID, MemberID, DateOut), BookID y MemberID son claves ____.
Each matches the primary key of another table, BOOK and MEMBER, and links the loan to them. · Cada una coincide con la clave primaria de otra tabla, BOOK y MEMBER, y vincula el préstamo a ellas.
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.
Relaciones e integridad referencial
- Una relación vincula dos entidades. Uno a uno: cada socio tiene una tarjeta de biblioteca. Uno a muchos 一对多: un socio tiene muchos préstamos; cada préstamo pertenece a un socio. Muchos a muchos 多对多: un libro tiene muchos autores y un autor escribe muchos libros.
- La integridad referencial 参照完整性 significa que todo valor de clave foránea debe coincidir con una clave primaria existente en la tabla a la que hace referencia: ningún préstamo para un socio inexistente, ningún registro huérfano.
- El SGBD la impone: rechaza una inserción con una clave foránea desconocida y rechaza eliminar un registro al que otros registros aún hacen referencia.
Referential integrity ensures that: · La integridad referencial asegura que:
It prevents orphan records — you cannot reference a primary key that does not exist. · Evita los registros huérfanos: no puedes referenciar una clave primaria que no exista.
Match each relationship to its type. · Asocia cada relación con su tipo.
Count how many of each entity can be linked to one of the other. Many-to-many needs a link table to store. · Cuenta cuántas entidades de cada tipo pueden vincularse a una de la otra. Muchos a muchos necesita una tabla intermedia para almacenarse.
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.
Ejemplo resuelto: lo que detiene la integridad referencial
- Se elimina de la tabla
CUSTOMERa un cliente con tres pedidos pendientes. Explique cómo se aplica la integridad referencial. - El
CustomerIDde cada pedido es una clave foránea que debe coincidir con un cliente existente. Eliminar al cliente dejaría tres pedidos apuntando a un registro que ya no existe: registros huérfanos. - Por tanto, el SGBD rechaza la eliminación hasta que se eliminen los pedidos o se reasignen, o, si está configurado para cascada, también elimina los pedidos. De cualquier manera, ningún pedido hace referencia a un cliente que no exista.
- Diga cuál es la regla, qué la rompería y qué hace el SGBD.
Referential integrity allows a customer to be deleted while orders in another table still refer to that customer. · La integridad referencial permite eliminar un cliente mientras que los pedidos en otra tabla todavía hacen referencia a ese cliente.
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. · Eso crearía registros huérfanos. El SGBD rechaza la eliminación, o la propaga en cascada a los pedidos, para que toda clave foránea siga apuntando a un registro existente.
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 |
Definiciones aceptadas por el examinador
| Término | Definición |
|---|---|
| entidad | algo sobre lo cual se almacenan datos, representado por una tabla |
| atributo | un elemento de datos sobre una entidad, una columna |
| tupla | una fila de una tabla, un registro |
| clave primaria | un atributo o combinación de atributos que identifica únicamente cada tupla |
| clave candidata | un atributo o combinación que podría elegirse como clave primaria |
| clave secundaria | un atributo indexado utilizado para buscar rápidamente en la tabla |
| clave foránea | un atributo en una tabla que es la clave primaria de otra, formando el vínculo |
| integridad referencial | todo valor de clave foránea hace referencia a una clave primaria existente |
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".
Puntos que se pierden fácilmente
- Una tupla es una fila, un atributo es una columna. Intercambiarlos cuesta ambos puntos.
- "Única" sola no define una clave primaria; identifica cada registro y nunca es nula.
- Una clave foránea puede repetirse: un cliente, muchos pedidos. Lo que no puede repetirse es la clave primaria.
- Una clave secundaria es para búsquedas rápidas, no para identificación. No la llame "una segunda clave primaria".
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
Ya lo tienes
- el enfoque basado en archivos sufre de redundancia, inconsistencia y dependencia de datos, con baja integridad, capacidad de compartir, búsqueda y seguridad
- una base de datos relacional almacena cada dato una sola vez en tablas gestionadas por un único SGBD, por lo que los programas son independientes del almacenamiento y las reglas se imponen centralmente
- entidad → tabla · tupla → registro, fila · atributo → campo, columna · clave primaria identifica, clave foránea vincula, candidata podría identificar, secundaria está indexada para buscar
- integridad referencial: toda clave foránea coincide con una clave primaria existente, por lo que no hay registros huérfanos