IntroduccionBDRelacionales

11
1 Introducción a las Bases de Datos Relacionales Resumen acerca del Modelo Relacional Una base de datos relacional es una base de datos que es percibida por el usuario como una colección de relaciones o de tablas de dos dimensiones. Las tablas de bases de datos relacionales son sencillas pero disciplinadas Una base de datos relacional debe tener integridad de datos, es decir, sus datos deben ser precisos y consistentes. El Instituto Nacional Americano de Estándares ANSI ha establecido a SQL como el lenguaje estándar para operar sobre bases de datos relacionales. Una base de datos relacional puede soportar un conjunto completo de operaciones relacionales. Las operaciones relacionales manipulan conjuntos de valores de datos. Las tablas pueden ser utilizadas en la creación de otras tablas. Las operaciones relacionales pueden ser anidadas. Una llave primaria (PK) es una columna o grupo de columnas que identifican de manera única a cada fila en una tabla. Cada tabla debe tener una llave primaria y una llave primaria debe ser única. El valor de una llave primaria generalmente no se puede cambiar. Una llave primaria que consta de múltiples columnas se lama llave primaria compuesta. Las columnas de una llave primaria compuesta debe ser únicas en combinación. Las columnas pueden tener duplicados en forma individual, pero en combinación no se permiten duplicados. Ninguna parte de la llave primaria puede ser nula. Una tabla puede tener más de una columna o combinación de columnas que pueden servir como la llave primaria de la tabla. Cada una de estas es llamada llave candidata o alterna. Todas las llaves alternas deben ser únicas y no nulas. Una llave foránea es una columna o combinación de columnas en una tabla que se refieren a una llave primaria en otra tabla o en la misma tabla. Las llaves foráneas se utilizan para combinar tablas en consultas. Sólo si una llave foránea es parte de una llave primaria no puede ser nula. Una llave foránea puede ser repetida y nula. Un dato es inconsistente si existen múltiples copias de un registro y no todas las copias han sido actualizadas. Una base de datos inconsistente puede proveer información incorrecta o contradictoria a los usuarios. Las reglas del negocio también pueden determinar el estado correcto de una base de datos. Estas reglas de negocio son llamadas restricciones de integridad de datos definidas por el usuario y pueden incluir múltiples columnas y tablas. Diseño inicial de la base de datos relacional Mapa de Instancias Consideraciones de nomenclatura: a. Los tipos válidos de llaves con PK para una columna llave primaria, y FK para la columna llave foránea. b. Usar sufijos para distinguir entre múltiples columnas FK en una tabla, por ejemplo, FK1 y FK2. Etiquetar múltiples columnas en el mismo sufijo.

description

Unprg

