¿Por qué necesitamos una base de datos?
En un sistema de archivos, cada departamento guarda sus propios archivos. Esto causa problemas:
- Redundancia de datos: el mismo dato se guarda muchas veces y se desperdicia espacio.
- Inconsistencia de datos: una copia se actualiza y las otras no, así que dejan de coincidir.
- Difícil de buscar y compartir: cada pregunta nueva necesita un programa nuevo.
- Poca seguridad: es difícil controlar quién ve qué.
- Aislamiento y dependencia de los datos: los archivos tienen formatos distintos y, si se cambia su estructura, los programas dejan de funcionar.
Una base de datos es un conjunto organizado de datos relacionados guardados en un solo lugar, para poder compartirlos, mantenerlos coherentes y protegerlos.
Sistema gestor de bases de datos (SGBD)
Un SGBD (en inglés DBMS) es un programa para crear, guardar, actualizar, buscar y gestionar una base de datos, y para controlar quién puede usarla. Ejemplos: MySQL, Oracle, PostgreSQL, SQLite, Microsoft Access.
Ventajas: menos redundancia, coherencia, uso compartido por muchos usuarios, seguridad con contraseñas y permisos, copias de seguridad y recuperación, y búsquedas fáciles con un lenguaje de consultas (SQL).
Usos de cada día: bancos, reservas de trenes, expedientes escolares, compras en línea, hospitales.
Modelo relacional: relación, atributo, tupla, dominio
En el modelo de datos relacional, los datos se guardan en tablas.
- Relación: una tabla con nombre, por ejemplo ESTUDIANTE.
- Atributo: una columna, por ejemplo Nombre.
- Tupla: una fila, es decir, un registro completo.
- Dominio: el conjunto de valores permitidos para un atributo, por ejemplo Curso ∈ {9, 10, 11, 12}.
- Grado: número de atributos (columnas).
- Cardinalidad: número de tuplas (filas).
Reglas: cada columna tiene un nombre único; el orden de las filas o columnas no importa; no hay dos filas exactamente iguales; cada celda guarda un solo valor (o NULL, que significa desconocido).
Claves: candidata, primaria y alternativa
- Clave candidata: un atributo (o conjunto de atributos) cuyo valor es único en cada fila y nunca es NULL. Una tabla puede tener más de una.
- Clave primaria: la clave candidata elegida para identificar las filas. No puede ser NULL ni repetirse.
- Clave alternativa: cada clave candidata que no fue elegida como clave primaria.
Ejemplo: ESTUDIANTE(NumMat, Nombre, Curso, Correo). El nombre se repite y el curso se repite, así que no son claves. NumMat y (si siempre está lleno y es distinto) Correo son claves candidatas. Elegimos NumMat como clave primaria; Correo pasa a ser la clave alternativa.
También es útil saber que una clave compuesta usa dos o más columnas juntas (como Curso + NumLista); y una clave foránea es una columna de una tabla que hace referencia a la clave primaria de otra tabla y así las une.
Pruébalo: busca la clave en tu carné escolar
Mira tu carné del colegio o tu abono de autobús. Anota cada campo (nombre, curso, número de lista, número de matrícula, teléfono). Para cada uno hazte dos preguntas: ¿pueden dos alumnos tener el mismo valor? ¿Puede estar vacío? Escribe cuáles son claves candidatas y cuál elegirías como clave primaria. Después prueba la misma idea en el paso 6 del 3D.
Fórmulas y definiciones clave
- Relación = tabla; atributo = columna; tupla = fila
- Grado = número de columnas; cardinalidad = número de filas
- Clave candidata: única + no NULL
- Clave primaria = clave candidata elegida; claves alternativas = las demás
Ejemplos resueltos
1. Una tabla tiene 5 columnas y 30 filas. Indica su grado y su cardinalidad.
Grado = 5, cardinalidad = 30.
2. Se añaden 2 filas y 1 columna a una tabla de 4 × 10 (grado 4, cardinalidad 10). ¿Cuáles son los nuevos valores?
Grado = 5, cardinalidad = 12.
3. EMPLEADO(IdEmp, Nombre, Aadhaar, Dpto). Identifica las claves candidatas, primaria y alternativa.
IdEmp y Aadhaar son únicos → claves candidatas. Elegimos IdEmp como clave primaria; Aadhaar es la clave alternativa. Nombre y Dpto pueden repetirse.
4. ¿Por qué Nombre no puede ser la clave primaria en ESTUDIANTE?
Dos estudiantes pueden tener el mismo nombre, así que no identifica una fila de forma única.
5. Da el dominio de un atributo Género guardado como una sola letra.
{"M", "F", "O"} (o los códigos que permita el colegio).
Errores comunes
- Llamar tupla a una columna. Tupla = fila; atributo = columna.
- Decir que el grado es el número de filas. El grado cuenta las columnas.
- Pensar que una tabla solo puede tener una clave candidata. Puede tener varias, pero solo una clave primaria.
- Permitir NULL en una columna de clave primaria.