Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Propsitos
Entender la teora fundamental de Bases de datos y del modelamiento de
datos
Distinguir una relacin normal de una anormal y saber normalizarla
Comprender el significado e interpretacin de un modelo E/R (MER)
Enunciar y explicar las reglas de integridad de las bases de datos
Saber investigar, entender, deducir y plantear un MER
Competencias:
Al concluir el curso el estudiante:
Comprender la teora general de Bases de datos
Comprender el significado de una relacin y del modelo relacional
Disear modelos de datos reconociendo relaciones normales y sus
atributos, as como sus interrelaciones y semntica
Reconocer la integridad de una Base de datos y aplicar sus reglas.
Plantear modelos de datos que satisfagan las expectativas derivadas de los
problemas encontrados en la realidad.
2
2.
3.
5.
Clases de DBMS
5.1 Enfoque jerrquico
5.2 Enfoque en red
5.3 Enfoque relacional
5
6.
Modelo relacional
6.1 Nivel conceptual
6.2 Nivel externo o vistas
6.3 Nivel interno
6.4 El lenguaje de datos
6.5 Ejemplo utilizando el lenguaje de datos SQL.
Textos
Bibliografa
James R. Groff & Paul N. Weinberg; SQL Manual de referencia,
McGrawHill, ISBN: 0-07-222559-9
C. J. Date; Introduccin a los sistemas de Bases de datos, PrenticeHall,
ISBN: 968-444-419-2, sptima edicin
Abraham Silberschatz & Henry Korth; Fundamentos de Bases de datos,
McGrawHill, ISBN: 0-07-295886-3, quinta edicin
Ramakrishnan Raghu & Gehrke Johannes; Sistemas de gestin de Bases
de datos, McGrawHill, ISBN: 978-84-481-5638-1, tercera edicin
Ramez Elmasri & Shamkant B. Navathe; Fundamentos de sistemas de
Bases de datos, Pearson Addison Wesley, ISBN: 978-84-7829-085-7,
quinta edicin
Gillenson Mark L.; Administracin de Bases de datos, Limusa Wiley,
ISBN-13: 978-968-18-6595-2
Mario G. Piattini & otros; Tecnologa y diseo de Bases de datos;
Alfaomega-Rama, ISBN: 978-970-15-1268-5
Prez Csar; Oracle PL/SQL, Alfaomega-Rama, ISBN: 978-970-151374-3
Rodriguez Almeida Miguel; Bases de datos, McGrawHill, ISBN: 847615-807-6
10
Funciones de un DBMS
a.
b.
c.
d.
e.
f.
g.
h.
i.
3
13
14
Esquema
externo
Nivel conceptual
Vista del diseador del sistema
Nivel interno
Vista del sistema operativo
Esquema
externo
Esquema
externo
Esquema
conceptual
Esquema
interno
15
16
DBMS
FS
Disco
Driver
bloques
17
Apuntadores
Hay tres clases de apuntadores:
a)
a)
b)
18
Entidad 1
Entidad 2
Entidad 3
Entidad 4
Entidad 5
Entidad 6
Modelo conceptual
20
26
Registro inicial
Tiempo
t=0
T1
Lea cuentas
Lea cuentas
RET = RET + 50
Regrabe cuentas
CON = CON + 100
Regrabe cuentas
Registro final
t=n
29
30
33
39
40
41
S
S#
SP
snombre
edo
ciudad
S#
P#
S1 Salazar
20
Londres
S1
P1
300
S2 Jaimes
10
Pars
S1
P2
200
S3 Bernal
30
Pars
S1
P3
400
S4 Corona
20
Londres
S1
P4
200
S5 Aldana
30
Atenas
S1
P5
100
S1
P6
100
S2
P1
300
S2
P2
400
S3
P2
200
S4
P2
200
S4
P4
300
S4
P5
400
P
P#
pnombre
color
peso
ciudad
P1
Tuerca
Rojo
12
Londres
P2
Perno
Verde
17
Pars
P3
Birlo
Azul
17
Roma
P4
Birlo
Rojo
14
Londres
P5
Leva
Azul
12
Pars
P6
Engrane
Rojo
19
Londres
cant
42
43
create table S
(s#
char(2)
not null,
snombre
char(10)
not null,
edo
smallint not null,
ciudad
char(10)
not null,
primary key (s#));
create table P
(p#
char(2)
not null,
pnombre
char(10)
not null,
color
char(10)
not null,
peso
smallint not null,
ciudad char(10)
not null,
primary key (p#));
create table SP
(s#
char(2)
not null,
p#
char(2)
not null,
cant
integer,
primary key (s#, p#),
foreign key (s#) references S,
foreign key (p#) references P);
44
45
6.3 Nivel interno: ndices. Con las sentencias SQL create index
y drop index se crea y se destruye ndices, pero stas son las
nicas sentencias que los manejan.
La sintaxis de la sentencia create index es:
create [unique] index nombre-ndice
on nombre-tabla (columna [orden] [,columna [orden]])
[cluster]
51
54
U
s#
snombre
s1 Salazar
s2 Jaimes
edo
20
10
ciudad
cant p# pnombre
color
peso
12
ciudad
Londres 300
p1 tuerca
rojo
200
p2 perno
verde 17
Pars
400
p3 birlo
azul
17
Roma
200
p4 birlo
rojo
14
Londres
100
p5 leva
azul
12
Pars
100
p6 engrane
rojo
19
Londres
300
p1 tuerca
rojo
12
Londres
400
p2 perno
verde 17
Pars
Pars
Londres
s3 Bernal
30
Pars
200
p2 perno
verde 17
Pars
s4 Corona
20
Londres 200
p2 perno
verde 17
Pars
300
p4 birlo
rojo
14
Londres
400
p5 leva
azul
12
Pars
55
56
Una relacin est en primera forma normal cuando el valor de sus atributos
en cada tupla es atmico.
En otras palabras, en la interseccin de cada tupla con cada
columna, siempre hay exactamente un valor, nunca un conjunto
de valores.
Entonces, para obtener la 1NF es necesario determinar valores
nicos o atmicos en cada interseccin. As, la relacin U queda
transformada en la relacin 1NF que se muestra en la siguiente
diapositiva.
Para las explicaciones subsiguientes, se ha incluido el atributo
fecha, y el estado de s3 se ha cambiado de 30 a 10. Adems, es
necesario repasar los conceptos de claves y dependencia
funcionales.
57
1NF
s#
snombre
edo
ciudad
cant fecha
p#
pnombre
color
peso
s1
Salazar
20
Londres 300
s1
Salazar
20
s1
Salazar
s1
ciudad
10/5
p1
tuerca
rojo
12
Londres
Londres 200
10/8
p2
perno
verde
17
Pars
20
Londres 400
10/12 p3
birlo
azul
17
Roma
Salazar
20
Londres 200
11/9
p4
birlo
rojo
14
Londres
s1
Salazar
20
Londres 100
11/15 p5
leva
azul
12
Pars
s1
Salazar
20
Londres 100
11/18 p6
engrane
rojo
19
Londres
s2
Jaimes
10
Pars
300
10/7
p1
tuerca
rojo
12
Londres
s2
Jaimes
10
Pars
400
10/10 p2
perno
verde
17
Pars
s3
Bernal
10
Pars
200
10/2
p2
perno
verde
17
Pars
s4
Corona
20
Londres 200
11/3
p2
perno
verde
17
Pars
s4
Corona
20
Londres 300
11/8
p4
birlo
rojo
14
Londres
s4
Corona
20
Londres 400
11/10 p5
leva
azul
12
Pars
58
s#
edo
ciudad
cant
p#
6
7
fecha
pnombre
color
peso
ciudad
62
67
S
S#
SP
snombre
edo
ciudad
S#
P#
fecha
cant
S1 Salazar
20 Londres
S1
P1
10/5
300
S2 Jaimes
10 Pars
S1
P2
10/8
200
S3 Bernal
10 Pars
S1
P3
10/12
400
S4 Corona
20 Londres
S1
P4
11/9
200
S5 Aldana
30 Atenas
S1
P5
11/15
100
S1
P6
11/18
100
S2
P1
10/7
300
S2
P2
10/10
400
S3
P2
10/2
200
S4
P2
11/3
200
S4
P4
11/8
300
S4
P5
11/10
400
P
P#
pnombre
color
peso
ciudad
P1
Tuerca
Rojo
12
Londres
P2
Perno
Verde
17
Pars
P3
Birlo
Azul
17
Roma
P4
Birlo
Rojo
14
Londres
P5
Leva
Azul
12
Pars
P6
Engrane
Rojo
19
Londres
68
snombre
2
s#
S
s#
p#
fecha
cant
edo
ciudad
p#
6
7
8
pnombre
color
peso
ciudad
69
S
S#
C
snombre
ciudad
ciudad
edo
S1
Salazar
Londres
Atenas
30
S2
Jaimes
Pars
Londres
20
S3
Bernal
Pars
Pars
10
S4
Corona
Londres
Roma
50
S5
Aldana
Atenas
snombre
s#
4
ciudad
C
ciudad
edo
74
ciudad
snombre
78
n# cc
071
n1
10
3.7
071
n1
11
3.9
071
n1
12
3.5
072
n2
10
3.8
072
n2
13
3.3
80
ce
cc
n#
Diagrama DF de E en 3NF pero no en BCNF
ce
ce
n#
cc
Diagrama de E en BCNF
82
CPT
curso
profesor
texto
Fsica
Rosas
Mecnica
ptica
Ramos
Mecnica
ptica
Matemticas
Rosas
Mecnica
Vectores
Funciones
84
profesor
texto
Fsica
Rosas
Mecnica
Fsica
Rosas
ptica
Fsica
Ramos
Mecnica
Fsica
Ramos
ptica
Matemticas
Rosas
Mecnica
Matemticas
Rosas
Vectores
Matemticas
Rosas
Funciones
85
CPT.curso CPT.texto
86
Profesor
Curso
Texto
Fsica
Rosas
Fsica
Mecnica
Fsica
Ramos
Fsica
ptica
Matemticas
Rosas
Matemticas
Mecnica
Matemticas
Vectores
Matemticas Funciones
88
89
90
91
92
93
94
95
97
98
Entidad 1
Entidad 2
Entidad 1
Entidad 1
vnculo
Entidad 2
Entidad 2
entidad n
vnculo
grado n-ario
99
director
100
pedidos
productos
101
Muchas a muchas a muchas (grado tres), etc. Es cuando a cada tupla de una
entidad 1 le corresponde varias tuplas de una entidad 2 y varias tuplas de una
entidad 3, y a cada tupla de la entidad 2 le corresponde varias tuplas de la
entidad 1 y varias tuplas de la entidad 3, y a cada tupla de la entidad 3 le
corresponde varias tuplas de la entidad 1 y varias tuplas de la entidad 2.
L:M:N
clientes
agencias
productos
Trabaja en
oficinas
repventas
Es dirigido
Dirigida por
Es atendido
por
Tomado por
clientes
Es hecho por
pedidos
solicita
productos
104
Trabaja en
oficinas
repventas
Es dirigido
Dirigida por
Es atendido
por
clientes
pedidos
productos
105
oficinas
repventas
Es dirigido
Dirigida por
Es atendido
por
clientes
pedidos
productos
106
(1,N)
(1,1)
1:N
(1,N)
hecho por
Redundante (?)
(1,1)
Es atendido
por
pedidos
repventas
(1,1)
(1,N)
Tomado
por
1:N
Redundante (?)
1:N
clientes
(1,N)
(1,1)
1:N
hecho por
No redundante
(1,1)
Es atendido
por
(0,N)
pedidos
repventas
(1,1)
(1,N)
Tomado
por
1:N
No redundante
107
1:1
(1,1)
(0,1)
(1,1)
1:1
(1,1)
S
S
(0,1)
1:1
SP
(0,1)
109
M:1
(1,*)
(1,1)
S
M:1
SP
(0,1)
(1,*)
S
S
(0,*)
M:1
(0,1)
SP
S
(0,*)
M:1
P
(1,1)
110
(1,M)
M:N
SP
(1,N)
P
S
S
(0,M)
M:N
SP
(1,M)
P
S
S
(0,M)
M:N
SP
(0,M)
P
111
L:M:N
SPC
P
C
C
112
Trabaja en
(1,1)
(0,1)
(1,N)
oficinas
vendedores
(0,N)
(0,1)
Es dirigido
(0,N)
Dirigida por
Es atendido
por
Tomado por
(1,N)
(1,N)
(1,1)
clientes
Es hecho por
(1,N)
pedidos
(0,N)
solicita
(1,N)
productos
113
oficinas
vendedores
lderes
atendido por
Tomado por
clientes
pedidos
directores
solicita
productos
114
isa
repventas
clientes
115
De esta manera, con solo indicar que is a class al crear la tabla personas, y
que is a persona al crear tanto la tabla vendedores como la tabla clientes, estas
tablas (vendedores y clientes) heredaran de la tabla personas todos sus atributos
declarados (como la cdula, los nombres, los apellidos, el telfono, el celular, la
direccin, etc. etc.) sin necesidad de declararlos nuevamente como atributos en
las tablas vendedores y clientes.
Lo anterior se podra rudimentariamente implementar, si el motor no reconoce
herencia, mediante claves forneas en las tablas vendedores y clientes haciendo
referencia a personas.
Para ver la implementacin de la agregacin, analcese el caso de proyectos
en una empresa, desarrollados por diferentes departamentos y en donde cada
departamento puede estar desarrollando ms de un proyecto.
funcionarios
controla
proyectos
desarrolla
!?
departamentos
117
funcionarios
controla
proyectos
desarrolla
departamentos
118
controla
Cedula
Proy#
Dep#
Desde
Hasta
Presupuesto
proyectos
Proy#
Nombre
Valor
desarrolla
Proy#
Dep#
Inicio
departamentos
Dep#
Nombre
Telefono
120
121
122
Taller 1.
123
124
125
126
127
carrera
empleado
pertenece
trabajador
salones
profesor
pensum
estudia
estudiante
Ha cursado
materias
requisito
cursos
13. Modelo semntico.
128
carrera
saln
profesor
currcula
pensum
estudiante
materias
requisitos
Ha cursado
cursos
129
Pensum
Codi_car
Nomb_car
Cred_car
Codi_car
Codi_mat
Currcula
Estudiante
Codi_est
Nomb_est
Cedu_est
Dire_est
Tele_est
Codi_est
Codi_car
Fecha_ini
Prom_est
Cred_apr
Veces_con
Fecha_con
Profesor
Cursos
Codi_pro
Cedu_pro
Dedi_pro
Cate_pro
Codi_car
Codi_mat
Codi_gru
Codi_pro
Codi_est
Codi_hor
Codi_dia
Codi_sal
Notas
Materias
Codi_mat
Codi_car
Nomb_mat
Cred_mat
Requisitos
Codi_req
Codi_mat
Codi_est
Codi_car
Codi_mat
Nota_mat
Fecha_not
Llave primaria
Llave fornea
Parte de ambas
130
131
De las ventas hay que registrar: el libro vendido, el cliente, la fecha de la venta, el
valor de la venta, y los puntos ganados (los cuales sern calculados con cierto
criterio al mismo instante de cada venta).
1.
2.
3.
Proponga y especifique usted los atributos y claves que debe contener cada
tabla de modo que todas las relaciones sean normales hasta BCNF.
4.
132
Que el cdigo del estudiante sea de diez caracteres y que no pueda ser
ignorado, o sea, char (10) not null.
Que las notas de los estudiantes sean reales positivos de una cifra entera y
otra decimal.
134
Que el mes sea uno de los valores alfanumricos 01, 02, 03, 04,
05, 06, 07, 08, 09, 10, 11 o 12.
Etc.
136
cursos
profesor
escuela
137
Cada flecha significa que existe una clave fornea en la entidad de la cual
sale la flecha, que hace referencia a la clave primaria de la entidad a la
cual apunta la flecha.
A diferencia de una clave primaria, una clave fornea si puede tomar
valores nulos si la cardinalidad expresada en las reglas del negocio
consideran la opcionalidad.
Pero si el valor de una clave fornea es no nulo, debe ser idntico al valor
de la clave primaria de alguna tupla en la entidad referida.
La entidad referida y la referente pueden llegar a ser la misma entidad, y
entonces se le llama una entidad autorreferencial. Este es el caso de los
representantes y sus directores para la empresa distribuidora de pedidos.
A veces, la clave fornea puede simultneamente componer la clave
primaria en la relacin que la contiene. Por ejemplo, en la relacin SP, s# y
p# son ambas claves forneas y simultneamente componen la clave
primaria (s#, p#).
Pero a menudo, la clave fornea es distinta de la clave primaria, como en el
caso de la agregacin de atrs con la relacin desarrolla en donde la
clave primaria fue Desa#, y las claves forneas Dep# y Proy#.
138
Sean las relaciones R1, R2, , Rn-1, Rn, tal que existe una restriccin
referencial de R1 a R2, otra de R2 a R3, y otra de Rn-1 a Rn
produciendo el diagrama referencial: R1R2 R3 Rn-1 Rn.
La sucesin de entidades y flechas desde R1 hasta Rn representa un camino
o ruta referencial de R1 a Rn. En un diagrama referencial puede haber
muchas rutas referenciales en las que las claves forneas deben concordar
con las claves primarias. Entonces, la regla 2 dice:
Regla 2: Una Base de datos no puede contener valores de clave fornea sin
concordancia.
139
Pero quin debe tener cuidado al realizar operaciones con las claves
forneas? Lo ideal es que el control est a cargo del DBMS y no del sujeto
programador, aunque ste debe dar al DBMS las indicaciones adecuadas.
As, el DBMS debera entender por si solo, que al cancelar una cuenta
corriente, por ejemplo, los cheques girados posteriormente buscando ser
insertados, deben ser rechazados. O que si un cliente cancela su deuda
total, el DBMS debe eliminar (delete) automticamente y en cascada todas
las facturas pendientes de dicho cliente.
140
Por ejemplo Insertando una tupla, puede aceptar nulos su clave fornea?
Esto se sabra revisando la cardinalidad y los valores posibles para las
claves forneas.
Y Qu debe suceder si hay intento de eliminar una tupla referida por una
clave fornea? Al analizar este caso, hay tres posibilidades de eliminacin:
141
En donde el efecto puede ser no action o sea restricted, cascades o set null.
142
Por ejemplo:
create table facturas
(factura#
char(5) not null,
fecha
date not null,
valor
number(9) not null,
cedula#
char(10) not null,
primary key factura#,
foreign key (cedula#) references clientes
on deletes cascades
on update cascades);
Commit;
145
Cursos (C)
cod_c total_matriculas total_creditos
nombre_e
146