Transcript of IntroduccionBDRelacionales

  • 1

    Introduccin a las Bases de Datos Relacionales Resumen acerca del Modelo Relacional

    Una base de datos relacional es una base de datos que es percibida por el usuario como una coleccin de relaciones o de tablas de dos dimensiones.

    Las tablas de bases de datos relacionales son sencillas pero disciplinadas Una base de datos relacional debe tener integridad de datos, es decir, sus datos deben ser

    precisos y consistentes. El Instituto Nacional Americano de Estndares ANSI ha establecido a SQL como el lenguaje

    estndar para operar sobre bases de datos relacionales. Una base de datos relacional puede soportar un conjunto completo de operaciones relacionales. Las operaciones relacionales manipulan conjuntos de valores de datos. Las tablas pueden ser utilizadas en la creacin de otras tablas. Las operaciones relacionales pueden ser anidadas. Una llave primaria (PK) es una columna o grupo de columnas que identifican de manera nica a

    cada fila en una tabla. Cada tabla debe tener una llave primaria y una llave primaria debe ser nica. El valor de una llave primaria generalmente no se puede cambiar. Una llave primaria que consta de mltiples columnas se lama llave primaria compuesta. Las columnas de una llave primaria compuesta debe ser nicas en combinacin. Las columnas

    pueden tener duplicados en forma individual, pero en combinacin no se permiten duplicados. Ninguna parte de la llave primaria puede ser nula. Una tabla puede tener ms de una columna o combinacin de columnas que pueden servir como

    la llave primaria de la tabla. Cada una de estas es llamada llave candidata o alterna. Todas las llaves alternas deben ser nicas y no nulas. Una llave fornea es una columna o combinacin de columnas en una tabla que se refieren a una

    llave primaria en otra tabla o en la misma tabla. Las llaves forneas se utilizan para combinar tablas en consultas. Slo si una llave fornea es parte

    de una llave primaria no puede ser nula. Una llave fornea puede ser repetida y nula. Un dato es inconsistente si existen mltiples copias de un registro y no todas las copias han sido

    actualizadas. Una base de datos inconsistente puede proveer informacin incorrecta o contradictoria a los usuarios.

    Las reglas del negocio tambin pueden determinar el estado correcto de una base de datos. Estas reglas de negocio son llamadas restricciones de integridad de datos definidas por el usuario y pueden incluir mltiples columnas y tablas.

    Diseo inicial de la base de datos relacional

    Mapa de Instancias Consideraciones de nomenclatura: a. Los tipos vlidos de llaves con PK para una columna llave primaria, y FK para la columna llave

    fornea. b. Usar sufijos para distinguir entre mltiples columnas FK en una tabla, por ejemplo, FK1 y FK2.

    Etiquetar mltiples columnas en el mismo sufijo.

  • 2

    c. Usar NN para una columna que debe ser definida como NO NULA. d. Usar U para la columna que debe ser nica. e. Si mltiples columnas deben ser nicas en combinacin, etiquetar con un sufijo, por ejemplo U1. f. Etiquetar una columna sencilla PK como NN, U g. Etiquetar mltiples columnas PF (compuestas) como NN, U1.

    Pasos para el diseo inicial de la base de datos:

    1. Mapear las entidades a tablas relacionales. 2. Mapear atributos a columnas y documentar tipos simples. 3. Mapear claves a llaves primarias o alternas. 4. Mapear relaciones a llaves forneas. 5. Elegir opciones de arco. 6. Elegir opciones de subtipo.

    PASO 1. MAPEAR LAS ENTIDADES A TABLAS RELACIONALES Mapear la tabla relacional para cada entidad. Crear una mapa de instancias para la nueva tabla. Registrar nicamente el nombre de la tabla. INSTRUCTOR

    Columna Tipo de dato Tipo de llave No Nulo / nico

    Ejemplo

    INSTRUCTOR # id * nombre * apellidos o numero telefonico

    ESTUDIANTE # id * nombre * apellidos o numero telefonico

    CURSO # codigo * nombre o cuota o duracion

    MATRICULA * fecha de inicio o fecha de terminacin o grado

    Maestro de

    Enseado por

    Registrado en

    Para

    Para

    Tomado por

    INSTRUCTOR

  • 3

    Notas:

    El nombre de la tabla debe ser fcil de identificar con el nombre de la entidad. EL nombre en plural de una entidad se usa algunas veces porque la tabla debe contener un grupo de tuplas.

    Una entidad simple no es un subtipo ni un supertipo.

    PASO 2. MAPEAR ATRIBUTOS A COLUMNAS y DOCUMENTAR TIPOS SIMPLES Mapear cada atributo de la entidad a una columna en su tabla correspondiente. Establecer los atributos obligatorios para columnas No Nulas (NN) INSTRUCTOR

    Columna InstId Nombre Apellido NoTelef Tipo de dato Nmero Cadena Cadena Cadena Tipo de llave No Nulo / nico NN NN NN

    10 Nancy Gonzles 987-5874 18 Mara Hall 514-5587 73 Katty Lpez 365-5547

    Ejemplo

    301 Eric Vega 965-7844 Notas:

    Para cada atributo seleccionar un nombre corto pero significativo. El nombre de las columnas debe ser fcil identificar en un modelo entidad-relacin. Evitar el uso de palabras reservadas de SQL para nombres de columnas. Usar abreviaturas consistentes que no causen confusin. Usar datos de ejemplo para las columnas de la tabla.

    PASO 3. MAPEAR CLAVES A LLAVES PRIMARIAS O ALTERNAS INSTRUCTOR

    Columna InstId Nombre Apellido NoTelef Tipo de dato Nmero Cadena Cadena Cadena Tipo de llave PK No Nulo / nico NN, U NN NN

    10 Nancy Gonzles 987-5874 18 Mara Hall 514-5587 73 Katty Lpez 365-5547

    Ejemplo

    301 Eric Vega 965-7844

    INSTRUCTOR # id * nombre * apellidos o numero telefonico

    INSTRUCTOR # id * nombre * apellidos o numero telefonico

  • 4

    Notas:

    Todas las columnas etiquetadas con PK deben ser etiquetadas tambin con NN y U. Convertir una clave compuesta en una PK compuesta. Etiquetar estas columnas como NN y U1.

    Si una entidad incluye una relacin, agregar columnas de llaves forneas para la tabla y sealarlas como parte de la llave primaria.

    MATRICULA Columna fechaReg fechaTerm Grado CodigoCurso EstId Tipo de dato Fecha-Hora Fecha-Hora Cadena Cadena Cadena Tipo de llave PK, FK1 PK, FK2 No Nulo / nico NN NN, U1 NN, U2

    12-05-2006 23-05-2006 A CL254 587455A 16-06-2006 28-06-2006 B AB447 254785D 13-02-2006 15-02-2006 A CN502 225401G

    Ejemplo

    22-05-2006 04-06-2006 C CL587 230107B Notas:

    Escoger un nombre nico para cada columna FK y etiquetar las columnas PK, NN y FK. Si existen mltiples columnas FK en una tabla, usar sufijos para distinguirlos, por ejemplo, FK1,

    FK2. Etiquetar mltiples columnas llave con el mismo sufijo. Las PK compuestas deben de ser nicas en combinacin y deben ser etiquetadas como U. Agregar ejemplos de datos para las columnas FK.

    ESTUDIANTE # id * nombre * apellidos o numero telefonico

    CURSO # codigo * nombre o cuota o duracion

    MATRICULA * fecha de inicio o fecha de terminacin o grado

    Registrado en

    Para

    Para

    Tomado por

  • 5

    PASO 4. MAPEAR RELACIONES A LLAVES FORANEAS Para una relacin de entidades 1 a Muchos tomar el PK de la tabla (1) y ponerla en la tabla (Muchos)

    CURSO Columna CodigoCurso Nombre Cuota Duracion InstId Tipo de dato Cadena Cadena Nmero Nmero Nmero Tipo de llave PK FK No Nulo / nico NN, U NN

    CL320 Computacin 1200 2 22 AD201 Administracin 500 3 45 EC584 Economa 850 2 78

    Ejemplo

    MM547 Matemtica 360 4 103 Notas:

    Elegir un nombre nico para la columna FK y etiquetar las columnas FK. Para las relaciones debe (obligatorias) etiquetar la columna como NN. Agregar datos de ejemplo. Si el FK de la tabla incluye una llave fornea (FK), las columnas FK que soportan la relacin,

    pueden ser agregadas en el Paso 3. Para una relacin obligatoria 1 a 1, colocar las FK como nica en el mapa de instancias en donde la relacin es obligatoria y usar la restriccin NN para forzar la condicin de obligatoriedad.

    COMPUTADORA Columna NumInv Tipo Poder IdPlaca Tipo de dato Cadena Cadena Nmero Cadena Tipo de llave PK FK No Nulo / nico

    NN, U NN NN NN, U

    1045 AT 150 4579 0437 TOWER 220 4517 1458 TOWER 220 0254

    Ejemplo

    1223 TOWER 200 2547

    PLACAMADRE Columna IdPlaca Proc VelProc Copro Tipo de dato Cadena Numero Numero Lgico Tipo de llave PK No Nulo / nico

    NN, U NN NN NN

    4517 486 3.3 Si 0245 486 4.8 No 4517 586 2.1 Si

    Ejemplo

    4579 386 2.8 No

    INSTRUCTOR # id * nombre * apellidos o numero telefonico

    CURSO # codigo * nombre o cuota o duracion

    Maestro de

    Enseado por

    COMPUTADORA # Nmero de inventario * tipo * poder

    PLACAMADRE # Numero de serie * procesador * velocidad o coprocesador

    Incluye a

    Incorporada dentro

  • 6

    Si la relacin 1 a 1 es opcional en ambas direcciones mover la FK en la tabla en cualquiera de las dos tablas de la relacin.

    MUELLE Columna MNum Longit Tipo de dato Cadena Nmero Tipo de llave PK No Nulo / nico

    NN, U NN

    344 100 075 1000

    Ejemplo

    554 500

    BARCO Columna NumReg CiuReg Nombre Tipo MNum Tipo de dato Cadena Cadena Tipo de llave PK PK FK No Nulo / nico

    NN, U1 NN, U1 NN U2

    134X89 Panam Sun King Crucero 344 00445578 Callao Runner Yate 075

    Ejemplo

    T25474 Panam Doullos Crucero 341

    Notas:

    La FK para la relacin 1 a 1 debe ser siempre nica, pero permite NULOS. Para una relacin 1 a Muchos recursiva, agregar una columna FK a l tabla que referencie valores de la columna PK.

    EMPLEADO

    Columna DNI nombre apellido DNIJefe Tipo de dato Cadena Cadena Cadena Cadena Tipo de llave PK FK No Nulo / nico

    NN, U NN NN

    16754122 Juan Lpez 10225493 22547844 Cristina lvarez 10225493 Pedro Fernndez 16754122

    Ejemplo

    32501238 Alberto Quiroga 16754122

    MUELLE # numero * longitud

    BARCO # Numero de registro # Ciudad de registro * nombre o tipo

    Ocupado por

    Desembarca en

    EMPLEADO# DNI * nombre * apellido Jefe de

    Bajo rdenes de

  • 7

    Notas:

    La columna FK hace referencia a una tupla de la misma tabla. El nombre de la columna FK debe reflejar la relacin. Una FK recursiva nunca debe ser NO NULA.

    Para una relacin 1 a 1 recursiva, agregar una FK nica a la tabla. Esta columna FK debe hacer referencia a una valor de la columna PK.

    PERSONA

    Columna DNI nombre apellido DNIEsp Tipo de dato Cadena Cadena Cadena Cadena Tipo de llave PK FK No Nulo / nico

    NN, U1 NN NN U2

    16754122 Juan Lpez 10225493 22547844 Cristina lvarez 32501238 10225493 Carla Fernndez 16754122

    Ejemplo

    32501238 Alberto Quiroga 22547844 Notas:

    La combinacin de columnas PK y FK siempre debe ser nica para asegurar la relacin 1 a 1. Poniendo el PK y el FK como nicos se garantiza que la combinacin ser nica.

    Una FK recursiva nunca debe ser NO NULA.

    PERSONA# DNI * nombre * apellido Esposo de

    Casado con

  • 8

    PASO 5. ELEGIR OPCIONES DE ARCO Los arcos representan un tipo de llave fornea de alternativa mltiple. Escoger entre dos alternativas de diseo para mapear arcos a llaves forneas.

    Alternativas de diseo:

    Diseo de arco explcito. Diseo de arco genrico.

    El Diseo de Arco Explcito crea una columna de llave fornea para cada relacin que incluye el arco.

    OFICINA Columna IdEdificio NumOficina IdIndiv CodSoc NumCia Tipo de dato Nmero Numero Nmero Cadena Nmero Tipo de llave PK PK FK1 FK2 FK3 No Nulo / nico NN, U1 NN, U1

    1024 201 30045 512 101 A4431 977 204 54322

    Ejemplo

    3041 510 10811 Notas:

    El diseo de arco explcito soportar llaves forneas mltiples con diferentes formatos y tipos de dato.

    El SGBD o las aplicaciones deben permitir forzar la exclusividad entre las llaves forneas (en cada fila slo debe existir valor para una sola columna)

    OFICINA # id de edificio # numero de oficina

    INDIVIDUAL # id

    COMPAIA # numero

    SOCIEDAD # cdigo

    Arrendatario de

    Rentada por

    Arrendatario de

    Arrendatario de

    Rentada por

    Rentada por

  • 9

    El Diseo de Arco Genrico crea una columna de llave fornea nica y una columna adicional para marcar la relacin de arco (discriminante). Como las relaciones son exclusivas, solamente un valor de FK existir por cada fila de la tabla.

    OFICINA Columna IdEdificio NumOficina RentadoPor TipoRenta Tipo de dato Nmero Numero Cadena Cadena Tipo de llave PK PK FK No Nulo / nico NN, U1 NN, U1 NN NN

    1024 201 30045 I 512 101 A4431 S 977 204 54322 I

    Ejemplo

    3041 510 10811 C Notas:

    Si las relaciones debajo del arco son obligatorias, hacer ambas columnas NO NULAS. Las llaves forneas deben compartir el mismo formato para todas las tablas referenciadas. La relacin de exclusividad se fuerza automticamente.

    PASO 6. ELEGIR OPCIONES DE SUBTIPO Opciones de mapeo de subtipos:

    Diseo de una sola tabla. Diseo de tablas separadas. Implementacin de arco.

    Opcin 1: Diseo de una sola tabla:

    Se usa el diseo de una sola tabla cuando el subtipo tiene pocas relaciones y atributos propios. Pasos:

    1. Crear una sola tabla para el subertipo. 2. Crear una columna para cada uno de los atributos del supertipo.

    EMPLEADO# DNI * nombre * apellido

    DEPARTAMENTO# cdigo

    SINDICATO # nmero

    Asignado a

    Miembro de

    Compuesto por

    EMPLEADO ASALARIADO

    * salario

    EMPLEADO POR HONORARIOS

    * pago por hora * pago por hora extra

    Compuesto por

  • 10

    3. Crear una columna TIPO para identificar a qu subtipo pertenece cada fila. 4. Crear una columna para cada uno de los atributos del subtipo. 5. Crear columna FK para cada una de las relaciones del supertipo. 6. Crear columnas FK para cada una de las relaciones del subtipo.

    EMPLEADO

    Columna DNI Nombre Apellido Tipo Salario CostoHR CostoHE NroSind CodDep Tipo de dato Cadena Cadena Cadena Cadena Nmero Nmero Nmero Nmero Cadena Tipo de llave PK FK1 FK2 No Nulo / nico

    NN, U NN NN NN NN

    16455201 Juan Lpez AS 1250 05 11478451 Luis Calle HO 25 9 201 07 11499630 Ana Vega HO 20 7 201 11

    Ejemplo

    00214501 Mara Torres AS 2500 13

    Ventajas:

    El acceso al supertipo es directo. El subtipo puede ser accesado y modificado usando vistas.

    Desventajas:

    Los requerimientos del subtipo NO NULO no se pueden forzar a nivel de base de datos. La lgica del SGBD y de las aplicaciones tendr que manejar diferentes conjuntos de atributos,

    dependiendo de su tipo. Opcin 2: Diseo de tablas separadas:

    Se usa el diseo de tablas separadas creando una tabla para cada subtipo existente. Pasos:

    1. Crear una tabla para cada subtipo. 2. En cada tabla subtipo, crear columnas para los atributos del subtipo. 3. En cada tabla subtipo, crear columnas para el atributo del supertipo. 4. En cada tabla subtipo, crear columnas FK para las relaciones del subtipo. 5. En cada tabla subtipo, crear columnas FK para las relaciones del supertipo.

    EMPLEADO ASALARIADO

    Columna DNI Nombre Apellido Salario CodDep Tipo de dato Cadena Cadena Cadena Nmero Cadena Tipo de llave PK FK No Nulo / nico NN, U NN NN NN NN

    16455201 Juan Lpez 1250 05 Ejemplo 00214501 Mara Torres 2500 13

    EMPLEADO POR HONORARIOS

    Columna DNI Nombre Apellido CostoHR CostoHE NroSind CodDep Tipo de dato Cadena Cadena Cadena Nmero Cadena Nmero Cadena Tipo de llave PK FK1 FK2 No Nulo / nico NN, U NN NN NN NN NN NN

    11478451 Luis Calle 25 9 201 07 Ejemplo 11499630 Ana Vega 20 7 201 11

    Ventajas:

    La opcionalidad de los atributos del subtipo se fuerza a nivel de la base de datos. La lgica del SGBD o de las aplicaciones no requiere chequeo para los subtipos.

  • 11

    Desventajas:

    La consulta al supertipo requiere UNIR conjuntos de resultados. La lgica del SGBD o las aplicaciones debe ser especfica para cada tabla individual. El mantenimientos de las llaves de los subtipos el complicada de implementar.

    Fuente:

    INTRODUCCION a ORACLE Parte I. Diseo Relacional de Base de Datos. Gua del Participante. Diciembre, 1994.