Capítulo 4
Modelo Lógico
Objetivos
• Tablas, Columnas, Filas y Campos(Primera Forma Normal)
• Definición de Primary Key y Foreign Key
• Conversión de Entidades del Modelo Conceptual
• Conversión de Relaciones:
– 1:1
– 1:M
– M:M
– Ternaria
• Conversión de Relaciones Especiales
– Supertipo-Subtipo
– Dependencia
– Recursiva
• Resolución de la Ubicación de los Atributos de la Relación
Modelo Lógico
• El modelo lógico es el refinamiento del
Modelo Conceptual
• Aquí se reducen y/o aumentan entidades y
solo quedan aquellas que van a ser diseñadas
como tablas de la Base de Datos
Formas Normales (FN)
• En la teoría de bases de datos relacionales, las
formas normales (FN) proporcionan los
criterios para determinar el grado de
vulnerabilidad de una tabla a inconsistencias y
anomalías lógicas.
Tablas, Columnas, Filas y
Campos(Primera Forma Normal)
• Una tabla de base de datos relacional que se
adhiere a la 1FN es una que satisface cierto
conjunto mínimo de criterios.
• Estos criterios se refieren básicamente a
asegurarse que la tabla es una representación
fiel de una relación y está libre de "grupos
repetitivos".
Tablas, Columnas, Filas y
Campos(Primera Forma Normal)
• Una tabla está en 1FN si satisface las siguientes cinco condiciones:
1. No hay orden de arriba-a-abajo en las filas.
2. No hay orden de izquierda-a-derecha en las columnas.
3. No hay filas duplicadas.
4. Cada intersección de fila-y-columna contiene exactamente un
valor del dominio aplicable y nada más.
5. Todas las columnas son regulares es decir, las filas no tienen
componentes como IDs de fila, IDs de objeto, o timestamps
ocultos.
Cedula Nombre Dirección Teléfono
0876456324 Jorge Santos 1234 Av. 10 2345678
0964532748 Luis Tinoco 6543 Av. 4 2654345
1345234567 Ana Ramírez 34 Av. 6 2654567
Cedula
Nombre
Dirección
Teléfono
CLIENTE
Tablas, Columnas, Filas y
Campos(Primera Forma Normal)
• La violación de cualesquiera de estas condiciones
significaría que la tabla no es estrictamente
relacional, y por lo tanto no está en 1FN.
Cedula Nombre Apellido Dirección Teléfono
0876456324 Jorge Santos 1234 Av. 10 2345678
0964532748 Luis Tinoco 6543 Av. 4 2654345
1345234567 Ana Ramírez 34 Av. 6 2654567
Cedula
Nombre
Apellido
Dirección
Teléfono
CLIENTE
Tabla/fila/columna = archivo/registro/campo = relación/tupla/atributo
Tipos de Claves
• Una clave es una o más columnas de una tabla
que identifica una fila.
• Una clave única identifica una sola fila, una no
única identifica a varias filas.
• Una clave compuesta es una clave que
contiene dos o más atributos.
• Una tabla tiene una clave primaria única y
puede tener claves únicas adicionales
llamadas claves candidatas.
Primary Key – Clave primaria
• Es usada para:
– Representar la tabla en las relaciones
– Organizar el almacenamiento de tabla
– Generar índices
Foreign Key – Clave Foránea
• Una clave foránea es una referencia a una
clave en otra tabla.
• Las claves foráneas no necesitan ser claves
únicas en la tabla donde están y sí a donde
están referenciadas.
idEmpleado (pk)
Nombre
Dirección
Teléfono
idDepartamento(fk)
EMPLEADO
idDepartamento(pk)
Nombre
DEPARTAMENTO
trabaja
Conversión de entidades
del modelo conceptual
• Cada entidad del modelo conceptual se
transforma directamente en una tabla.
• Los atributos de la entidad pasan a ser
automáticamente las columnas de la tabla.
Entidad Tabla
Atributos Columnas
idCliente int (pk)
Nombre char(30)
Dirección char(50)
Teléfono int
CLIENTE
idCliente
Nombre
Dirección
Teléfono
CLIENTE
Conversión de Relaciones
• Cada relación de un modelo conceptual se
transforma directamente en una tabla.
• Los campos de esta tabla son las claves
primarias de todas las entidades que
participen en la relación más todos aquellos
atributos que pudiera tener la relación.
Relación Tabla
Simplificación del modelo lógico
• El número de tablas que componen la base de
datos debe mantenerse en el mínimo posible.
• Esto mismo es aplicable a las relaciones
binarias con cardinalidad uno a uno.
• Las tablas con un único atributo se pueden
eliminar.
Relaciones 1:1
• Si las entidades que se asocian poseen
cardinalidades (0,1), entonces la relación se
transforma en una tabla, además de las dos
tablas a las que se transforman cada una de
las entidades:
idHombre
Nombre
HOMBRE
idMujer
Nombre
MUJER
matrimonio
idHombre int (pk)
Nombre char(30)
HOMBRE
idMujer int (pk)
Nombre char(30)
MUJER
idMujer int (fk)
idHombre int (fk)
MATRIMONIO
idMujer= idMujeridHombre= idHombre
Relaciones 1:1
• Si una de las entidades que participa en la relacion posee
cardinalidad (0,1), mientras que en la otra es (1,1), conviene
propagar la clave de la entidad con cardinalidad (1,1) a la tabla
resultante de la entidad de cardinalidades (0,1) con el fin de evitar
que aparezcan valores nulos.
idEmpleado
Nombre
Dirección
Teléfono
EMPLEADO
idDepartamento
Nombre
DEPARTAMENTO
dirige
idEmpleado int (pk)
Nombre char(30)
Dirección char(50)
Teléfono int
EMPLEADO
idDepartamento int(pk)
Nombre char(30)
idEmpleado int (fk)
DEPARTAMENTO
idEmpleado= idEmpleado
Relaciones 1:1
• En el caso de que ambas entidades presenten cardinalidades (1,1),
se puede propagar la clave de cualquiera de ellas a la tabla
resultante de la otra, teniendo en cuenta en este caso los accesos
más frecuentes y prioritarios a los datos de las tablas.
codigo
Nombre
añoFundacion
EQUIPO
cedula
Nombre
Apellido
PRESIDENTE
tiene
codigo= codigo
Cedula char (12) (pk)
Nombre char(30)
Apellido char(30)
Codigo int (fk)
PRESIDENTE
Codigo int (pk)
Nombre char(50)
añoFundacion int
EQUIPO
cedula= cedula Cedula char (12) (pk)
Nombre char(30)
Apellido char(30)
PRESIDENTE
Codigo int (pk)
Nombre char(50)
añoFundacion int
Cedula char(12) (fk)
EQUIPO
Relaciones 1:M
• Las tablas obtenidas como transformación de
relaciones binarias con cardinalidad uno a varios
se pueden eliminar.
• Los atributos que formaban parte de la tabla
pasan a formar parte de la tabla que representa
la entidad con cardinalidad “varios”.
• Asimismo, si la relación tuviera atributos propios,
también pasarían a la tabla que representa la
entidad con cardinalidad “varios”.
Relaciones 1:M
idEmpleado int (pk)
Nombre char(30)
Dirección char(50)
Teléfono int
idDepartamento int(fk)
EMPLEADO
idDepartamento int (pk)
Nombre char(30)
DEPARTAMENTO
idDepartamento = idDepartamento
idEmpleado
Nombre
Dirección
Teléfono
EMPLEADO
idDepartamento
Nombre
DEPARTAMENTO
trabaja
Relaciones 1:M
idUsuario= idUsusario
idUsuario
password
nombre
apellido
USUARIO
idReservacion
fechaLlegada
horaLlegada
diasPermanencia
RESERVACION
registra
fechaReservacion
horaReservacion
idUsuario char(30)(pk)
Password char(30)
Nombre char(30)
Apellido char(30)
USUARIO
idReservacion int (pk)
fechaLlegada date
horaLlegada time
diasPermanencia int
fechaReservacion date
horaReservacion time
idUsuario char(30) (fk)
RESERVACION
Relaciones M:M
idcliente
Nombre
Apellido
Dirección
Teléfono
CLIENTE
codProducto
Descripcion
PRODUCTOS
compra
fechaCompra
Idcliente int (pk)
Nombre char(30)
Apellido char(30)
Dirección char(50)
Teléfono int
CLIENTE
codProducto int (pk)
Descripcion char(50)
PRODUCTOS
idCompra (pk)
idCliente int (fk)
codProducto int(fk)
fechaCompra date
COMPRA
idCliente=idCliente
codProducto=codProducto
Relaciones Ternarias
idCliente
Nombre
Direccion
Telefono
Ciudad
CLIENTE
idCliente int (pk)
Nombre char(30)
Direccion char(50)
Telefono int
Ciudad char(30)
CLIENTE
idFormaPago
descripcion
FORMADEPAGO
numFactura
montoTotal
FACTURA
paga
Fecha
hora
idFormaPago int (pk)
Descripcion char(50)
FORMADEPAGO
idFormaPago int (fk)
idCliente int (fk)
numFactura int (fk)
Fecha date
Hora time
PAGO
numFactura int (pk)
montoTotal numeric(20,2)
FACTURA
idCliente=idCliente
idFormaPago= idFormaPago
numFactura= numFactura
Conversión de Relaciones Especiales
Supertipo –Subtipo
(a) Englobar todos los atributos de la entidad y sus subtipos en una
sola tabla. (Adoptaremos esta solución cuando los subtipos se
diferencien en muy pocos atributos y las relaciones que los
asocian con el resto de entidades del modelo conceptual sean las
mismas para todos los subtipos.
(b) Crear una tabla para el supertipo y tantas tablas como subtipos
haya, con sus atributos correspondientes. Esta es la solución
cuando existen muchos atributos distintos entre los subtipos y se
quieren mantener de todas las maneras los atributos comunes a
todos ellos en una tabla.
(c) Considerar las tablas distintas para cada subtipo, que contengan
además los atributos comunes. Se elegirá esta opción cuando se
dieran las mismas condiciones que en el caso anterior (muchos
atributos distintos) y los accesos realizados sobre los datos de los
distintos subtipos siempre afectan a atributos comunes.
Supertipo –Subtipo
idCliente
Nombre
Direccion
Telefono
Ciudad
CLIENTE
RUC
Razon social
Empresa
Cedula
Estado civil
Persona
idCliente int (pk)
Nombre char(30)
Direccion char(50)
Telefono int
Ciudad char(30)
RUC char(14)
Razon social char(20)
Cedula char(12)
EstadoCivil char(10)
CLIENTE(a)
Supertipo –Subtipo
idCliente int (pk)
Nombre char(30)
Direccion char(50)
Telefono int
Ciudad char(30)
CLIENTE(b)
idCliente
Nombre
Direccion
Telefono
Ciudad
CLIENTE
RUC
Razon social
Empresa
Cedula
Estado civil
Persona
idCliente int(fk)
RUC char(14) (pk)
Razon social char(20)
Empresa
idCliente int (fk)
Cedula char(12) (pk)
EstadoCivil char(10)
Persona
Supertipo –Subtipo
(c)
idCliente
Nombre
CLIENTE
RUC
Razon social
Empresa
Cedula
Estado civil
Persona
RUC char(14) (pk)
idCliente int (pk)
Nombre char(30)
Razon social char(20)
Empresa
Cedula char(12) (pk)
idCliente int (pk)
Nombre char(30)
EstadoCivil char(10)
Persona
Dependencia
Edificio Departamentotiene
idEdificio
Nombre
direccion
idDepartamento
Numero
Piso
Edificio Departamento
idEdificio int (pk)
Nombre char(30)
direccion char(50)
idDepartamento int (pk)
Numero int
Piso int
idEdificio int (fk)
idEdificio= idEdificio
Recursiva
Supervisa
idEmpleado
Nombre
Apellido
Dirección
Teléfono
Empleado
idEmpleado int (pk)
Nombre char(30)
Apellido char(30)
Dirección char(50)
Teléfono int
idEmpleado2 int(fk)
Empleado
idEmpleado= idEmpleado2
Diccionario de Datos
• Es un documento que muestra una
descripción de los elementos que componen
cada tabla.
• Para cada atributo de la tabla se especifica:
Atributo Tipo de Dato Dominio Descripción
Ejemplo de Diccionario de Datos

4 ml

  • 1.
  • 2.
    Objetivos • Tablas, Columnas,Filas y Campos(Primera Forma Normal) • Definición de Primary Key y Foreign Key • Conversión de Entidades del Modelo Conceptual • Conversión de Relaciones: – 1:1 – 1:M – M:M – Ternaria • Conversión de Relaciones Especiales – Supertipo-Subtipo – Dependencia – Recursiva • Resolución de la Ubicación de los Atributos de la Relación
  • 3.
    Modelo Lógico • Elmodelo lógico es el refinamiento del Modelo Conceptual • Aquí se reducen y/o aumentan entidades y solo quedan aquellas que van a ser diseñadas como tablas de la Base de Datos
  • 4.
    Formas Normales (FN) •En la teoría de bases de datos relacionales, las formas normales (FN) proporcionan los criterios para determinar el grado de vulnerabilidad de una tabla a inconsistencias y anomalías lógicas.
  • 5.
    Tablas, Columnas, Filasy Campos(Primera Forma Normal) • Una tabla de base de datos relacional que se adhiere a la 1FN es una que satisface cierto conjunto mínimo de criterios. • Estos criterios se refieren básicamente a asegurarse que la tabla es una representación fiel de una relación y está libre de "grupos repetitivos".
  • 6.
    Tablas, Columnas, Filasy Campos(Primera Forma Normal) • Una tabla está en 1FN si satisface las siguientes cinco condiciones: 1. No hay orden de arriba-a-abajo en las filas. 2. No hay orden de izquierda-a-derecha en las columnas. 3. No hay filas duplicadas. 4. Cada intersección de fila-y-columna contiene exactamente un valor del dominio aplicable y nada más. 5. Todas las columnas son regulares es decir, las filas no tienen componentes como IDs de fila, IDs de objeto, o timestamps ocultos. Cedula Nombre Dirección Teléfono 0876456324 Jorge Santos 1234 Av. 10 2345678 0964532748 Luis Tinoco 6543 Av. 4 2654345 1345234567 Ana Ramírez 34 Av. 6 2654567 Cedula Nombre Dirección Teléfono CLIENTE
  • 7.
    Tablas, Columnas, Filasy Campos(Primera Forma Normal) • La violación de cualesquiera de estas condiciones significaría que la tabla no es estrictamente relacional, y por lo tanto no está en 1FN. Cedula Nombre Apellido Dirección Teléfono 0876456324 Jorge Santos 1234 Av. 10 2345678 0964532748 Luis Tinoco 6543 Av. 4 2654345 1345234567 Ana Ramírez 34 Av. 6 2654567 Cedula Nombre Apellido Dirección Teléfono CLIENTE Tabla/fila/columna = archivo/registro/campo = relación/tupla/atributo
  • 8.
    Tipos de Claves •Una clave es una o más columnas de una tabla que identifica una fila. • Una clave única identifica una sola fila, una no única identifica a varias filas. • Una clave compuesta es una clave que contiene dos o más atributos. • Una tabla tiene una clave primaria única y puede tener claves únicas adicionales llamadas claves candidatas.
  • 9.
    Primary Key –Clave primaria • Es usada para: – Representar la tabla en las relaciones – Organizar el almacenamiento de tabla – Generar índices
  • 10.
    Foreign Key –Clave Foránea • Una clave foránea es una referencia a una clave en otra tabla. • Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas. idEmpleado (pk) Nombre Dirección Teléfono idDepartamento(fk) EMPLEADO idDepartamento(pk) Nombre DEPARTAMENTO trabaja
  • 11.
    Conversión de entidades delmodelo conceptual • Cada entidad del modelo conceptual se transforma directamente en una tabla. • Los atributos de la entidad pasan a ser automáticamente las columnas de la tabla. Entidad Tabla Atributos Columnas idCliente int (pk) Nombre char(30) Dirección char(50) Teléfono int CLIENTE idCliente Nombre Dirección Teléfono CLIENTE
  • 12.
    Conversión de Relaciones •Cada relación de un modelo conceptual se transforma directamente en una tabla. • Los campos de esta tabla son las claves primarias de todas las entidades que participen en la relación más todos aquellos atributos que pudiera tener la relación. Relación Tabla
  • 13.
    Simplificación del modelológico • El número de tablas que componen la base de datos debe mantenerse en el mínimo posible. • Esto mismo es aplicable a las relaciones binarias con cardinalidad uno a uno. • Las tablas con un único atributo se pueden eliminar.
  • 14.
    Relaciones 1:1 • Silas entidades que se asocian poseen cardinalidades (0,1), entonces la relación se transforma en una tabla, además de las dos tablas a las que se transforman cada una de las entidades: idHombre Nombre HOMBRE idMujer Nombre MUJER matrimonio idHombre int (pk) Nombre char(30) HOMBRE idMujer int (pk) Nombre char(30) MUJER idMujer int (fk) idHombre int (fk) MATRIMONIO idMujer= idMujeridHombre= idHombre
  • 15.
    Relaciones 1:1 • Siuna de las entidades que participa en la relacion posee cardinalidad (0,1), mientras que en la otra es (1,1), conviene propagar la clave de la entidad con cardinalidad (1,1) a la tabla resultante de la entidad de cardinalidades (0,1) con el fin de evitar que aparezcan valores nulos. idEmpleado Nombre Dirección Teléfono EMPLEADO idDepartamento Nombre DEPARTAMENTO dirige idEmpleado int (pk) Nombre char(30) Dirección char(50) Teléfono int EMPLEADO idDepartamento int(pk) Nombre char(30) idEmpleado int (fk) DEPARTAMENTO idEmpleado= idEmpleado
  • 16.
    Relaciones 1:1 • Enel caso de que ambas entidades presenten cardinalidades (1,1), se puede propagar la clave de cualquiera de ellas a la tabla resultante de la otra, teniendo en cuenta en este caso los accesos más frecuentes y prioritarios a los datos de las tablas. codigo Nombre añoFundacion EQUIPO cedula Nombre Apellido PRESIDENTE tiene codigo= codigo Cedula char (12) (pk) Nombre char(30) Apellido char(30) Codigo int (fk) PRESIDENTE Codigo int (pk) Nombre char(50) añoFundacion int EQUIPO cedula= cedula Cedula char (12) (pk) Nombre char(30) Apellido char(30) PRESIDENTE Codigo int (pk) Nombre char(50) añoFundacion int Cedula char(12) (fk) EQUIPO
  • 17.
    Relaciones 1:M • Lastablas obtenidas como transformación de relaciones binarias con cardinalidad uno a varios se pueden eliminar. • Los atributos que formaban parte de la tabla pasan a formar parte de la tabla que representa la entidad con cardinalidad “varios”. • Asimismo, si la relación tuviera atributos propios, también pasarían a la tabla que representa la entidad con cardinalidad “varios”.
  • 18.
    Relaciones 1:M idEmpleado int(pk) Nombre char(30) Dirección char(50) Teléfono int idDepartamento int(fk) EMPLEADO idDepartamento int (pk) Nombre char(30) DEPARTAMENTO idDepartamento = idDepartamento idEmpleado Nombre Dirección Teléfono EMPLEADO idDepartamento Nombre DEPARTAMENTO trabaja
  • 19.
    Relaciones 1:M idUsuario= idUsusario idUsuario password nombre apellido USUARIO idReservacion fechaLlegada horaLlegada diasPermanencia RESERVACION registra fechaReservacion horaReservacion idUsuariochar(30)(pk) Password char(30) Nombre char(30) Apellido char(30) USUARIO idReservacion int (pk) fechaLlegada date horaLlegada time diasPermanencia int fechaReservacion date horaReservacion time idUsuario char(30) (fk) RESERVACION
  • 20.
    Relaciones M:M idcliente Nombre Apellido Dirección Teléfono CLIENTE codProducto Descripcion PRODUCTOS compra fechaCompra Idcliente int(pk) Nombre char(30) Apellido char(30) Dirección char(50) Teléfono int CLIENTE codProducto int (pk) Descripcion char(50) PRODUCTOS idCompra (pk) idCliente int (fk) codProducto int(fk) fechaCompra date COMPRA idCliente=idCliente codProducto=codProducto
  • 21.
    Relaciones Ternarias idCliente Nombre Direccion Telefono Ciudad CLIENTE idCliente int(pk) Nombre char(30) Direccion char(50) Telefono int Ciudad char(30) CLIENTE idFormaPago descripcion FORMADEPAGO numFactura montoTotal FACTURA paga Fecha hora idFormaPago int (pk) Descripcion char(50) FORMADEPAGO idFormaPago int (fk) idCliente int (fk) numFactura int (fk) Fecha date Hora time PAGO numFactura int (pk) montoTotal numeric(20,2) FACTURA idCliente=idCliente idFormaPago= idFormaPago numFactura= numFactura
  • 22.
    Conversión de RelacionesEspeciales Supertipo –Subtipo (a) Englobar todos los atributos de la entidad y sus subtipos en una sola tabla. (Adoptaremos esta solución cuando los subtipos se diferencien en muy pocos atributos y las relaciones que los asocian con el resto de entidades del modelo conceptual sean las mismas para todos los subtipos. (b) Crear una tabla para el supertipo y tantas tablas como subtipos haya, con sus atributos correspondientes. Esta es la solución cuando existen muchos atributos distintos entre los subtipos y se quieren mantener de todas las maneras los atributos comunes a todos ellos en una tabla. (c) Considerar las tablas distintas para cada subtipo, que contengan además los atributos comunes. Se elegirá esta opción cuando se dieran las mismas condiciones que en el caso anterior (muchos atributos distintos) y los accesos realizados sobre los datos de los distintos subtipos siempre afectan a atributos comunes.
  • 23.
    Supertipo –Subtipo idCliente Nombre Direccion Telefono Ciudad CLIENTE RUC Razon social Empresa Cedula Estadocivil Persona idCliente int (pk) Nombre char(30) Direccion char(50) Telefono int Ciudad char(30) RUC char(14) Razon social char(20) Cedula char(12) EstadoCivil char(10) CLIENTE(a)
  • 24.
    Supertipo –Subtipo idCliente int(pk) Nombre char(30) Direccion char(50) Telefono int Ciudad char(30) CLIENTE(b) idCliente Nombre Direccion Telefono Ciudad CLIENTE RUC Razon social Empresa Cedula Estado civil Persona idCliente int(fk) RUC char(14) (pk) Razon social char(20) Empresa idCliente int (fk) Cedula char(12) (pk) EstadoCivil char(10) Persona
  • 25.
    Supertipo –Subtipo (c) idCliente Nombre CLIENTE RUC Razon social Empresa Cedula Estadocivil Persona RUC char(14) (pk) idCliente int (pk) Nombre char(30) Razon social char(20) Empresa Cedula char(12) (pk) idCliente int (pk) Nombre char(30) EstadoCivil char(10) Persona
  • 26.
    Dependencia Edificio Departamentotiene idEdificio Nombre direccion idDepartamento Numero Piso Edificio Departamento idEdificioint (pk) Nombre char(30) direccion char(50) idDepartamento int (pk) Numero int Piso int idEdificio int (fk) idEdificio= idEdificio
  • 27.
    Recursiva Supervisa idEmpleado Nombre Apellido Dirección Teléfono Empleado idEmpleado int (pk) Nombrechar(30) Apellido char(30) Dirección char(50) Teléfono int idEmpleado2 int(fk) Empleado idEmpleado= idEmpleado2
  • 28.
    Diccionario de Datos •Es un documento que muestra una descripción de los elementos que componen cada tabla. • Para cada atributo de la tabla se especifica: Atributo Tipo de Dato Dominio Descripción
  • 29.