Download Unidad 2 2.1 Creación de base de datos. 2.2 Creación de tablas

Document related concepts

Clave foránea wikipedia , lookup

Transcript
Unidad 2
Lenguaje de Definición de Datos (DDL)
2.1 Creación de base de datos.
2.2 Creación de tablas.
2.2.1 Integridad.
2.2.2 Integridad referencial declarativa.
2.3 Creación de índices
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
1
2.1 Creación de una Base de Datos
Las instrucciones que conoceremos forman parte del
Núcleo de SQL estándar (en realidad son
instrucciones DDL pero es una error histórico decir que
pertenecen a SQL).
Puede verificar que cumplan con el núcleo en la
siguiente liga:
http://developer.mimer.se/validator/parser200x/index.tml
La sintáxis que en estos apuntes se indique en cursiva
es válida para, al menos, MySQL.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
2
2.1 Creación de una Base de Datos
Instale MySQL 5.0 o superior y las GUI Tools
(puede descargarlas de www.mysql.com o de
ac.itdurango.edu.mx/~falanis.
Si lo instala en un equipo compartido, no
establezca contraseña para el administrador
(root), unicamente asegúrese de que en el
futuro haga respaldos de las bases de datos
que estime conveniente para que no pierda
su trabajo.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
3
2.1 Creación de una Base de Datos
Para crear las tablas de su esquema utilice
indistintamente la interfase Línea de Comandos
o las GUI Tools.
Al momento de crear el esquema puede usar
cualquiera de ellos pero es muy importante
que aprenda a utilizar ambos.
Puede usar las instrucciones de las
diapositivas siguientes desde ambas
interfases, pero adicionalmente, las GUI Tools,
cuentan con una interfase mas amigable.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
4
2.1 Creación de una Base de Datos
Es muy importante que en esta etapa, la
Unidad II de este curso, no añada tuplas a
las tablas que aquí creará, recuerde que
estamos en la etapa de planeación de la Base
de Datos.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
5
2.1 Creación de una Base de Datos
create database Itd
Itd es el nombre, supuesto,
que tendrá la Base de Datos
que vamos a crear, los DBMS’s
(o servidores de Bases de
Datos) generalmente pueden
administrar mas de una Base
de Datos (aunque create
database no es un estándar).
use Itd
Hace que la Base de Datos Itd sea el
esquema por omisión (es decir, todas las
instrucciones que escribamos a partir de
aquí, se referirán a la Base de Datos Itd.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
6
2.2 Creación de Tablas
Integridad
El establecimiento de llaves unique (también llamadas
candidatas) para cada tabla, consigue lo que se conoce
como Integridad de Entidad (contribuye a impedir
duplicidad por errores de los usuarios, por ejemplo,
evitar que una persona quede registrada dos o mas
veces en una misma tabla de la Base de Datos).
Mientras mas llaves unique posea una tabla, mayor
certeza de integridad se logrará.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
7
2.2 Creación de Tablas
create table Proveedores
(IdProveedor int auto_increment primary key,
Rfc char(13) unique,
RazonSocial char(50) unique,
Calle char(15),
Orientacion char(10),
NumeroExt numeric(8),
NumeroInt char(6),
Colonia char(15),
Ciudad char(30),
Estado char(25),
CodigoPostal char(5),
DiasCredito numeric(3))
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
8
2.2 Creación de Tablas
El Núcleo del SQL estándar, considera una restricción de
verificación (check constraint) para simular dominios y
contribuir igualmente a la Integridad de Entidad.
create table Proveedores
( IdProveedor …..,
.......
Orientacion char(10),
…………
check (Orientacion in
('Norte','Sur','Oriente','Poniente')) )
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
9
2.2 Creación de Tablas
Si ya existe la tabla y se desea añadir una restricción de
dominio, escriba la siguiente instrucción:
alter table Alumnos
add constraint ValidOrientacion check
(Orientacion in ('Norte', 'Sur', 'Oriente',
'Poniente'))
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
10
2.2 Creación de Tablas
MySQL 5 aunque soporta la restricción check, no la
ejecuta, es decir, no realiza la verificación como se
espera al momento de añadir o modificar tuplas.
Para resolver este problema, estableceremos Integridad
Referencial hacia una tabla que contenga los valores
válidos para ese atributo.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
11
2.2 Creación de Tablas
Integridad Referencial
La definición de una llave primaria
para cada tabla, es indispensable para
establecer la integridad referencial.
Como
sabemos
la
integridad
referencial es importantísima para
evitar
que
haya
información
incompleta en la Base de Datos.
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
12
2.2 Creación de Tablas
Integridad Referencial
Tabla Alumnos
IdAlumno
1
2
3
Control
48040001
76040155
76040161
Nombre
Rico Mc Pato
Minnie Mouse
Mickey Mouse
FechaNac
15/11/1900
02/06/1928
01/04/1928
Sexo
Masculino
Femenino
Masculino
En la tabla PagosAlumnos
IdAlumno, es Llave Foránea
create table
PagosAlumnos(
IdPagosAlum IdAlumno Concepto Fecha
Importe
IdPagoAlumno int
1
1
Inscripción 02/08/1948
1.25
auto_increment
2
1
Inscripción 10/08/1949
1.25
primary key,
3
1
Constancia 05/12/1949
0.10
IdAlumno int
4
1
Inscripción 11/08/1950
1.25
references Alumnos
5
2
Inscripción 15/08/1976
50.00
on delete restrict
6
2
Inscripción 05/08/1977 100.00
on update restrict,
7
3
Inscripción 15/08/1976
50.00
concepto char(15),
8
3
Inscripción 15/08/1976
50.00
fecha date,
9
3
Inscripción 03/08/1977 100.00
importe numeric(10,2),
10
3
Constancia 22/10/1977
2.00
check …..
......
Todas las tablas deben tener llaves unique
¿cuál será, al menos una, llave unique de la
tabla PagosAlumnos?
Tabla PagosAlumnos
2.2 Creación de Tablas
Integridad Referencial
La sintáxis estándar indicada en las diapositivas
anteriores es soportada por MySQL 5.0 pero no
implementada.
En las diapositivas siguientes se muestra como hacerlo
con MySQL 5:
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
14
2.2 Creación de Tablas
Integridad Referencial
(como reemplazo para Check)
Tabla Alumnos
IdAlumno
1
2
3
Control
48040001
76040155
76040161
Nombre
Rico Mc Pato
Minnie Mouse
Mickey Mouse
FechaNac
15/11/1900
02/06/1928
01/04/1928
Sexo
Masculino
Femenino
Masculino
Tabla DominioSexo
Sexo
Femenino
Masculino
create table Alumnos(
IdAlumno int auto_increment primary key,
sexo char(10), ……, ………,
foreign key (sexo) references DominioSexo(sexo)
on delete restrict
on update cascade, ……. )
Taller Bases de Datos
ISC
Ing. Felipe Alanís González -ITD-
15
2.2 Creación de Tablas
Integridad Referencial
Tabla Alumnos
IdAlumno
1
2
3
Control
48040001
76040155
76040161
Nombre
Rico Mc Pato
Minnie Mouse
Mickey Mouse
FechaNac
15/11/1900
02/06/1928
01/04/1928
Sexo
Masculino
Femenino
Masculino
Tabla PagosAlumnos
IdPagosAlum IdAlumno
1
1
2
1
3
1
4
1
5
2
6
2
7
3
8
3
9
3
10
3
Concepto
Inscripción
Inscripción
Constancia
Inscripción
Inscripción
Inscripción
Inscripción
Inscripción
Inscripción
Constancia
Fecha
02/08/1948
10/08/1949
05/12/1949
11/08/1950
15/08/1976
05/08/1977
15/08/1976
15/08/1976
03/08/1977
22/10/1977
Importe
1.25
1.25
0.10
1.25
50.00
100.00
50.00
50.00
100.00
2.00
Compare con el
caso de la
página anterior,
las diferencias
en on delete yon
update
create table PagosAlumnos( IdPagoAlumno int auto_increment
primary key, IdAlumno int, Concepto char(15), fecha date, ……,
foreign key (IdAlumno) references Alumnos(IdAlulmno)
on delete restrict
on update restrict, ….
Taller Bases de Datos ISC
Ing. Felipe Alanís González -ITD-
16
2.3 Creación de Indices
Cuando establecemos llaves primarias y unique, se crean tablas
de índices para poder hacer las verificaciones correspondientes,
sin embargo, adicionalmente se pueden crear otras tablas de
índices para que ciertas consultas tomen menos tiempo de
ejecución.
create table PagosAlumnos
(IdPagoAlumno int(10) auto_increment primary key,
IdAlumno int, Concepto char(15), Fecha date,
importe numeric(10,2),
foreign key (IdAlumno) references Alumnos(IdAlulmno),
on delete restrict on update restrict,
index (Concepto),
index(Fecha) )
Taller Bases de Datos ISC
Ing. Felipe Alanís González -ITD-
17