23 Nov
Conceptos Fundamentales de Bases de Datos
Llaves en Bases de Datos
Llave Primaria: Es un atributo o conjunto de atributos que identifican de manera única cada fila en una tabla.
Ejemplo: En una tabla Clientes
, el atributo id_cliente
podría ser la llave primaria.
Llave Secundaria: Es un atributo que no es único, pero que se usa para buscar registros de forma más eficiente. No identifica de manera única una fila.
Ejemplo: En una tabla Vehículos
, el atributo modelo
podría ser una llave secundaria, ya que varios vehículos pueden tener el mismo modelo.
Llaves Candidatas: Son atributos que pueden servir como llaves primarias. Cada llave candidata puede identificar de manera única una fila en la tabla.
Ejemplo: En la tabla Clientes
, tanto id_cliente
como email
podrían ser llaves candidatas si cada cliente tiene un correo electrónico único.
Llaves Foráneas
Ejemplo: En el modelo de una base de datos de ventas, si la tabla Facturas
tiene un atributo id_cliente
que referencia el id_cliente
en la tabla Clientes
, id_cliente
en Facturas
sería una llave foránea.
Diseño de Bases de Datos
Etapas del Proceso de Diseño
a) Modelo Conceptual
Descripción: Esta fase se centra en representar la estructura de alto nivel de los datos sin preocuparse por cómo se implementarán. Se utiliza para identificar las entidades, relaciones y restricciones.
Abstracción: Alta, ya que no se consideran detalles técnicos.
Ejemplo: Un diagrama ER (Entidad-Relación) que representa clientes, vehículos y ventas.
b) Modelo Lógico
Descripción: Esta fase define la estructura de los datos de manera más detallada, incluyendo entidades, atributos y relaciones, pero sin especificar detalles de implementación física.
Abstracción: Media, ya que comienza a incluir detalles sobre cómo se relacionan los datos.
Ejemplo: Definir tablas como Clientes
, Vehículos
, y las relaciones entre ellas.
c) Modelo Físico
Descripción: Esta fase se enfoca en la implementación concreta de la base de datos, incluyendo la selección del sistema gestor de bases de datos (SGBD), la definición de tipos de datos, índices y restricciones de integridad.
Abstracción: Baja, ya que se centra en la implementación concreta.
Ejemplo: Crear scripts SQL para la creación de tablas y establecer claves primarias y foráneas.
Modelo Entidad-Relación (ER) para un Sistema de Restaurante
Para construir el modelo ER de este sistema de administración de restaurante, identificaremos las entidades principales y sus relaciones, así como sus cardinalidades y posibles atributos.
Entidades e Identificación de Atributos
Plato
- Atributos:
código
,nombre
,tipo
,tiempo de cocción
,foto
,descripción
. - Relación con
Precio
: cada plato tiene múltiples precios históricos con fechas de inicio y fin (1:N).
- Atributos:
Precio
- Atributos:
monto
,fecha_inicio
,fecha_fin
.
- Atributos:
Cliente
- Atributos:
código
,nombre
,dirección
,teléfonos
(múltiples). - Relación con
Cuenta
: un cliente puede tener múltiples cuentas (1:N).
- Atributos:
Cajero
- Atributos:
código
,nombre
,dirección
,teléfono
. - Relación con
Cuenta
yFactura
: un cajero atiende y cobra múltiples cuentas (1:N).
- Atributos:
Cuenta
- Atributos:
nombre_cliente
,nombre_cajero
,fecha
,hora
,detalle
(platos y precios, cantidad de cada plato),suma_total
. - Relación con
Plato
: una cuenta puede tener múltiples platos (N:M).
- Atributos:
Factura
- Atributos:
NIT_cliente
,código_orden
. - Relación con
Cuenta
: 1:1 (cada cuenta genera una factura).
- Atributos:
Relaciones y Cardinalidades
- Plato – Precio: 1:N, un plato puede tener múltiples precios a lo largo del tiempo.
- Cuenta – Plato: N:M, una cuenta incluye varios platos, y un plato puede estar en varias cuentas.
- Cuenta – Cliente: N:1, un cliente puede tener varias cuentas.
- Cuenta – Cajero: N:1, un cajero atiende varias cuentas.
- Cuenta – Factura: 1:1, cada cuenta genera una única factura.
- Factura – Cliente: N:1, un cliente puede tener varias facturas.
Diagrama ER (Paso Resumido)
- Dibuja las entidades con sus atributos.
- Usa conectores y escribe las relaciones, marcando las cardinalidades.
- Asegura las dependencias.
Normalización de la Tabla POSEEAUTOMOVIL
Tabla Original:
GUSTA AUTOMOVIL(placaA, marcaA, modeloA, colorA, codPer, nomPer, dirPer, telPer, calificaciónGusto)
Dependencias Funcionales
df1: placaA → marcaA, modeloA, colorA
df2: codPer → nomPer, dirPer, telPer
df3: placaA, codPer → calificaciónGusto
Segunda Forma Normal (2FN)
- Primera FN: La tabla ya está en 1FN, ya que no tiene atributos multivaluados.
- Clave Primaria:
(placaA, codPer)
para identificar de forma única cada gusto de auto.
Pregunta 2: Normalización de la Tabla POSEEAUTOMOVIL
Tabla Original: GUSTA AUTOMOVIL
Columna | Significado |
---|---|
placaA | Placa del automóvil |
marcaA | Marca del automóvil |
modeloA | Modelo del automóvil |
colorA | Color del automóvil |
codPer | Código de la persona |
nomPer | Nombre de la persona |
dirPer | Dirección de la persona |
telPer | Teléfono de la persona |
calificaciónGusto | Calificación del gusto hacia el automóvil |
Dependencias Funcionales
Las dependencias funcionales (DF) proporcionadas son:
DF1: placaA → marcaA, modeloA, colorA
: La placa del automóvil determina su marca, modelo y color.DF2: codPer → nomPer, dirPer, telPer
: El código de la persona determina el nombre, dirección y teléfono.DF3: placaA, codPer → calificaciónGusto
: La combinación de placa y código de persona determina la calificación del gusto.
Paso 1: Verificar 1FN
Ya se menciona que la tabla está en 1FN, es decir, todos los valores son atómicos y no hay datos repetidos en una columna.
Paso 2: Aplicar la Segunda Forma Normal (2FN)
Para que una tabla esté en 2FN:
- Debe estar en 1FN.
- Cada atributo no clave debe depender de toda la clave primaria.
Aquí, la clave primaria sería la combinación de placaA
y codPer
. Ahora aplicamos las dependencias:
Dependencia Parcial (DF1 y DF2): Las columnas
marcaA
,modeloA
,colorA
dependen solo deplacaA
, no decodPer
.Solución: Creamos una nueva tabla
AUTOMOVIL
con los atributos relacionados a la placa:AUTOMOVIL placaA
(PK)marcaA
modeloA
colorA
Dependencia Parcial (DF2):
nomPer
,dirPer
,telPer
dependen solo decodPer
.- Creamos una tabla
PERSONA
para almacenar estos atributos.
PERSONA codPer
(PK)nomPer
dirPer
telPer
- Creamos una tabla
Tabla GUSTA: Finalmente, en la tabla
GUSTA
dejamos solo las dependencias completas de la clave primaria:GUSTA placaA
(FK)codPer
(FK)calificaciónGusto
Estas tres tablas ahora cumplen con la 2FN.
Deja un comentario