Beruflich Dokumente
Kultur Dokumente
GSyC"
2"
Contenidos"
Bases de Datos: Introduccin"
Diseo conceptual mediante el modelo Entidad
Relacin"
El modelo de datos relacional"
Conversin de un modelo ER a un modelo de datos
relacional"
GSyC"
3"
Bases de Datos
Introduccin"
Bases de Datos"
Base de Datos (BD, en ingls DB): Conjunto
de datos relacionados !
Normalmente es un conjunto de datos muy
grande. "
5"
6"
Ejemplo"
GSyC"
7"
Ejemplo"
GSyC"
8"
Ejemplo"
GSyC"
9"
Ejemplo"
GSyC"
10"
Perspectiva histrica"
Principios de los 60: Charles Bachman en GE crea Integrated Database
Store."
Finales de los 60: IBM crea Information Management System (IMS), base
de datos jerrquica. American Airlines e IBM crean SABRE, sistema para
reservas areas. "
1969: Edgar Codd en IBM crea las bases de datos relacionales. Las BD
pasan a ser una disciplina acadmica y a utilizarse masivamente en la
industria"
Aos 80: Consolidacin del modelo relacional. Aparece el lenguaje de
interrogacin de bases de datos SQL (derivado del trabajo de IBM en el
Sistema R). Jim Gray crea el concepto de transaccin para permitir la
ejecucin concurrente de programas que acceden a una base de datos. "
Aos 90: Las bases de datos entran en la era de Internet y se integran en
las tecnologas Web."
Aos 200X: NoSQL. BD con modelo de datos no relacional basado en el
concepto de tabla de smbolos, sin JOIN, que relajan de las propiedades
ACID de las BD transaccionales para mejorar la escalabilidad"
GSyC"
11"
12"
13"
Ejemplos de SGBD"
Propietarios: "
Oracle "
IBM DB2"
IBM Informix"
Ingres"
Interbase (Borland)"
Microsoft Access (derivada de Ingres) "
Microsoft SQL Server"
Sybase "
Libres: "
MySQL "
14"
Esquema conceptual o
lgico: define la estructura
lgica de la BD.
Esquema fsico:
especifica detalles
adicionales de
almacenamiento,
fundamentalmente los
ficheros que se usarn
y los ndices que
permitirn acelerar las
bsquedas.
GSyC"
15"
Esquema Fsico:"
las relaciones se guardarn cada una en un fichero sin
ordenar "
Mantenemos un ndice de la primera columna de
Asignaturas para hacer las bsquedas ms rpidas"
GSyC"
16"
GSyC"
17"
Transacciones"
Las aplicaciones que utilizan los usuarios que acceden a una BD se ejecutan
concurrentemente"
Estamos ante un caso claro de acceso concurrente a datos compartidos (la BD): El entrelazado en el
servidor de BD de las operaciones de acceso a los datos puede dar lugar a datos inconsistentes"
18"
Ejecucin consistente de
transacciones"
Cada transaccin ejecutada aisladamente deja la BD en un estado consistente
(Isolation). "
Objetivo: Ejecutar las operaciones de cada transaccin {T1, T2... Tn} de
forma que el resultado sea consistente, equivalente a una ejecucin serie: primero
todas las operaciones de T1, luego todas las de T2,... "
Solucin trivial: serializar las transacciones en un orden concreto: limita la
concurrencia "
Mejor: permitir el entrelazado concurrente de las acciones de las transacciones de
forma que el resultado sea equivalente a haber serializado las transacciones en
un orden concreto. "
Mtodo optimista: permitir un entrelazado arbitrario y al acabar de ejecutar todas las operaciones de
una transaccin, comprobar si la concurrencia con ops de otras transacciones ha violado la
equivalencia serie, en cuyo caso se deshacen los cambios, y si no se comprometen"
Mtodo pesimista: las transacciones intentan echar cerrojos (locks) sobre cada uno de los datos
que van a leer/escribir. Hasta que no se tienen todos los cerrojos no se realizan las acciones. Al
terminar la transaccin se liberan todos los cerrojos. As es imposible un entrelazado ilegal."
Si dos transacciones echan cerrojos sobre datos que la otra necesita se produce un interbloqueo"
Una de las dos se aborta y la otra consigue todos sus cerrojos y termina comprometiendo sus cambios"
GSyC"
19"
20"
GSyC"
21"
Diseo conceptual"
El Diseo Conceptual se realiza una vez se
ha realizado el anlisis de requisitos (historias
de usuario-BDD) "
Herramienta complementaria a la hora de capturar
requisitos"
Sirve para obtener un modelo de los datos del
mundo real que se van a gestionar en el sistema"
Genera una descripcin de alto nivel de los datos
que se almacenarn"
23"
Diseo conceptual"
Cules son las entidades del sistema que estamos
diseando?"
Empleados, departamentos"
GSyC"
24"
Concepto"
El Modelo Entidad-Relacin (E-R o ER) es un modelo de
datos semntico. "
Permite expresar una descripcin de los datos que refleje los
requisitos de la aplicacin. "
El modelo ER permite expresar las carctersticas de los
datos grficamente mediante diagramas ER."
Al capturar los requisitos de la aplicacin normalmente: "
1. se expresa la descripcin de los datos usando diagramas ER"
2. se convierten los diagramas ER a esquemas de un modelo
relacional. "
25"
Entidades"
Entidad!
Objeto del mundo real, distinguible de otros"
Ejemplo: un alumno de una universidad"
Se define en trminos de atributos. Ejemplo: nombre, dni, nmero de
expediente"
Cada atributo tiene un dominio: valores permitidos!
Cada atributo SLO puede almacenar UN valor!
Cada atributo es atmico: no se descompone en partes. (Ej. atributo direccin
no se descompone en ciudad, calle, piso,)"
Conjunto de entidades!
Coleccin de entidades, todas con los mismos atributos"
Ejemplo: todos los alumnos de una universidad"
Los conjuntos de entidades no tienen por qu ser disjuntos:"
Ejemplo: alumnos de una universidad, alumnos de primer curso"
26"
Entidades"
Clave!
Conjunto de atributos cuyos valores identifican de
forma nica a una entidad dentro de un conjunto"
No hay un subconjunto de ellos que tambin
identifiquen de forma nica a una entidad"
En caso contrario, no es una clave sino una superclave"
GSyC"
27"
Diagrama ER de un conjunto de
Entidades"
28"
Relaciones"
Relacin"
Asociacin entre 2 o ms entidades"
Ejemplo: El alumno Jos Prez estudia Ing. Teleco"
Puede tener atributos asociados. En ese caso son meramente
descriptivos!
Conjunto de Relaciones"
Coleccin de relaciones similares"
Puede representarse como un conjunto de tuplas"
{(e1, ..., en)|e1 E1, ..., en En}, en donde ei es una entidad del
conjunto de entidades Ei "
Ej: {(Jos Prez, Ing. Teleco), (Alfonso Gmez, Arquitectura, }"
Un mismo conjunto de entidades puede participar en distintos
conjuntos de relaciones, o en la misma relacin con varios roles
(empleado supervisa empleado) "
GSyC"
29"
Diagrama ER de un conjunto de
relaciones"
30"
Relaciones"
Ejemplo de una instancia del conjunto de relaciones
binarias Trabaja_En:
GSyC"
31"
Relaciones"
Ejemplo de un conjunto de relaciones ternarias (3
entidades)
GSyC"
32"
Restricciones de integridad de
clave"
Dependiendo de los datos del mundo real que se estn modelando
pueden existir restricciones de clave en un conjunto de relaciones"
Dado un conjunto de entidades que participa en un conjunto de
relaciones, se dice que el conjunto de relaciones es de: "
muchos-a-muchos (many-to-many): cuando cada entidad de cada
conjunto de entidades puede aparecer en varias de las relaciones"
1-a-muchos (1-to-many): cuando las entidades de uno de los conjuntos
de entidades puede aparecer como mucho en 1 de las relaciones. "
1-a-1 (1-to-1): (slo en conjuntos de relaciones binarias) cuando una
entidad del primer conjunto de entidades slo puede aparecer como
mucho 1 vez, y una entidad del otro conjunto slo puede aparecer como
mucho 1 vez. "
GSyC"
33"
Restricciones de integridad de
clave"
1-to-1
1-to-Many
Many-to-1
GSyC"
Many-to-Many
34"
Restricciones de integridad de
clave"
Trabaja_En: Un empleado puede tener muchos dptos. en los que trabaja. Y un dpto.
pueden tener muchos empleados trabajando en l"
Dirige: Un empleado puede tener muchos departamentos dirigidos, pero un
departamento slo puede tener como mucho un empleado que lo dirija."
GSyC"
35"
Restricciones de integridad de
clave"
Ejemplo:"
36"
Restricciones de integridad de
participacin"
Dependiendo de los datos del mundo real que se
estn modelando pueden existir restricciones de
participacin en un conjunto de relaciones"
La participacin de un conjunto de entidades en
un conjunto de relaciones puede ser: "
Total: Cuando todas las entidades aparecen en alguna relacin del
conjunto de relaciones. En los diagramas, se representan por una
lnea gruesa uniendo el conjunto de entidades al de relaciones. "
Parcial: Cuando no todas las entidades aparecen en alguna
relacin del conjunto de relaciones. "
GSyC"
37"
Restricciones de integridad de
participacin"
Ejemplo:"
38"
Entidades dbiles"
Una entidad dbil es la que slo se puede identificar
mediante la clave de otra entidad que la posee!
El conjunto de entidades que posee y el conjunto de
entidades dbil deben participar en un conjunto de
relaciones uno-a-muchos (un poseedor, muchas entidades
dbiles posedas)."
La participacin del conjunto de entidades dbiles debe
ser total en este conjunto de relaciones."
nombre
dni
fecha_nac
Empleados
coste
Pliza
f_nombre
edad
Familiares
39"
40"
GSyC"
41"
Agregaciones"
Se usan cuando tenemos que modelar una relacin en la que hay
involucrado un conjunto de relaciones y un conjunto de relaciones"
La agregacin permite tratar el conjunto de relaciones como si fuera
un conjunto de entidades en lo relativo a su participacin en otras
relaciones"
Agregacin vs. Ternaria: Supervisa
"
es una realacin distinta, con su propio"
atributo (hasta)"
Y podramos expresar que cada "
hasta
proyecto patrocinado es supervisado "
Supervisa
por un solo empleado"
comienzo
desde
ppresupuesto
pid
Proyectos
Depende
GSyC"
did
dnombre
dpresupuesto
Departamentos
42"
43"
44"
GSyC"
45"
46"
47"
siempre que el
dni
director de un
departamento
obtenga un
presupuesto extra
para cada dpto. que
dirige"
Si un director obtiene
un presupuesto extra
nico para todos los
departamentos que
dirige, mejor este
diseo: ni sugiere que
hay presupuesto extra
por dpto., ni se
almacena 1 vez por
dpto"
nombre
desde
Fecha_nac
dep_id
Dirige
Empleados
Dep_nombre presupuesto
Departamentos
presup_extra
nombre
dni
Fecha_nac
desde
Dirigido por
Empleados
Departamentos
Es director
direccion_id
GSyC"
Direcciones
presup_extra
48"
dni
nombre
f_nombre
fecha_nac
Empleados
Plizas
poli_id
dni
Familiares
Cubre
Mal diseo
edad
coste
nombre
f_nombre
fecha_nac
edad
Familiares
Empleados
Compra
Mejor diseo
GSyC"
Beneficia
Plizas
poli_id
coste
50"
Productos
Departamentos
Contrata
Mejor diseo
Proveedores
Productos
necesita
Departamentos
Mal diseo
Puede-suministrar
Proveedor
trabaja-con
51"
52"
53"
GSyC"
54"
55"
Modelos de datos"
Diseo lgico!
Tras el diseo conceptual utilizando ER realizamos ahora el diseo lgico"
Consiste en convertir la descripcin de alto nivel del diagrama ER en un modelo de
datos adecuado al SGBD que usemos"
GSyC"
57"
Nombre!
Email!
Edad!
Nota_media!
123456789A
lag@gmail.com
18
7.8
443666789F
pgg@gmail.com
19
8.0
436375531H
jss@gmail.com
21
7.2
58"
Lenguajes de interrogacin
relacionales"
Interrogacin (query): Pregunta sobre los datos almacenados en una BD: "
Cul es el nombre del alumno cuyo NIF es 443666789F? "
Cuntos alumnos estn matriculados de las asignaturas de nombre IARO y SAT"
Cuntos alumnos tienen menos de un 5.0 en SAT? "
GSyC"
59"
SQL"
Cada SGBD define"
un Lenguaje de Definicin de Datos (DDL) para especificar el
Esquema Conceptual y los Esquemas Externos (vistas) de las BD."
un Lenguaje de Manipulacin de Datos (DML) para que los usuarios
de una BD puedan crear, modificar e interrogar la BD. El lenguaje de
interrogacin es, por lo tanto, parte del DML. "
SQL, Standarized Query Language, pese a su nombre, no es
simplemente un lenguaje de interrogacin, sino que incluye tanto un DDL
como un DML."
Est estandarizado pero cada SGBD (Oracle, PostgreSQL, SQLite,
MySQL) aade su propias extensiones."
GSyC"
60"
Alumnos
nif!
Nombre!
Email!
Edad!
Nota_media!
123456789A
lag@gmail.com
18
7.8
443666789F
pgg@gmail.com
19
8.0
436375531H
jss@gmail.com
21
7.2
nif!
asignatura!
Nota!
123456789A
ISI
5.8
123456789A
Circuitos
10.0
436375531H
Latn
10.0
Matriculados
GSyC"
61"
Destruccin y modificacin de
relaciones"
Destruccin de la relacin, su esquema y sus tuplas:"
DROP TABLE Alumnos;
GSyC"
62"
GSyC"
63"
Interrogacin SQL"
Alumnos
nif!
Nombre!
Email!
Edad!
Nota_media!
123456789A
lag@gmail.com
18
7.8
443666789F
pgg@gmail.com
19
8.0
436375531H
jss@gmail.com
21
7.2
64"
Nombre!
Email!
Edad!
Nota_media!
123456789A
lag@gmail.com
18
7.8
443666789F
pgg@gmail.com
19
8.0
436375531H
jss@gmail.com
21
7.2
nif!
Asignatura!
Nota!
123456789A
ISI
5.8
123456789A
Circuitos
10.0
436375531H
Latn
10.0
Matriculados
A.Nombre!
M.Asignatura!
Circuitos
Latn
Resultado
GSyC"
65"
Restricciones de Integridad
Integrity Constraints (ICs)"
Restricciones de integridad: Condicin que debe cumplirse en cualquier
instancia de la BD"
Ej: restricciones de dominio: el campo X almacena nmeros enteros"
GSyC"
67"
Restricciones de dominio"
Dominio: El conjunto valores permitidos para cada columna (campo/
atributo) de una tabla. "
Cada valor para una columna debe estar entre el rango permitido en su
dominio al definirla. "
Al declarar el dominio de una columna puede darse un valor por defecto
para ella. "
Al declarar el dominio de una columna puede especificarse si se permite
un valor nulo para ella. "
Si se intenta aadir una fila que no cumple todas las restricciones de
dominio para los valores de todos sus campos, la insercin ser
rechazada. "
Con SQL hay dominios predefinidos y pueden definirse nuevos. "
GSyC"
68"
GSyC"
69"
GSyC"
70"
En Rails se utiliza como clave primaria de todas las entidades una clave
surrogada en lugar de la clave natural obtenida del modelo ER. "
La clave surrogada es una columna adicional que se aade automticamente: el
campo id de los modelos que her ActiveRecord "
Se garantiza que es nica y que no se reutiliza"
Pero debemos mantener como clave candidata la clave natural identificada en el
modelo ER, para garantizar las restricciones de integridad identificadas en el
diseo conceptual expresado en el diagrama ER"
En el ejemplo, nombre y fecha_nac por un lado, y nif por otro."
GSyC"
71"
GSyC"
72"
GSyC"
73"
En una misma tabla puede haber varias columnas con claves forneas de
tablas distintas. "
Un clave fornea puede referirse a la clave primaria de la propia tabla."
Ej: empleado supervisa empleado"
GSyC"
74"
GSyC"
75"
GSyC"
76"
77"
78"
GSyC"
79"
GSyC"
80"
As, slo guardamos una nota para cada pareja de asignatura y alumno (SQL y Rails)
CREATE TABLE Matriculados (nif CHAR(10), asignatura CHAR (30), nota FLOAT, PRIMARY KEY (nif,
asignatura));
class Matriculado < ActiveRecord::Base
attr_accessible :nif, :asignatura, :nota
validates_uniqueness_of :nif, :scope => [:asignatura]
end
As, cada alumno slo puede estar matriculado en una asignatura, y recibir slo una nota
para esa asignatura, y en cada asignatura no puede haber un alumno con la misma nota.
Seguro que queremos eso? "
CREATE TABLE Matriculados (nif CHAR(10), asignatura CHAR (30), nota FLOAT, PRIMARY KEY (nif),
UNIQUE (asignatura, nota));
GSyC"
81"
GSyC"
82"
Conversin de un Modelo ER
a un Modelo de datos
Relacional"
No es redundante: podra haber condicin de carrera entre dos transacciones distintas que comprueben la
validacin del modelo. Con el ndice se evitan."
Ejemplo:"
class CreateEmpleados < ActiveRecord::Migration
def self.change
create_table :empleados do |t|
t.string
dni'
t.string
nombre'
t.datetime fecha_nac
end
add_index :empleados, :dni, :unique => true
end
end
GSyC"
84"
GSyC"
85"
Rails:
GSyC"
86"
87"
88"
GSyC"
89"
90"
GSyC"
91"
GSyC"
92"
Rails:
GSyC"
93"
GSyC"
94"
Rails:
GSyC"
95"
96"
GSyC"
97"
Rails:
GSyC"
98"
Relaciones ES-UN"
Alternativa 1: "
Tanto el conjunto de entidades base como los conjuntos de entidades
derivados se trasladan a tablas diferentes."
Las tablas de las entidades derivadas incluyen como campos: "
sus atributos especficos"
los atributos clave de la entidad base son clave primaria y clave fornea en la derivada"
99"
100"
Alternativa 1
Rails:
GSyC"
101"
Alternativa 2
Rails:
GSyC"
102"
GSyC"
103"
fecha_nac
Empleados
coste
Pliza
f_nombre
edad
Familiares
GSyC"
104"
fecha_nac
Empleados
coste
Pliza
f_nombre
edad
Familiares
Rails:
GSyC"
105"
Agregaciones"
Ejemplo 1:"
Una tabla para Supervisa, con los atributos clave de
Empleados y Depende, y el descriptivo de
Supervisa
Las dems entidades y la relacin Depende, se
convierten normalmente"
Ejemplo 2: "
Si Depende no tuviese atributo descriptivo y su
participacin en Supervisa fuese total, podemos
eliminar la tabla de Depende, pues toda instancia de
Depende se puede obtener en las columnas pid y
did de Supervisa
GSyC"
106"
(dni VARCHAR(20),
pid INT,
did INT,
hasta DATE,
PRIMARY KEY (dni,
FOREIGN KEY (dni)
FOREIGN KEY (pid)
FOREIGN KEY (did)
pid, did),
REFERENCES Empleados,
REFERENCES Proyectos,
REFERENCES Departamentos);
Supervisa
hasta
comienzo
desde
ppresupuesto
pid
Proyectos
Depende
GSyC"
did
dnombre
dpresupuesto
Departamentos
107"
(dni VARCHAR(20),
pid INT,
did INT,
hasta DATE,
PRIMARY KEY (dni,
FOREIGN KEY (dni)
FOREIGN KEY (pid)
FOREIGN KEY (did)
pid, did),
REFERENCES Empleados,
REFERENCES Proyectos,
REFERENCES Departamentos);
Supervisa
hasta
comienzo
did
ppresupuesto
pid
Proyectos
Depende
GSyC"
dnombre
dpresupuesto
Departamentos
108"
Empleados
Comprador
Beneficiario
Plizas
GSyC"
GSyC"
poli_id
coste
109"
GSyC"
110"
dni
nombre
f_nombre
fecha_nac
edad
Familiares
Empleados
Comprador
Beneficiario
Plizas
GSyC"
poli_id
coste
111"
GSyC"
112"
Referencias""
Database Management Systems, 3rd edition.
Raghu Ramakrishnan, Johannes Gehrke.
Ed. Mc Graw Hill, 2003. Captulos 1,2,3,5."
Learning SQL. Alan Beaulieu. Ed. OReilly.
2005."
A Guide to Active Record Associations"
http://guides.rubyonrails.org/association_basics.html"
113"