Bases de Datos Relacionales. Conceptos y

Anuncio
Bases de Datos Relacionales.
Conceptos y consideraciones para su uso.
Eduardo Mora
Departamento de Matemática Aplicada y Ciencias de la Computación
Universidad de Cantabria
Bases de Datos. Finalidad
Base de Datos:
Datos colección organizada de datos, relativa a un problema concreto,
que puede ser compartida por un conjunto de usuarios/aplicaciones.
ALMACENAR
CONTROLAR
CONSULTAR
INFORMACIÓN
ACTUALIZAR
DATOS
RELACIONES
RESTRICCIONES
Sistema Gestor de Bases de Datos:
Datos
programa o conjunto de programas
que sirve para mantener bases de datos
y responder consultas sobre ellas.
Niveles de abstracción
Programa 1
Programa 2
Programa n
Vista A
Sistema
Gestor de
Bases de Datos
(SGBD)
Nivel Lógico
Nivel Interno
Bases de Datos. Justificación
• Flexibilidad de adaptación a cada problema.
• Optimización en la gestión de la información.
• Independencia física y lógica de los datos.
• Control de la integridad de los datos.
• Garantía sobre la consistencia de la información.
• Facilidad de acceso concurrente.
• Protección ante fallos del sistema.
• Seguridad ante accesos restringidos.
Modelo Relacional I
Personal
NOMBRE PROFESION LOCALIDAD
Pedro
profesor
Santander
Luis
estudiante
Santander
María
estudiante
Las Palmas
Ana
estudiante
Madrid
Los datos se conciben agrupados en forma de tablas
Cada fila establece una relación entre un conjunto
de valores
Operadores generan nuevas tablas
SELECT NOMBRE, LOCALIDAD FROM Personal
WHERE PROFESION = ”estudiante”
NOMBRE LOCALIDAD
Luis
Santander
María
Las Palmas
Ana
Madrid
Modelo Relacional II
BANCOS
ENTIDAD
NOMBRE
0893
Santander
0059
Popular
3428
Bilbao Vizcaya
5632
Banesto
• Toda tabla tiene una columna o conjunto de columnas
que permiten identificar cada una de sus filas; éstas
componen la llamada clave principal de la tabla.
• Los valores de la clave principal no se pueden repetir.
OFICINAS
ENTIDAD
CODIGO_OFICINA
POBLACION
DIRECCION
• Unas tablas se refieren a otras
mediante vínculos de tipo
jerárquico.
0893
001
Madrid
Castellana, 73
3428
022
Las Palmas
Triana, 21
0893
022
Gáldar
R. Moreno, 3
• Este vínculo de referencia
entre dos tablas se establece
mediante columnas de idénticos
tipos de datos en las dos tablas.
5632
213
Oviedo
Uría, 43
0893
300
Barcelona
Diagonal, 435
•La referencia de una fila de una tabla a otra de la otra
tabla se produce cuando ambas tienen el mismo valor.
Tipos de datos
Tipos de datos
Cadena de caracteres (character string).
Cada carácter requiere un byte para su almacenamiento.
Numérico (numeric).
Enteros: Cortos (ocupan 2 bytes).
Largos (ocupan 4 bytes).
Decimales: definidos por su precisión y escala.
Notación científica: Simple precisión (ocupan 4 bytes).
Doble precisión (ocupan 8 bytes).
Fecha y hora (datetime).
Diferentes opciones según nivel de precisión.
Objeto grande (large object).
Binary large object.
Character large object.
Otros.
Índices
PEDIDOS
Fecha_ped Num_ped
5-7-2002
10-8-2002
11-8-2002
...
ARTÍCULOS
LÍNEAS_DE_PEDIDO
742
849
860
...
Num_ped Num_lin Cod_art
Versión Unidades
742
742
742
849
...
2002
2000
97
2002
...
1
2
3
1
...
ACC
EXC
WRD
ACC
...
50
30
4
30
...
Índice de unicidad
Cod_art
Versión Descripción
WRD
ACC
EXC
ACC
...
97
97
2000
2002
...
Word-97
Access-97
Excel-2000
Acces-2002
...
ARTÍCULOS
Cod_art
Versión
Cod_art
Versión Descripción
ACC
ACC
97
2002
WRD
ACC
97
97
Word-97
Access-97
EXC
WRD
...
2000
97
...
EXC
ACC
...
2000
2002
...
Excel-2000
Acces-2002
...
Índice con repeticiones
LÍNEAS_DE_PEDIDO
Cod_art
Versión
Num_ped
ACC
2002
ACC
2002
742
742
EXC
WRD
...
2000
97
...
742
849
...
Num_lin
Cod_art
Versión Unidades
1
2
3
ACC
EXC
WRD
2002
2000
97
1
...
ACC
...
2002
...
50
30
4
30
...
El problema del diseño I
Ejemplo aclaratorio
PROPIETARIOS:
DNI
NOMBRE
DIRECCION
LOCALES: CODIGO
UBICACION
SUPERFICIE
Primera alternativa
Locales_propietarios
CODIGO UBICACION SUPERFICIE DNI
NOMBRE DIRECCION
Problemas del diseño
Repetición de información
Posibilidad de contradicciones en los datos
Problemas en inserciones
Pérdida de información al borrar
El problema del diseño II
Segunda alternativa
Propietarios
DNI
NOMBRE DIRECCION
Locales
CODIGO UBICACION SUPERFICIE
Problemas del diseño
Pérdida de dependencias funcionales
El problema del diseño III
Tercera alternativa
Propietarios
DNI
NOMBRE DIRECCION
Locales
DNI
CODIGO UBICACION SUPERFICIE
Problemas del diseño
Sólo un propietario para cada local
El problema del diseño IV
La referencia entre tablas siempre es una relación “de 1 a n” o “de n a 1”
Tercera
Cuartaalternativa
alternativa
Un propietario
Propietariospuede tener varios locales (n) mientras
Propietarios
que
un
local sólo puede ser de un propietario (1).
DNI NOMBRE DIRECCION
DNI
NOMBRE DIRECCION
Propiedad
DNI
CODIGO
Locales
DNI
Locales
CODIGO
UBICACION
SUPERFICIE
CODIGO
UBICACION
SUPERFICIE
Si se desea que un propietario pueda tener varios locales y, al mismo tiempo, que un
local pueda se de varios propietarios, la relación es simétrica, es “de n a n” y no
puede ser resuelta con sólo dos tablas. Para conseguirlo, es necesario introducir una
tabla auxiliar que tenga relaciones de “de n a 1” con las de propietarios y locales.
El lenguaje SQL I
SQL (Structured Query Language)
Lenguaje declarativo de acceso a los datos.
Estándar para las bases de datos relacionales.
Incluye la capacidad de actuar tanto sobre la estructura de la base
de datos como sobre sus propios datos.
Desarrollado en el San José Research Center (IBM)
Fue utilizado por primera vez en 1970.
En 1986: ANSI (American National Standards Institute) e
ISO (International Standards Organization)
publicaron las normas SQL/ANSI y SQL-86.
Ésta tuvo dos actualizaciones: SQL-89 y SQL-92
En la actualidad, se trabaja con el SQL:1999 (parte del SQL3)
y se está elaborando el SQL4
El lenguaje SQL II
Definición de datos. Ejemplo:
CREATE DATABASE GESTION;
CREATE TABLE PROPIETARIOS
(DNI
CHAR(10) NOT NULL CONSTRAINT pk_prop PRIMARY KEY,
NOMBRE
CHAR(25) NOT NULL,
DIRECCION CHAR(30));
CREATE TABLE LOCALES
(CODIGO
DNI
CHAR(5) NOT NULL CONSTRAINT pk_loc PRIMARY KEY,
CHAR(10) NOT NULL,
UBICACION CHAR(30) NOT NULL,
SUPERFICIE DEC(8,2) NOT NULL,
CONSTRAINT fk_loc FOREIGN KEY ( DNI ) REFERENCES PROPIETARIOS ( DNI ));
PROPIETARIOS
DNI
NOMBRE DIRECCION
LOCALES
CODIGO DNI
UBICACION SUPERFICIE
El lenguaje SQL III
Manipulación de datos. Ejemplos:
Insertar una nueva fila en la tabla PROPIETARIOS
PROPIETARIOS
INSERT INTO PROPIETARIOS (DNI, NOMBRE, DIRECCION)
VALUES (‘13234567R‘, ‘Sanz, Luis‘, ‘Gran Vía 26‘)
DNI
NOMBRE
DIRECCION
LOCALES
CODIGO
DNI
UBICACION
SUPERFICIE
Encontrar los locales con superficie mayor que 200 y su propietario
SELECT CODIGO, UBICACION, NOMBRE, DIRECCION
FROM LOCALES, PROPIETARIOS
WHERE LOCALES.DNI = PROPIETARIOS.DNI AND
SUPERFICIE > 200
Resultado
Modificar la dirección del propietario cuyo D.N.I. es 20333444F
CODIGO
UBICACION
NOMBRE
DIRECCION
PROPIETARIOS
L-31UPDATE
Alta 236
Sanz, Luis
Gran Vía 26
L-234
Isabel II 38
L-9
SET Bailén
DIRECCION
=‘Alta 87’
46
Laso, Ana
WHERE DNI = ‘20333444F‘
L-302
Cuesta 2
Sanz , Luis
Becedo 10
Fe, Pedro
Gran Vía 26
Borrar el local de código L-234
DELETE FROM LOCALES
WHERE CODIGO = ‘L-234‘
Descargar