1
Modelo Relacional(La piedra angular de las tecnologías de información en nuestra época)
Universidad de los AndesDemián Gutierrez
Enero 2010
2
Modelo ER / Diagramas ER
Mundo Real(Minimundo)
Esquema Interno
Esquema Conceptual
Esquema Externo
ModeladoER
BD
Transformación
Transformación
Modelos Conceptuales(De alto nivel, ERE,
UML)
Modelos“de Implementación” (básicos)
(De bajo nivel)
3
Modelo Básicos (de implementación)
Jerárquico (1960 / 1966, primera implementación IBM)
Redes (Charles Bachman en 1969)
Relacional (E. Codd en 1970 )
Orientado por Objetos(Fines de los 80)
Objeto – Relacional(Inicios de los 90)
4
Modelo Relacional (Objeto-Relacional)
Está basado en el concepto matemático de relación.
Se fundamenta en la teoría de normalización de las relaciones, que permite eliminar el comportamiento anormal de las relaciones, luego de
actualizaciones, así como el control de la redundancia de datos
5
Modelo Relacional (Conceptos)
Dominio:Conjunto de valores
Ej:
colores = {'rojo', 'verde', 'azul'}marcas = {'fiat', 'toyota', 'ford', 'honda'}
6
Modelo Relacional (Conceptos)
Relación: Subconjunto del producto
cartesiano de una lista de dominios
¿Subcon... de qué de una lista de qué?
7
Modelo Relacional (Conceptos)
Producto cartesiano de colores y marcas(denotado colores x marcas):
colores={'rojo', 'verde', 'azul'}marcas={'fiat', 'toyota', 'ford', 'honda'}
color marca
rojo
verde
azul
rojo
verde
azul
rojo
... ...
fiat
fiat
fiat
toyota
toyoya
toyota
ford
Producto Cartesiano:Todos contra todos:
8
Modelo Relacional (Conceptos)
...luego podemos tomar un subconjunto del producto cartesiano de los dominios:
color marca
rojo
verde
azul
rojo
verde
azul
rojo
... ...
fiat
fiat
fiat
toyota
toyoya
toyota
ford
R1={('fiat', 'verde'), ('toyota', 'azul'), ('ford', 'rojo')}
R2={('rojo', 'honda')}, o bien R3={}
R1 color marca
verde
azul
rojo
fiat
toyota
fordRelación
9
Modelo Relacional (Conceptos)
Esquema de una relación (o tabla): nombre de la relación seguido de la lista de sus atributos con sus
dominios
Atributo: Columna en una relación identificada por un nombre
Tupla / Registro: Fila en una tabla o relación que contiene un conjunto de valores acordes al esquema
de la relación (sus columnas y dominios)
10
Modelo Relacional (Conceptos)
R1 color marca
verde
azul
rojo
fiat
toyota
ford
Atributo o Columna
Esquema por
extensión
Tupla o fila(toyota, azul)
Tabla o Relación
R1(marca, color)
Esquema por intensión (Si, con
“s”, no es un error)
NOTA: El valor de un atributo puede ser nulo en una columna particular.
¿Qué significa esto?
11
Modelo Relacional (Conceptos)
INTENSIÓN. En Teoría de los Conceptos, el conjunto de las propiedades, las características o atributos esenciales (y
también accidentales) de un objeto, que le dan una identidad específica y lo distinguen de cualquier otro. En
la construcción de un concepto, refiere a la suma de sus enunciados esenciales. // 2. En Lingüística, conjunto de
rasgos semánticos que definen la clase denotada por el signo. Cuanto mayor es la intensión de un concepto, más limitada es
su extensión. Son precisos más rasgos semánticos para definir "gaviota" que para definir "ave", aunque en el universo
real hay más aves que gaviotas. V.A. DEFINICION POR INTENSION. V.A. EXTENSION.I INTENSION; CONNOTATION.
Tomado de: http://www.eubca.edu.uy/diccionario/letra_i.htm
12
¿qué es una base de datos relacional?
13
Base de Datos Relacional
Base de Datos Relacional:Base de datos que cumple con el modelo
relacional, donde su esquema es un conjunto de esquemas de relación de diferente
nombre cada uno
Esquema de una base de datos:El conjunto de esquemas o tablas que
conforman una base de datos
14
Reglas de Formación
Cada tupla tiene un número fijo de atributos o columnas
Cada relación o tabla contiene un único tipo de fila o tupla
No se permiten atributos compuestos o grupos repetitivos (Atributos Multivaluados)
Para que una relación sea una relación, debe cumplir con:
15
Modelo Relacional (Conceptos)
Estudiante Cédula Nombre Apellido Curso9.644.667 Pedro Pérez BD, IS10.133.212 Gabriel Mendoza PRI , CA1011.332.334 Luis Gonzales PRI I , SR10, EST114.126.112 Gilberto Zapata BD, IA
Atributo Multivaluado / Compuesto
Grupo Repetitivo
Estudiante Cédula Nombre Apellido Curso9.644.667 Pedro Pérez BD9.644.667 Pedro Pérez IS
10.133.212 Gabriel Mendoza PRI10.133.212 Gabriel Mendoza CA1011.332.334 Luis Gonzales PRII11.332.334 Luis Gonzales SR1011.332.334 Luis Gonzales EST114.126.112 Gilberto Zapata BD14.126.112 Gilberto Zapata IA
16
Reglas de Formación
Un atributo o grupo de ellos que identifiquen unívoca e inequívocamente cada tupla de la relación es una clave
candidata
Cada tupla es única y se identifica con su clave primaria
La clave primaria de una relación se selecciona entre las claves candidatas
Además, también, debe cumplir con:
Los atributos que forman parte de la clave primaria no pueden ser nulos
17
Modelo Relacional (Conceptos)
Estudiante Cédula #Carnet Nombre Apellido
9.644.667 10203 Pedro Pérez
14.126.112 11098 Gilberto Zapata
Claves candidatas:
Cédula
o bien...
#Carnet
Superclaves:
Cédula + #CarnetCédula + Nombre#Carnet + Apellido
etcétera...
Estudiante Cédula #Carnet Nombre Apellido
9.644.667 10203 Pedro
14.126.112 11098 Zapata
Pérez
Gilberto
Clave primaria (seleccionada de
las claves candidatas):
Cédula
¿Por qué nombre + apellido no es una clave candidata?
La clave se representa
subrayando los atributos que la
componen
18
Claves:Concretas / Abstractas / Incrementales (Auto)
Estudiante Cédula #Carnet Nombre Apellido
9.644.667 10203 Pedro Pérez
14.126.112 11098 Gilberto Zapata
Materia Código Nombre
BD01 Bases de Datos
IS02 Ing. del Software
Estudiante Cédula #Carnet Nombre Apellido
1 9.644.667 10203 Pedro
2 14.126.112 11098 Zapata
Id
Pérez
Gilberto
La cédula es algo muy concreto, existe, hasta “cierto punto” se puede
tocar
El código en el fondo no existe, es un invento que se usa para poder diferenciar una materia
de otra (pero sin embargo, una vez establecido es un atributo que tiene sentido)
El id (de identificador) simplemente no existe.
Cada fila tiene (por decreto) un id distinto, y este se va generando de
forma incremental a medida que se insertan
registros
¿Independientemente de que el Id seala clave la cédula podrá repetirse?
19
Claves:Simples / Compuestas
Estudiante Cédula #Carnet Nombre Apellido
9.644.667 10203 Pedro
14.126.112 11098 Zapata
Pérez
GilbertoLa cédula por si sola puede diferenciar un estudiante de
otro
Semestre Fecha Inicio Fecha Fin
A09 07/01/09 06/05/09
B09 15/05/09 15/12/09
A10 05/01/10 15/07/10
B10 20/05/10 14/12/10
CodSem
Semestre Año Fecha Inicio Fecha Fin
A 09 07/01/09 06/05/09
B 09 15/05/09 15/12/09
A 10 05/01/10 15/07/10
B 10 20/05/10 14/12/10
Sem
El CodSem por si mismo puede diferenciar un
semestre de otro
Ni el atributo Sem, ni el atributo Año por si mismos pueden
diferenciar un semestre de otro, es necesario usarlos en conjunto
(concatenados) para poder diferenciar un semestre de otro
20
Reglas de Formación
Además, también, debe cumplir con:
Si un atributo A que pertenece a R1 es también la clave primaria de R2,
entonces A es un atributo foráneo de R1, y se le suele llamar clave foránea
(Integridad Referencial)
21
Reglas de Formación
Si A es la clave primaria de R2 y también una clave foránea de R1, entonces para toda tupla de R1
donde A != nulo debe existir la tupla correspondiente en R2 con el valor de A que existe en la tupla de R1
Los atributos que forman parte de una clave foránea pueden ser nulos (no hay relación), aunque en
muchos casos es buena idea evitar esto si es posible
Además, también, debe cumplir con:
22
Claves:Foráneas (I)
Departamento Código Nombre
01 9644667
02 Computación 14126112
03 Control NULL
CédulaJefe
Inv. de Operaciones
Profesor Cédula Nombre Apellido
9.644.667 Pedro 01
14.126.112 Zapata 02
CodDpto
Pérez
Gilberto
CédulaJefe es una clave foránea de departamento que apunta al
atributo Cédula en Profesor
CodDpto es una clave foránea de Profesor que apunta al atributo Código
en Departamento
Si tomamos todas las claves foráneas del
diagrama y asumimos que CédulaJefe en
Departamento es única (Es decir, no se puede repetir en filas distintas) ¿Qué tipos relaciones existen
(cardinalidad) entre Departamento y Profesor?
23
Claves:Foráneas (I I)
Materia Código Nombre
BD Bases de Datos
IS Ing. del Software
SO Sist. Operativos
Estudiante Cédula Nombre Apellido
9.644.667 Pedro Pérez
14.126.112 Gilberto Zapata
¿Cuál será la clave primaria de esta
relación?
9.644.667 BD
9.644.667 SO
14.126.112 BD
14.126.112 IS
Est-Mat CedulaEst CódigoMat
¿Qué tipo de relación existe (cardinalidad) entre
Estudiante y Est-Mat? ¿Y entre Est-Mat y Materia?
¿Y entre Estudiante y Materia?
Est-Mat es una tabla intermedia que sirve para relacionar Estudiante con Materia
24
Reglas de Formación
Los valores de los atributos deben pertenecer al dominio definido para
cada atributo
El orden de las tuplas en la relación es irrelevante (No se puede contar con que
las tuplas vengan en cierto orden)
Además...:
25
Reglas de Formación
Un mismo dominio puede ser usado por diferentes atributos (Independientemente
de que exista una relación de claves foráneas o no)
Además...:
A partir de una o más tablas se pueden producir nuevas tablas diferentes
mediante el uso de las operaciones del álgebra relacional
26
Reglas de Integridad
Los Sistemas de Gestión de Bases de Datos permiten establecer ciertas reglas que deben cumplirse sobre
los atributos en las distintas relaciones que conforman una base de datos relacional
Semestre Fecha Inicio Fecha Fin Fecha Inscripción Fecha Retiro
U09 07/01/09 06/05/09 05/01/09 01/04/09
A10 11/01/10 15/07/10 05/01/10 10/06/10
B10 20/05/10 14/12/10 15/05/10 09/11/10
CodSem
Fecha Inicio< Fecha FinFecha Inscripción< Fecha Inicio
Fecha Retiro< Fecha Fin
Son los predicados definidos por el Administrador de la Base de Datos sobre los valores de los atributos usando
el lenguaje de definición de datos
27
Ejemplo de un Esquema Relacional(Esquema)
Cliente(codCli, nombre, balance, limiteCrédito, descuento, dirección)
Pedido(codPed, estado, dirEnvio, codArt, cantPedida, cantEnviada)
Articulo( codArt, nomArt, descripcion)
Inventario(codArt, codPlanta, cantidadExistencia)
Las claves primarias están subrayadas y las claves foráneas aparecen escritas en itálicas (y en negrita)
Pedido-Cliente(codPed, codCli)
¿Qué relaciones extrañas, posibles
problemas o incoherencias puede
encontrar en el modelo?
¿Cuántos artículos puedo almacenar en
una planta?
¿Cuántos artículos pueden incluirse en
un pedido?
¿Cuántos clientes están involucrados
en un pedido?
28
Ejemplo de un Esquema Relacional(Esquema)
Cliente(codCli, nombre, balance, limiteCrédito, descuento, dirección)
Pedido(codPed, estado, dirEnvio, codCli, cantPedida, cantEnviada)
Articulo( codArt, nomArt, descripcion)
Inventario(codArt, codPlanta, cantidadExistencia)
Pedido-Artículo(codPed, codArt)
29
Ejemplo de un Esquema Relacional(Tabla de Dominios I) (Una tabla global)
Atributo Descripción DominioCódigo del cliente Cadena(4)
nombre Nombre del cliente
balance Moneda (NO NULO)
Moneda (NO NULO)
descuento Descuento aplicado Moneda (NO NULO)
Código del pedido Cadena(6)
codCliCadena(32) sólo letras ,.”-’
Balance actual del cliente
limiteCrédito Límite de crédito del cliente
dirección, dirEnvio Dirección del cliente y dirección de envío
Cadena(128) letras, dígitos, . , # ‘ / -
codPed
Se puede tener una sola tabla de dominios (con todos los dominios de todas las relaciones)
continua...TODO: REVISAR COHERENCIA
30
Ejemplo de un Esquema Relacional(Tabla de Dominios I) (Una tabla global)
Atributo Descripción Dominio
estado Línea de pedido
Cantidad pedida Entero+
Entero+
Código del artículo Cadena(8)
Nombre del artículo
descripción Descripción del artículo
Código de la planta Cadena(2)
Entero+ (NO NULO)
Enumerado:0=pedido, 1=procesado, 2=pagado,3=enviado, 4=cancelado
cantPedida
cantEnviada Cantidad enviada del artículo
codArt
nomArt Cadena(64) letras, dígitosCadena(256) letras ,.”-’
codPlanta
cantExistencia Cantidad actual en existencia
...continuación
31
Ejemplo de un Esquema Relacional(Tabla de Dominios I) (Una tabla por relación)
Atributo Descripción Dominio
Código del cliente
nombre Nombre del cliente
balance Balance actual del cliente Moneda (NO NULO)
Límite de crédito del cliente Moneda (NO NULO)
descuento Descuento aplicado Moneda (NO NULO)
dirección
Tabla: Cliente
codCli Cadena(4) (PK)
Cadena(32) sólo letras ,.”-’
limiteCrédito
Dirección del cliente y dirección de envío
Cadena(128) letras, dígitos, . , # ‘ / -
Atributo Descripción Dominio
Código del pedido Cadena(6)
estado Línea de pedido
Cantidad pedida Entero+
Cantidad enviada del artículo Entero+
Tabla: Pedido
codPed
Enumerado: 0=pedido, 1=procesado, 2=pagado, 3=enviado, 4=cancelado
dirEnvio Dirección del cliente y dirección de envío
Cadena(128) letras, dígitos, . , # ‘ / -
codCli Código del cliente que realiza el pedido
Cadena(8) (Referencia a la tabla Cliente)
cantPedida
cantEnviadacontinua...
32
Ejemplo de un Esquema Relacional(Tabla de Dominios I I) (Una tabla por relación)
Atributo Descripción Dominio
Código del artículo
Nombre del artículo Cadena(64) letras, dígitos
descripción Descripción del artículo
Tabla: Artículo
codArt Cadena(8) (PK)
nomArt
Cadena(256) letras ,.”-’
Atributo Descripción Dominio
Código del pedido
Código del artículo
Tabla: Pedido-Artículo
codPed Cadena(6) (Referencia a la tabla Pedido) (PK)
codArt Cadena(4) (Referencia a la tabla Cliente) (PK)
Atributo Descripción Dominio
Código del artículo
Código de la planta
Entero+ (NO NULO)
Tabla: Inventario
codArt Cadena(8) (Referencia a la tabla Artículo) (PK)
codPlanta Cadena(2) (PK)
cantExistencia Cantidad actual en existencia
...continuación
33
Modelo Objeto-Relacional
Es una extensión (algunas veces caótica poco estandarizada y muy dependiente del SGBD) que pretende añadir algunas
características de Orientación por objetos al modelo Relacional
34
Modelo Objeto-Relacional
Se pueden crear nuevos tipos de datos que pueden ser tipos compuestos, pero que deben ser soportados por el propietario del tipo, esto es deben definir al menos dos métodos transformadores, uno para convertir el tipo nuevo a ASCII y el otro que convierte de ASCII al nuevo tipo. Se soportan tipos complejos como: registros,
conjuntos, referencias, listas, pilas, colas y arreglos
Tipo Compuesto Teléfono (cód_país, cód_área, cód_sector, número_local)
Ej: Teléfono (58, 274, 244, 3454)
Se traduce a una columna (Atributo) que tiene “cadenas”de con el siguiente formato:
'+cód_país-cód_área-cód_sector-número_local'
Ej: '+58-274-244-3454'
transformación definida por el propietarioo creador del tipo
35
Modelo Objeto-Relacional
Se pueden crear funciones que tengan un código en algún lenguaje de programación, por ejemplo: SQL,
Java, C, etcétera (Stored Procedures / Procedimientos Almacenados)
Se pueden crear operadores asignándoles un nombre y asociándolos a una función ya definida o creada con
anterioridad
Posibilidad de incluir el chequeo de las reglas de integridad referencial a través de los triggers o gatillos
Se soporta el encadenamiento dinámico y herencia en los tipos tupla o registro
36
Gracias
¡Gracias!