• No se han encontrado resultados

1. GENERALIDADES DEL DISEÑO DE BASES DE DATOS RELACIONALES

N/A
N/A
Protected

Academic year: 2021

Share "1. GENERALIDADES DEL DISEÑO DE BASES DE DATOS RELACIONALES"

Copied!
52
0
0

Texto completo

(1)

1. GENERALIDADES DEL DISEÑO DE BASES DE DATOS

RELACIONALES

1.1 Ingeniería de software

• El diseño de bases de datos es un subproblema de la Ingeniería de Software.

• Clases de software:

◊ Científico

◊ Ingeniería

◊ Tiempo real

◊ Soporte a la toma de decisiones

◊ Operacional

Ejemplo: sistema que captura diariamente las transacciones en una organización, controlando depósitos, cambios de políticas, estado de los inventarios, ventas y personal.

Estos sistemas son críticos en cualquier organización y si se cae el sistema, estará temporalmente fuera de los negocios.

• Dos dimensiones de la Ingeniería de Software:

◊ Ciclo de vida

Fases del proyecto a través del tiempo

◊ Disciplina

Componentes del software en sí mismo

1.1.1 El ciclo de vida

1. Definición del alcance en términos de los objetivos de la organización.

2. Identificación de requerimientos a través de entrevistas y revisión bibliográfica. 3. Análisis de los requerimientos dados en las especificaciones del diseño. 4. Diseño esquemático y detallado.

5. Construcción del software y las bases de datos. 6. Prueba e instalación del sistema.

7. Mantenimiento y ampliación repitiendo las fases anteriores.

1.1.2 Disciplinas

• Datos.

Típicamente representados por objetos y relaciones entre ellos.

• Procesos.

Parte dinámica del software. En el diseño se representa mediante diagramas de flujo, diagramas organizacionales, lenguajes 3GL, ...

• Reglas del negocio.

Reglas que deben cumplir los procesos y los datos para que representen estados válidos del mundo real (ejemplo: reglas para integridad referencial).

• Presentación.

(2)

• Documentación.

Manuales de referencia, Guía del usuario, Diccionario de datos, tutoriales, ...

1.1.3 Esquema de trabajo en Ingeniería de Software

1.1.4 Datos/Análisis

Un diagrama Entidad/Relación, es un ejemplo de cómo la disciplina de Datos está presente en la fase de análisis de la Ingeniería de Software.

• Diagramas Entidad/Relación

◊ Documento original de Peter Peen y Chan Chen

◊ Metodología Case de Barker

1.1.5 Reglas/Análisis

Las reglas que se deben cumplir en una institución

• Expresadas en lenguaje natural

1.1.6 Proceso/Construcción

• Sentencias SQL

1.2 Diseño de Bases de datos

Requerimientos Análisis Diseño Construcción Instalación Mantenimiento Datos

(3)

• Independencia física de los datos.

El diseño físico es totalmente invisible para el usuario y para el software de aplicaciones

1.2.1 El ciclo de vida, revisado

1. Definición del alcance.

2. Identificación de requerimientos. 3. Análisis.

4. Diseño de la base de datos. a) Diseño relacional. b) Diseño físico.

5. Construcción del software utilizando SQL. 6. Prueba e instalación de la base de datos.

7. Mantenimiento y ampliación repitiendo las fases anteriores. a) Revisión del diseño relacional.

b) Reorganización del diseño físico.

1.2.2 Identificación de requerimientos

• Realizar entrevistas con los usuarios.

• Recopilar documentación.

• Llevar en forma paralela la etapa de análisis.

1.2.3 Análisis

• Definir un modelo, utilizando diagramas de entidad-relación.

• Definir las reglas del negocio.

• Definir los objetivos: claramente, de forma estable y generalizando.

• Esta etapa se conoce también como:

◊ Diseño lógico.

◊ Diseño conceptual.

◊ Modelamiento de datos.

• Debe ser totalmente independiente de la implementación, rendimiento, software y hardware.

Diseño de BD Este curso Requerimientos Análisis Diseño Construcción Instalación Mantenimiento Datos

(4)

1.2.4 Diseño relacional

• Definir tablas, columnas y llaves.

• Objetivos:

◊ Reducir la redundancia para simplificar la administración de los datos y asegurar integridad.

◊ Buscar comportamiento satisfactorio.

• A veces llamado: diseño lógico.

1.2.5 Diseño físico

• Especifica la organización interna de las tablas en los discos del computador (estructuras de almacenamiento, manejo de índices, asignación de tablas a dispositivos, ...).

1.3 Problemas al diseñar bases de datos

• Cuáles son las entidades?

• Cuáles son las relaciones?

• Cuáles son los atributos?

1.3.1 Problemas de relatividad

La naturaleza del análisis es altamente sujetivo.

(5)

1.3.2 Problema de datos compartidos en L

1.3.3 Problema de llaves artificiales

• Cómo se identifican de manera única cada fila de una tabla?

◊ Natural, utilizando la información de varias columnas (Ejemplo: Proveedor, Parte, Fecha).

◊ Artificial, utilizando una columna (Ejemplo: Código).

1.3.4 Problema de los datos tipo vector

EN FORMA DE FILA

# año civil eléctrica mecánica química sistemas

1995 1430 1020 2050 2570 500 1996 1870 990 1630 1200 380 PROGRAMADOR VENDEDOR Nombre Salario Depto Comisión Meta

(6)

EN FORMA DE COLUMNA

# año # carrera alumnos

1995 civil 1430 1995 eléctrica 1020 1995 mecánica 2050 1995 química 2570 1995 sistemas 500 1996 civil 1870 1996 eléctrica 990 1996 mecánica 1630 1996 química 1200 1996 sistemas 380

1.3.5 Administración de la base de datos

• El administrador de la base de datos.

◊ Una o varias personas, dependiendo del tamaño de la organización.

◊ Enfocadosa una base de datos específica o a un motor específico de bases de datos.

◊ Encargado de:

∗ Diseñar las bases de datos.

∗ Rediseñar las bases de datos.

∗ Construir las bases de datos.

∗ Reponder por la seguridad, integridad y disponibilidad de los datos.

∗ Hacer monitoreo.

∗ Chequear el rendimiento.

∗ Hacer el ajuste de los parámetros generales de comportamiento.

• El administrador de los datos.

◊ Responsable de los datos, a nivel global.

◊ Responsable de proporcionar las vistas necesarias de los datos a los usuarios.

◊ De importancia especial en la fase de análisis.

• El diccionario de datos.

◊ Sitio donde se encuentra la documentación relacionada con el análisis, diseño y construcción de las bases de datos.

◊ También denominado: ∗ Metabase de datos. ∗ Repositorio. ∗ Enciclopedia. ∗ Directorio. ∗ Catálogo.

1.3.6 Tipos de diccionarios

• Dinámicos.

Están en línea con el motor de bases de datos y el sistema en producción.

• Activos.

Están en línea únicamente con las herramientas de desarrollo (CASE).

• Pasivos.

(7)

1.3.7 Diccionarios estándar

• ANSI Information Resource Dictionary System (IRDS).

• ISO IRDS.

• IBM Repository (AD/Cycle).

(8)

2. ANÁLISIS BÁSICO

• Modelo Entidad Relación de Peter Peen y Chan Chen.

• Case Designer de Barker.

• Nissjen’s Information Analysis Methodology (NIAM).

• Objects-oriented approaches.

• Ventajas del modelo Entidad Relación:

◊ Cercano al lenguaje natural: una Entidad es como un Sustantivo, una Relación es como un Verbo y un Atributo es como una frase proposicional. Esto hace que sea relativamente sencillo convertir una entrevista en un modelo de datos.

◊ La mayoría de las herramientas CASE lo han adoptado.

2.1 Entidades

• Entidad: Cualquier cosa de interés sobre la que podemos decir algo.

◊ Persona.

◊ Lugar.

◊ Objeto.

◊ Actividad.

◊ Evento.

• Nombre de la Entidad: Escrito en mayúsculas.

• Tipo de Entidad: conjunto de cosas.

• Instancia de una Entidad: una cosa individual.

• Una Entidad generalmente se convierte en una tabla en el diseño de bases de datos relacionales.

2.1.1 Descubrir y documentar Entidades:

E1

Identificar Entidades en las Entrevistas

• Las Entidades siempre son sustantivos, pero no todos los sustantivos son Entidades.

• Ignore sustantivos que:

◊ Se refieren a datos específicos.

◊ No son significativos para el estudio.

• No confunda una forma, con la información contenida en ella.

E2

Clasificar la Entidades Se hará más adelante.

E3

Determinar la llave primaria

• La llave primaria debe identificar de manera inequívoca una instancia de una entidad.

• Características obligatorias:

◊ Valor único.

◊ Valor siempre conocido.

• Características deseables:

◊ Valor estable.

◊ Valor controlado por el administrador de los datos.

◊ Disponible para todos los usuarios.

(9)

• Si no encuentra una buena llave primaria, invéntese una.

• Si no la descubre:

◊ Pregunte al usuario cómo identifica la Entidad.

◊ Reconsidere la Entidad. Posiblemente no es una cosa sino corresponde a un dato o no es importante en esa lugar de estudio o está pobremente definida.

E4

Colocar nombres a las Entidades ♦ Utilizar un sustantivo en singular.

♦ Escribir el sustantivo en letras mayúsculas.

♦ Elaborar una lista de sinónimos en el diccionario.

♦ Eliminar homónimos.

E5

Escribir una descripción de cada Entidad

♦ Describir en forma significativa y con frases completas.

♦ Incluir ejemplos y contraejemplos.

2.2 Relaciones

• Relación: Asociación entre entidades.

• Nombre de la Relación: Escrita en mayúsculas.

Se puede escribir utilizando una frase asociando dos entidades. Ejemplo: EMPLEADO-ASIGNADO_A-PROYECTO.

• Instancia de una Relación: caso particular. Ejemplo: Juan Arias - asignado_a - Urrá II.

• Una Relación generalmente tiene llaves foráneas en el diseño de bases de datos relacionales.

2.2.1 Descubrir y documentar Relaciones:

R1

Identificar Relaciones en las Entrevistas

• Las Relaciones son verbos, pero no todos los verbos son Relaciones.

• Ignore verbos que:

◊ Describan procesos mas que datos.

◊ No son significativos para el estudio.

• Descubra y documente relaciones implícitas.

R2

Clasificar la Relaciones Se hará más adelante.

R3

Determinar la cardinalidad MÁXIMA CARDINALIDAD

La máxima cardinalidad de una relación es la respuesta a las siguientes preguntas:

Cúantos Referencia_Entidad_1_p verbo_de_la_relación Referencia_Entidad_2_s? Cúantos Referencia_Entidad_2_p verbo_de_la_relación Referencia_Entidad_1_s? La respuesta correcta, depende de las políticas de la Empresa.

(10)

• Muchos a Uno.

Ejemplo: EMPLEADO-TRABAJA_EN-DEPARTAMENTO.

Cúantos Empleados trabajan en un Departamento? Muchos.

En cúantos Departamentos trabaja un Empleado? Al menos uno (a la vez). • Uno a Uno.

Ejemplo: EMPLEADO-ADMINISTRA-DEPARTAMENTO.

Cúantos Empleados administran un Departamento? Al menos uno (a la vez). Cúantos Departamentos administra un Empleado? Al menos uno (a la vez). • Muchos a Muchos.

Ejemplo: EMPLEADO-ASIGNADO_A-PROYECTO.

Cúantos Empleados están asignados a un Proyecto? Muchos. En cúantos Proyectos está aasignado un Empleado? Muchos. MÍNIMA CARDINALIDAD

La mínima cardinalidad de una relación es la respuesta a las siguientes preguntas:

Cúantos Referencia_Entidad_1_p tiene verbo_de_la_relación Referencia_Entidad_2_s? Cúantos Referencia_Entidad_2_p tiene verbo_de_la_relación Referencia_Entidad_1_s? La respuesta correcta, depende de las políticas de la Empresa.

Respuestas posibles:

◊ Cero a Cero.

◊ Cero a Uno.

◊ Uno a Uno.

Esta información es particularmente importante cuando se convierten relaciones en columnas de un diseño de bases de datos relacional.

R4

Colocar nombres a las Relaciones ♦ Utilizar un verbo (en lo posible).

♦ Escribir el nombre en letras mayúsculas.

♦ Elaborar una lista de sinónimos en el diccionario.

♦ Eliminar homónimos.

♦ Incluir los nombres de las entidades (aunque se pueden suprimir en casos obvios).

R5

Escribir una descripción de cada Relación

♦ Describir en forma significativa y con frases completas.

♦ Incluir ejemplos y contraejemplos.

2.3 Atributos

• Atributo: Describe una propiedad (o característica) de una Entidad o de una Relación.

• Padre del Atributo: Nombre de Entidad a la que pertenece el Atributo.

• El nombre del Atributo se escribe en minúsculas. Ejemplo: color.

• Instancia de una Atributo: caso particular. Ejemplo: verde.

• Los atributos generalmente se convierten en Columnas de una Tabla en un diseño de bases de datos relacionales.

(11)

2.3.1 Descubrir y documentar Atributos:

A1

Identificar Atributos en las Entrevistas

• Las Atributos son sustantivos que se refieren específicamente a datos. Ejemplo: nombre, fecha, cantidad, código).

A2

Tipo de dato

• Incluye los siguientes aspectos:

◊ Nombre.

◊ Característica asociada para su manejo (entero, flotante, caracter, ...).

◊ Espacio para su almacenamiento.

◊ Valores válidos.

◊ Reglas que deben cumplir.

◊ Valor por omisión.

• Tipos de datos compuestos.

Varios tipos de datos relacionados encerrados en un paréntesis. Ejemplo: fecha = ( año, mes, día )

• Se debe elaborar una lista de todos los tipos de datos.

A3

Determinar la cardinalidad

• Los atributos tienen máxima y mínima cardinalidad. Responden respectivamente a las preguntas:

Cúantos Referencia_al_Atributo_p puede tener Referencia_al_padre? Respuestas posibles:

∗ Al menos uno.

∗ Muchos.

Cúantos Referencia_al_Atributo_p tiene que Referencia_al_padre? Respuestas posibles:

∗ Al menos uno.

∗ Ninguno. Ejemplo: teléfono

Cúantos teléfonos puede tener un Empleado? Muchos. Cuantos teléfonos tiene que tener un Empleado? Cero. • Terminología:

◊ Singular: Para máxima cardinalidad en uno.

◊ Plural: Para máxima cardinalidad en muchos.

◊ Opcional: Para mínima cardinalidad en cero.

◊ Requerido: Para mínima cardinalidad en uno.

A4

Colocar nombres a las Atributos ♦ Utilizar un nombre significativo.

♦ Escribir el nombre en letras minúsculas.

♦ Omitir el nombre del padre si es único (no hay dos o más entidades con el mismo nombre de un atributo).

♦ Utilizar los calificativos de:

(12)

◊ Uno.

◊ Muchos.

♦ Elaborar una lista de los tipos de datos.

♦ Documentar los sinónimos.

♦ Eliminar homónimos.

A5

Escribir una descripción de cada Atributo

♦ Describir en forma significativa y con frases completas.

♦ Incluir ejemplos y contraejemplos.

(13)

3. ANÁLISIS AVANZADO

Familiarizados con las técnicas del diseño básico, se denominan técnicas avanzadas aquellas que permiten el manejo de problemas especiales al elaborar el modelo. Primero se verán clases especiales de entidades, relaciones y atributos, y luego técnicas que permitan manejar datos que reflejan condiciones del pasado o del futuro.

3.1 Entidades

3.1.1 Entidades dependientes

• Entidad dependiente: Aquella entidad que no puede existir si no existe una entidad denominada padre.

• La dependencia siempre se expresa como una relación al padre (generalmente muchos a uno).

• La llave primaria de la entidad dependiente tiene por lo menos dos partes. Siempre incluye la llave primaria de la entidad padre y uno o más atributos que la describen.

3.1.2 Sub-entidad

Sub-entidad: Aquella entidad que es un subconjunto de otra entidad denominada superentidad.

• Las sub-entidades se crean cuando existen entidades que presentan características especiales para los atributos.

3.1.3 Herencia

• La llave primaria, los atributos y relaciones de una superentidad aplican a todas las sub-entidades.

• El contrario es falso.

• Las sub-entidades siempre heredan los atributos y relaciones de su super-entidad.

• Las sub-entidades heredan la llave primaria de la super-entidad.

3.1.4 Relación ES-UN

• Siempre existe una relación ES-UN entre una sub-entidad y su super-entidad.

• La cardinalidad siempre es:

◊ máximo 1-1

◊ mínimo 1-0

3.1.5 Descubrir y documentar Entidades:

E2

Clasificar la Entidades

• Entidad dependiente. Si no puede existir si no existe una entidad padre.

• Sub-entidad. La entidad es un subconjunto de una super-entidad.

E3

Determinar la llave primaria

♦ La llave primaria de una entidad dependiente incluye la llave primaria de la entidad padre y otros atributos que la describen.

(14)

◊ La llave primaria de uns sub-entidad la hereda de la super-entidad.

E7

Crear Super-entidades con entidades similares Entidades similares son las que tienen atributos comunes.

♦ Asignar atributos comunes a la super-entidad y los atributos especiales a las sub-entidades.

♦ Buscar una llave primaria artificial, si es del caso.

E8

Determinar clases y clasificar atributos

• Clase: grupo de sub-entidades mutuamente excluyentes.

• Cada clase corresponde a un atributo de clasificación de la super-entidad.

• Una super-entidad puede tener varias clases no relacionadas.

3.2 Relaciones

• Una relación N-ária es la que involucra más de dos entidades.

3.2.1 Relaciones triples vs. Tres relaciones binarias

• Una relación triple es diferente de tres relaciones binarias:

Empleado Actividad Proyecto Juan Carlos Operador Plan 1

Juan Carlos Administrador Plan 32 José Vicente Operador Plan 32

Empleado Actividad Empleado Proyecto Actividad Proyecto Juan Carlos Operador Juan Carlos Plan 1 Operador Plan 1 Juan Carlos Administrador Juan Carlos Plan 32 Administrador Plan 32 José Vicente Operador José Vicente Plan 32 Operador Plan 32

Empleado Actividad Proyecto Juan Carlos Operador Plan 1

Juan Carlos Administrador Plan 32 José Vicente Operador Plan 32 Juan Carlos Operador Plan 32

3.2.2 Relaciones recursivas:

• Relación recursiva: Aquella que hace asociaciones con la misma entidad. Ejemplo: EMPLEADO-SUPERVISAR-EMPLEADO

(15)

• Documentar las actividades asociadas con la primera y segunda entidad de la relación. Ejemplo: Supervisor, Subordinado.

3.2.3 Descubrir y documentar Relaciones:

R2

Clasificar la Relaciones

♦ Identificar las relaciones N-árias.

♦ Distinguir una relación triple de tres relaciones binarias.

♦ Documentar las actividades asociadas a entidades en relaciones recursivas.

R7

Eliminar relaciones indirectas

Una relación indirecta es redundate a las otras relaciones.

♦ Excluir las relaciones indirectas del modelo de datos. Si la relación indirecta es muy importante para algunos usuarios, se puede documentar, pero no implementarla en el diseño de la base de datos relacional.

R8

No confundir relaciones con entidades o atributos

• Atributos que hacen referencia a entidades son relaciones (cuando un atributo concuerda con la llave primaria de otra entidad, ella realmente es una relación).

• Si la llave primaria de una entidad contiene la llave primaria de otra, ella es una relación.

3.3 Atributos

• Intuitivamente se puede decir quien es la entidad padre de un Atributo. Si no se está seguro se puede mirar:

◊ El posesivo de un sustantivo.

EMPLEADO DEPARTAMENTO DIVISIÓN

ASIGNADO_A

(16)

Ejemplo: De quién es el salario? Salario del empleado.

◊ Nombre del verbo.

Ejemplo: Quién tiene salario? El empleado tiene salario.

◊ Una frase. Ejemplos:

Fecha de iniciación del proyecto. El estudiante tiene código.

3.3.1 Descubrir y documentar Atributos:

A1

Identificar Atributos en las Entrevistas

♦ Verificar la entidad o relación padre.

♦ Mirar el posesivo de un sustantivo, el nombre de un verbo o una frase.

A7

Reasignar atributos indirectos

• Atributos indirectos realmente no son una propiedad de su padre.

Atributo indirecto es igual a un caso especial de relación indirecta.

A7

Documentar las fórmulas

♦ Atributos derivados: Aquellos que resultan de una operación en la que participan otros atributos. Ejemplo: valor_a_pagar = sueldo + bonificaciones - deducciones

♦ Atributo primitivo: el que se debe dar en forma directa.

♦ Documentar las fórmulas, especialmente si el atributo es importante o si su deducción es complicada.

♦ Consderar la eliminación de atributos derivados.

A9

Convertir atributos opcionales en sub-entidades Atributo opcional: cuando su mínima cardinalidad es cero. Los atributos se consideran opcionales porque:

◊ A veces no se conocen.

◊ A veces no aplican.

Crear una sub-entidad cuando un atributo opcional de una entidad signifique que no aplica, pero no cuando signifique no conocido.

3.4 Datos históricos

La mayoría de entidades, relaciones y atributos reflejan estados actuales, pero en algunos casos es necesario considerar hechos que estan relacionados con fechas.

E6

Considerar estados pasados o futuros

♦ Incluir un atributo de fecha asociado con un hecho.

♦ Incluir un atributo de fecha asociado con el inicio de un estado continuo

♦ Incluir los atributos de fecha inicial y fecha final asociados con estados segmentados

(17)

R6

Considerar estados pasados o futuros

♦ Incluir un atributo de fecha asociado con un hecho.

♦ Incluir un atributo de fecha asociado con el inicio de un estado continuo

♦ Incluir los atributos de fecha inicial y fecha final asociados con estados segmentados

♦ Documentar los estados pasados y futuros en la descripción.

A6

Considerar estados pasados o futuros

♦ Formar una característica compuesta por el atributo y la fecha cuando un caso de un atributo es de tipo histórico, pero no los demás.

♦ Documentar los estados pasados y futuros en la descripción.

3.5 Contenido del diccionario

• Entidades:

◊ Nombre.

◊ Sinónimos.

◊ Descripción.

◊ Llave primaria.

◊ Padre (si es dependiente).

◊ Super-entidad, clase, atributo de clasificación (si es subconjunto).

◊ Volúmen (número de instancias esperadas).

• Relaciones:

◊ Nombre.

◊ Sinónimos.

◊ Descripción.

◊ Cardinalidad (máxima y mínima).

◊ Identificación del rol de cada entidad (si es recursiva).

◊ Volúmen (número de instancias esperadas).

• Atributos:

◊ Nombre.

◊ Sinónimos.

◊ Entidad o relación padre.

◊ Descripción (incluyendo unidades).

◊ Cardinalidad (singular/plural, opcional/requerida).

◊ Tipo de dato:

∗ Nombre.

∗ Característica asociada para su manejo (entero, flotante, caracter, ...).

∗ Valores válidos.

∗ Reglas.

∗ Valor por omisión.

◊ Explicación de las fórmulas.

3.6 Análisis de datos

Determinar datos y reglas independientemente de procesos, rendimiento y presentación.

(18)

MUNDO REAL

DATOS

REQUERIMIENTOS ENTIDAD-RELACIÓNMODELO MODELODBMS MODELOFISICO

Jerárquico Relacional Red Por objetos

(19)

4. BASES DE DATOS RELACIONALES

4.1 Definiciones

• Elemental: Organización tabular de datos donde se permiten operaciones con restricción, proyección y encadenamiento (join).

• Práctica: Sistema que suporta SQL.

• General: Sistema que se acomoda a los principios del modelo relacional.

4.2 El modelo relacional

• Estructura de datos: ◊ Tablas. ◊ Filas. ◊ Columnas. ◊ Tipos de datos. ◊ Valores nulos. ◊ Vistas.

• Operadores (según Codd):

◊ Restricción. ◊ Proyección. ◊ Encadenamiento (join). ◊ Unión. ◊ Diferencia. ◊ Intersección. ◊ Producto. ◊ División. • Reglas de integridad: ◊ Llave primaria. ◊ Llaves foráneas.

◊ Integridad a nivel de entidad.

◊ Integridad referencial.

Las anteriores tres partes corresponden a los tres componentes de ingeniería de software:

◊ Información. ◊ Procesos. ◊ Integridad.

4.3 Estructura de datos

4.3.1 Terminología

TÉRMINOS EQUIVALENTES FORMAL (Codd) COMÚN FÍSICO

(20)

Relación Tabla Archivo

Tupla Fila Registro

Atributo Columna Campo

Dominio Tipo de dato Tipo de dato

4.3.2 Ejemplo de SQL

create table estudiante (

código integer, identificación integer, nombre varchar (30),

sexo char (1),

carrera integer) create table departamento (

código integer, nombre varchar (30), edificio integer, director integer)

4.3.3 Ejemplo de tablas

ESTUDIANTE

codigo identificacion nombre sexo carrera

212032 19234987 Juan Carlos Romero m 1121

212534 19876345 José Antonio Duarte m 1121

228976 23064837 Sergio Leonardo Gómez m 1122

236540 2294758 Paula Andrea Pérez f 1123

253456 98485743 Ricardo Bonavento m 1125

258765 75437802 Jesús Ignacio Quevedo m 1125

DEPARTAMENTO

código nombre edificio director

97621 Ingeniería Civil 451 24567 97622 Ingeniería Eléctrica 451 45678 97623 Ingeniería Mecánica 451 64573 97624 Ingeniería Química 451 84567 97625 Ingeniería de Sistemas 451 34490 97627 Ingeniería Agrícola 451 27359

(21)

4.3.4 Definición formal de Tabla

• Una tabla está compuesta de un encabezado y un cuerpo.

• El encabezado de una tabla es un conjunto fijo de columnas C1 , ... Cn y tipos de datos D1 , ... Dn

• El cuerpo de una tabla es un conjunto variable de filas { (C1 : V1 ) . . . (Cn : Vn ) } donde todos los valores Vi son del tipo de datos Di

4.3.5 Alcance de la definición

• Las filas y columnas no tienen un determinado orden.

• No tiene sentido tener filas o filas duplicadas.

• Por cada celda (intersección de fila y columna) sólo debe existir un valor (tablas normalizadas).

4.3.6 Facilidades de los tipos de datos

• Incluyen el concepto de representación física (entero, real, caracter, decimal).

• El usuario puede definir:

◊ Sus propios tipos de datos (por ejemplo: grados).

◊ Un valor por omisión.

◊ El conjunto de valores válidos.

◊ Reglas de validación.

◊ Tipos de datos compuestos o complejos (por ejemplo: fecha, polígono, área).

◊ Funciones (por ejemplo: área (polígono).

• Chequeo automático (por ejemplo para compatibilidad de tipos de datos en expresiones).

4.4 Valores nulos (null)

Null: es un símbolo especial, independiente del tipo de dato, que significa deconocido o no aplica. • El resultado al hacer una operación con uno de los siguientes operadores: < = > + - * / , en el cual uno o

ambos operandos es nulo el resultado es nulo.

• Tablas de verdad que incluyen el concepto de nulo:

AND VERDADERO FALSO NULO

VERDADERO Verdadero Falso Nulo

FALSO Falso Falso Falso

NULO Nulo Falso Nulo

OR VERDADERO FALSO NULO

VERDADERO Verdadero Verdadero Verdadero

FALSO Verdadero Falso Nulo

NULO Verdadero Nulo Nulo

X NOT (X)

VERDADERO Falso

FALSO Verdadero

(22)

4.4.1 Nulo sin sentido

Dos valores null son diferentes en la expresión: “null = null”

Dos valores null tiene el mismo significado en sentencias con SELECT DISTINCT y GROUP BY.

• Los operadores aritméticos no son distributivos sobre funcio nes SQL. Ejemplo: Select sum (salario + comisión) from pago

Select sum (salario) + sum (comisión) from pago

4.4.2 Valores por omisión

• El valor por omisión es el valor ‘normal’ de un tipo de datos.

El valor por omisión es más predecible que el valor null.

• El valor ‘normal’ de un tipo de dato representa:

◊ Valor estándar.

◊ Valor desconocido.

◊ No aplica.

• Problemas con los valores por omisión:

◊ Todos los valores son significativos.

◊ Posibles errores al utilizar funciones SQL.

◊ No se pueden eliminar nulos del SQL.

• Usar valores por omisión para tipos de datos de caracteres.

• Usar valores por omisión para tipos de datos numéricos cuando las funciones SQL sean importantes.

4.5 Operadores

• El modelo relacional tiene ocho operadores:

◊ Restricción. ◊ Proyección. ◊ Encadenamiento (join). ◊ Unión. ◊ Diferencia. ◊ Intersección. ◊ Producto. ◊ División.

• Los operadores son la base del algebra relacional, implementada en el SQL.

• El resultado, al aplicar estos operadores, siempre se coloca en una tabla.

• Ejemplos:

◊ Restricción: select * from estudiante where código > 250000

◊ Proyección: select código, nombre from estudiante

◊ Encadenamiento (join): select * from estudiante, carrera

where estudiante.cod_car = carrera.codigo

◊ Restricción + Proyección: select código, nombre from estudiante where código > 250000

◊ Proyección + Encadenamiento: select código, nombre, nom_carrera

from estudiante, carrera where estudiante.cod_car = carrera.codigo

4.6 Reglas de integridad

Definiciones:

• Llave: Columna o columnas utilizadas para identificar filas.

• Llave sencilla: Llave que utiliza una columna.

• Llave compuesta: Llave que utiliza dos o más columnas.

(23)

Clase de llaves en el modelo relacional: • Primaria. • Foránea. • Candidata. • Alterna.

4.6.1 Llave primaria

• Llave primaria: es la que identifica de manera inequívoca una fila.

• Características de la llave primaria:

◊ Valor único.

◊ No puede tener valores de tipo nulo.

◊ Es mínima, es decir, utiliza el mínimo de columnas necesarias para asegurar unicidad.

• Si se utilizan valores nulos, las consultas pueden fallar.

4.6.2 Llave foránea

• Llave foránea: Columna o columnas que se refieren a la llave primaria de otra tabla.

• Características de la llave foránea:

◊ Deben tener el mismo tipo de datos.

◊ Deben tener características iguales.

• Una llave primaria puede contener llaves foráneas.

4.6.3 Reglas de integridad

• Las llaves primarias deben tener valores únicos.

• Integridad a nivel de entidad: todas las columnas de una llave primaria deben ser diferentes de nulos.

• Integridad referencial: El valor de una llave foránea debe concordar con uno de los valores contenidos en la correspondiente llave primaria.

• Las reglas de llaves foráneas especifican la manera como se debe mantener la integridad referencial.

4.6.4 Reglas para inserción/actualización de llaves foráneas

• Automática: Si el valor de una llave foránea no concuerda con una llave primaria se crea una llave primaria con ese valor.

• Restringida: No se puede colocar un valor como llave foránea si no hay concordancia con las llaves primarias.

• Nulificación: Colaca en nulo una llave foránea nueva (solamente para inserción).

• Por omisión: Colaca el valor por omisión a una llave foránea nueva (solamente para inserción).

4.6.5 Reglas para actualización/borrado de llaves primarias

• Cascada: Al borrar una llave primaria se borran todas las llaves foráneas concordantes. Al actualizar una llave primaria se actualizan todas las llaves foráneas concordantes.

• Restingido: No se puede borrar una llave primaria si existe cualquier concordancia con llaves foráneas.

• Nulificación: Al actualizar/borrar una llave primaria todas las llaves foráneas concordantes se dejan con valor nulo.

(24)

se dejan con el valor por omisión.

4.7 Vistas

• Tabla(s) base: Existen físicamente y sus filas están almacenados en la base de datos.

• Vista:

◊ Físicamente sólo existe su estructura.

◊ Puede tomar toda la información de otra(s) tabla(s) base.

◊ Puede tomar sólo algunas filas/columnas de otra(s) tabla(s) base.

◊ Puede tener columnas calculadas.

◊ Puede tener información resultante de operaciones de encadenamiento de tablas base.

◊ Las operaciones de inserción, actualización y borrado operan sobre la(s) tabla(s) base y generalmente son operaciones restringidas en los DBMS.

4.7.1 El modelo relacional

Con respecto a los componentes de la ingeniería de software:

• Estructura de datos: Tablas, columnas, filas, tipos de datos, nulos.

• Operadores: Restricción, proyección, encadenamiento, unión, diferencia, intersección, producto y división.

• Integridad: Llaves primarias, llaves foráneas, integridad a nivel de entidad e integridad referencial.

4.7.2 Ventajas del modelo relacional

• Sólida fundamentación teórica (teoría de conjuntos, lógica y algebra relacional). Esto significa que el modelo es cohesivo, predecible y teóricamente sólido.

• Independencia física de los datos.

Sólo se definen tablas con columnas y filas.

• Los resultados siempre se obtienen en tablas.

Se tiene más productividad que tratarlos como simples filas.

• La estructura de datos es sencilla, intuitiva y uniforme. Programadores o usuarios finales pueden manipular tablas.

Cualquier cosa puede llevarse a una tabla, inclusive los resultados de una consulta.

4.8 SQL

Ver cuidadosamente en los DBMS la implementación de:

• Tipos de datos del sistema.

• Tipos de datos del usuario.

• Valores por omisión.

• Reglas.

• Asignación de valores por omisión y/o reglas a los tipos de datos.

• Manejo de las llaves primarias y foráneas.

• Manejo de índices.

• Manejo de la integridad a nivel de entidad.

• Manejo de la integridad referencial.

(25)

5. DISEÑO RELACIONAL BÁSICO

5.1 Entidades a tablas

En el diseño básico relacional cada entidad se convierte en una tabla.

T1

Entidades independientes a tablas independientes ♦ La llave primaria no contiene llaves foráneas.

T2

Entidades dependientes a tablas dependientes ♦ La llave foránea encadena a la tabla padre.

♦ La llave primaria contiene la llave foránea y otra(s) columna(s).

♦ Reglas para llaves foráneas:

◊ No se permiten valores nulos o por omisión.

◊ Borrado en cascada o restringido.

T3

Sub-entidades a sub-tablas

♦ La llave foránea se encadena con la super-tabla.

♦ La llave primaria es la llave foránea.

♦ Reglas para las llaves foráneas

◊ No se permiten valores nulos o por omisión.

◊ Borrado en cascada o restringido.

♦ Hacer clasificación por columnas en la super-tabla (recomendado).

◊ Elimina la necesidad de ver datos en sub-tablas.

◊ Redundante para datos en sub-tablas.

5.2 Relaciones a llaves foráneas

Nombre de la llave foránea = Nombre de la llave primaria (con calificador si es necesario).

• Utilizar nombres significativos.

K1

Relaciones 1-n. Colocar la llave foránea en el lado de muchos ♦ Las llaves foráneas deben ser singulares (deben ser tablas normalizadas).

K2

Relaciones 1-1. Colocar la llave foránea en la tabla con menos filas ♦ Reduce o elimina valores nulos.

K3

Relaciones n-n a tablas asociada

♦ Las dos llaves foráneas se refieren las dos tablas relacionadas.

♦ La llave primaria se compone de las llaves foráneas y puede incluir una o más columnas adicionales.

(26)

◊ No se permiten valores nulos o por omisión.

◊ Borrado en cascada o restringido.

K4

Relaciones n-árias a tabla asociada

♦ Comportamiento como el caso de relaciones n-n excepto que la llave primaria contine por lo menos n llaves foráneas.

5.3 Atributos a columnas

• Atributos singulares pasan como columnas.

• Tipos de datos compuestos pasan como varias columnas (depende del DBMS).

C1

Atributos plurales a tablas dependientes ♦ La llave foránea encadena a la tabla padre.

♦ La llave primaria contiene la llave foránea y el atributo plural.

♦ Reglas para las llaves foráneas

◊ No se permiten valores nulos o por omisión.

◊ Borrado en cascada.

C2

Especificar NOT NULL para atributos y relaciones tipo ‘requerido’ ‘Requerido’ = mínima cardnalidad 1 = columna con opción not null.

Especificar not null a:

◊ La columna que representa el atributo tipo ‘requerido’.

◊ Llave foránea que representa la relación tipo ‘requerido’.

◊ Todas las columnas llave primaria, siempre.

♦ Desaprobar valores por omisión que signifiquen desconocido o no aplica.

C3

Forzar valores únicos para atributos utilizando índices

♦ Los índices hacen más lentas las operaciones de adición, modificación y borrado.

♦ Definir las llaves primarias como índices con la opción de valor único (depende del DBMS).

C4

Atributos de relaciones van con la llave foránea

♦ Para relaciones 1-1 y 1-n, colocar el atributo en la tabla que contiene la llave foránea.

♦ Para relaciones n-n y n-árias, colocar el atributo en la tabla asociada.

5.4 Clase de tablas

TABLA REPRESENTA LLAVE PRIMARIA

Independiente Entidad independiente Sin llave foráneas Sub-tabla Sub-entidad Una llave foránea

(27)

Dependiente Entidad dependiente Atributo plural

Una llave foránea y columna(s) adicional(es) Asociada Relación muchos a muchos

Relaciones n-árias

Dos o n llaves foráneas y opcionalmente otras columnas.

5.5 Diseño básico vs. Diseño avanzado

• Diseño básico no tiene en cuenta el rendimiento.

(28)

6. FORMAS NORMALES

6.1 Redundancia

• En bases de datos relacionales es necesario la repetición de valores.

• Redundancia es la repstición de un hecho (asunto, caso, ...).

• La redundancia puede dar mejor rendimiento, pero generalmente no es deseable.

• La siguiente tabla tiene información redundante:

ASIGNACIÓN

# empleado

cargo

# proyecto

rol

rata

e1

Programador

p1

Supervisor

6000.00

e1

Programador

p2

Investigador

4500.00

e1

Programador

p3

Auxiliar

3850.00

e2

Operador

p3

Supervisor

6000.00

e3

Analista

p3

Supervisor

6000.00

Existe redundancia en la información:

− e1 es programador.

− El supervisor tiene una rata de 6000

6.1.1 Problemas de la redundancia

• Inconsistencia de datos.

• Anomalias en la actualización.

• Rendimiento bajo (analizar actualización vs consulta).

• Descontrol en los procedimientos que hacen mantenimiento de datos.

Los activadores (triggers pueden manejar las anomalías e inconsistencias, pero sigue el bajo rendimiento y la complejidad permanece.

6.1.2 Formas normales

• Forma normal: Estructura de tablas que reducen la redundancia.

• Existen muchas formas normales, pero seis son la de mayor importancia práctica: 1FN, 2FN, 3FN, BCFN, 4FN y 5FN. Cada una de esta formas normales es más potente (menos redundancia) que la anterior.

• Las formas normales más altas se obtiene por descomposición, se convierte una tabla en tablas más pequeñas, sin perder información.

6.2 Primera forma normal - 1FN

• Una tabla está en primera forma normal cuando en cada celda existe sólo un valor.

• Por definición, en un sistema relacional todas las tablas deben estar en 1FN.

• Generalmente se habla de una tabla normalizada cuando está en 1FN.

• Tablas en 1FN pueden tener redundancia.

(29)

ASIGNACIÓN

# empleado

cargo

# proyecto

rol

rata

e5

Programador

p1

Supervisor

Investigador

Auxiliar

6000.00

4500.00

3850.00

e7

Operador

p3

Supervisor

6000.00

e8

Analista

p3

Supervisor

6000.00

6.3 Segunda forma normal - 2FN

• Segunda forma normal: Es una tabla que debe estar en 1FN y donde cada columna no llave debe depender totalmente de la llave primaria (las columnas no llave no pueden depender parcialmente de la llave principal).

Ejemplo: en la siguiente tabla se tiene que cargo sólo depende parcialmente de la llave principal, por lo tanto no está en 2FN:

ASIGNACIÓN_1

# empleado

cargo

# proyecto

rol

rata

e1

Programador

p1

Supervisor

6000.00

e1

Programador

p2

Investigador

4500.00

e1

Programador

p3

Auxiliar

3850.00

e2

Operador

p3

Supervisor

6000.00

e3

Analista

p3

Supervisor

6000.00

• La tabla del ejemplo anterior se puede llevar a 2FN descomponiéndola en otras tablas. Ejemplo:

ASIGNACIÓN_1A

# empleado

# proyecto

rol

rata

e1

p1

Supervisor

6000.00

e1

p2

Investigador

4500.00

e1

p3

Auxiliar

3850.00

e2

p3

Supervisor

6000.00

e3

p3

Supervisor

6000.00

ASIGNACIÓN_2A

# empleado

cargo

e1

Programador

e2

Operador

(30)

e3

Analista

• Las tablas en 2FN pueden tener redundancia.

En el ejemplo anterior la información ‘supervisor tiene una rata de 6000’ es redundante.

6.4 Tercera forma normal - 3FN

• Tercera forma normal: Es una tabla que está en 2FN y donde cada columna no llave depende directamente de la llave primaria

• Ejemplo: la tabla ASIGNACIÓN_1 se puede tener en 3FN así:

ASIGNACIÓN_A1

# empleado

# proyecto

rol

e1

p1

Supervisor

e1

p2

Investigador

e1

p3

Auxiliar

e2

p3

Supervisor

e3

p3

Supervisor

ASIGNACIÓN_A2

ASIGNACIÓN_A3

# rol

rata

# empleado

cargo

Supervisor

6000.00

e1

Programador

Investigador

4500.00

e2

Operador

Auxiliar

3850.00

e3

Analista

• Las tablas en 3FN pueden tener redundancia.

T4

Verificar que las tablas están en 3FN

6.5 Forma normal de Boyce-Codd - BCFN

6.5.1 Dependencia funcional

Si c1 y c2 son columnas de la tabla T, se dice que c2 depende de c1 si para cada valor de c1 siempre se asocia un mismo valor en c2.

También se puede decir que: Si c1 y c2 son columnas de la tabla T, se dice que c2 depende de c1 si la relación de c1 a c2 es singular y requerida.

(31)

6.5.2 Llaves candidatas

• Llave candidata: Cualquier columna o grupo de columnas que identifiquen de manera única una fila.

• Cualquiera de las llaves candidatas se puede elegir como llave primaria.

• Una vez elegida la llave primara las demás llaves candidatas se denominan llaves alternas.

6.5.3 Fallas en la definición 3FN

• La definición de 3FN generalmenta es buena en términos prácticos pero presenta dos fallas:

◊ Sólo controla columnas no llaves y no mira problemas con llaves compuestas.

◊ Se abre en tablas con llaves alternas.

• Ejemplo: Si se tiene la entidad ESTUDIANTE con atributos: código, cédula, nombre y estado_civil, con llave primaria código, entonces cada instancia también depende de la llave alterna cédula, lo cual viola la definición de 3FN.

6.5.4 Determinante (columna determinante)

• Una columna es determinante cuando un valor de otra columna depende del valor de esa.

• Un determinante puede ser compuesto.

6.5.5 BCNF

• La forma normal Boyce-Codd es una tabla donde cada determinante es llave candidata.

• Ejemplo:

ASIGNACIÓN_3FN

# empleado

# proyecto

cuenta

rol

e1

p2

RMJ245

Investigador

e1

p3

ZOO

Auxiliar

e3

p3

ZOO

Supervisor

e4

p1

1211

Investigador

e5

p3

ABC45

Supervisor

e6

p3

ABC45

Coordinador

La anterior tabla: ∗ Está en 3FN.

∗ Tiene información redundante: proyecto depende de cuenta.

∗ Se puede hacer análisis de determinante y llave candidata:

Determinante Determinada Llave candidata empleado, proyecto cuenta

rol

cuenta proyecto No

(32)

ASIGNACIÓN_BCNF1

# empleado

# cuenta

rol

e1

RMJ245

Investigador

e1

ZOO

Auxiliar

e3

ZOO

Supervisor

e4

1211

Investigador

e5

ABC45

Supervisor

e6

ABC45

Coordinador

ASIGNACIÓN_BCNF2

# cuenta

# proyecto

RMJ245

p2

ZOO

p3

1211

p1

ABC45

p3

6.6 Cuarta forma normal - 4NF

6.6.1 Multidependencia

• Hay multidependencia en una tabla cuando existen dos relaciones independientes muchos a muchos.

• La multidependencia también se conoce como dependencia multivaluada.

• Ejemplo: Supongamos que un empleado tiene asignadas varias extensiones telefónicas y maneja varios procesadores de palabra.

Alternativas de diseño lógico:

empleado procesador extensión # empleado # procesador # extensión

e1 WS null e1 WS 312

e1 WP null e1 WP 312

e1 Word null e1 Word 312

e1 null 312 e1 WS 479

e1 null 479 e1 WP 479

e1 Word 479

(33)

e1 WS null e1 WS 312

e1 null 479 e1 WP 479

e1 Word 479 e1 Word null

e1 WP 312

Las tablas anteriores están en BCNF pero presentan redundancia y anomalías cuando se van a actualizar.

6.6.2 4NF

• La cuarta forma normal es una tabla que está en 3FN y no contiene relaciones independientes de muchos a muchos.

• Ejemplo:

# empleado # procesador # empleado # extensión

e1 WS e1 312

e1 WP e1 479

e1 Word

6.7 Quinta forma normal - 5NF

6.7.1 Dependencia cíclica

• Generalmente ocurre en relaciones n-árias donde las relaciones muchos a muchos son dependientes.

• Ejemplo:

Si un empleado e1 tiene asignada la actividad a1 y el empleado e1 está asignado al proyecto p1 y el proyecto p1 requiere de la actividad a1 entonces el empleado e1 debe estar asignado al proyecto p1 con la actividad a1.

• Usualmente estas relaciones n -árias no se pueden descomponer.

• Ejemplo:

Empleado Actividad Proyecto Juan Carlos Operador Plan 1

Juan Carlos Administrador Plan 32 José Vicente Operador Plan 32

Empleado Actividad Empleado Proyecto Actividad Proyecto Juan Carlos Operador Juan Carlos Plan 1 Operador Plan 1 Juan Carlos Administrador Juan Carlos Plan 32 Administrador Plan 32

(34)

José Vicente Operador José Vicente Plan 32 Operador Plan 32

Empleado Actividad Proyecto Juan Carlos Operador Plan 1

Juan Carlos Administrador Plan 32 José Vicente Operador Plan 32 Juan Carlos Operador Plan 32

6.7.2 5NF

• La quinta forma normal es una tabla que está en 4FN y no contiene dependencias cíclicas, excepto para el caso trivial entre llaves candidatas.

• 5NF básicamente es de interés académico.

• Matemáticamente se ha demostrado que 5NF es la última forma normal.

6.8 Definiciones formales

Si A, B y C son columnas (probablemente compuestas) de la tabla T:

6.8.1 Dependencia funcional

• B es funcionalmente dependiente de A si y solamente si para cada valor de A en T siempre se asocia exactamente con el mismo valor de B.

• B es totalmente dependiente de A si y solamente si B es funcionalmente dependiente de A, pero no sobre cualquier subconjunto propio de columnas de A.

• La columna A es determinante cuando cualquier columna de T es totalmente dependiente de A.

6.8.2 Multidependencia

a1, a2, ... an son subconjuntos del conjunto de columnas de una tabla T.

• Proyección de T sobre

a

1: Proyección de T a una tabla que incluye cada columna de

a

1 y no otras.

• T satisface la dependencia cíclica sobre

a

1,

a

2, ...

a

n si y solamente si T es el encadenamiento (join) de su proyección sobre a1, a2, ... an.

• Dependencia funcional es un caso especial de multidependencia.

• Multidependencia es un caso especial de dependencia cíclica.

6.8.3 Formas normales

Primera: Los dominios de cada columna solamente contienen valores atómicos.

Segunda: Tabla en 1NF y cada columna no llave es funcionalmente dependiente de toda la llave primaria. Tercera: Tabla en 2NF y no hay dependencias funcionales indirectas de columnas no llave sobre la llave

primaria.

Boyce-Codd: Cada determinante es una llave candidata.

Cuarta: Tabla en BCNF y cada multidependencia es actualmente una dependencia funcional. Quinta: Cada dependencia cíclica está sobre las llaves candidatas.

(35)
(36)
(37)

7. DISEÑO RELACIONAL AVANZADO

Elaboradas las tablas y verificadas que están en 3FN generalmente sigue el diseño de pequeñas tablas que se crean para hacer encadenamientos (joins) cuando se van a hacer cierto tipo de preguntas y degradan el rendimiento. Hasta este momento se han dejado de lado consideraciones para elaborar diseños alternos que den mejor rendimiento o simplifiquen la base de datos. En el dieño relacional avanzado se identifican esas alternativas, se evalúan mirando el mercado y se afinan las tablas.

Como en el diseño relacional avanzado se atiende especialmente el rendimiento, primero se miran las preguntas críticas. Las preguntas críticas son aquellas que significan muy alto volúmen, alta frecuencia de uso o que exigen excelente tiempo de respuesta. Estas preguntas son el punto de partida y de referencia para mirar el rendimiento y plantear alternativas.

Se van a considerar siete problemas importantes: llaves artificiales, datos compartidos en L, relaciones 1-1, datos en forma de vector, columnas sobrecargadas, sobrenormalización y desnormalización.

7.1 Llaves artificiales

• Llave artificial: columna que arbitrariamente adiciona el diseñador y que le sirve para un propósito específico, por ejemplo, para identificar de manera inequívoca una fila. En este caso esta llave artificial se pasa a las tablas asociadas que utilicen esa llave como llave foránea.

• Ejemplo: Se supone una empresa donde se asignan empleados a proyectos varias veces en diferentes fechas.

ASIGNADO_A

# empleado # proyecto # fecha_inicio actividad

e1 p1 1/16/96 Supervisor e1 p1 3/21/96 Investigador e1 p1 5/19/96 Programador e1 p3 8/11/98 Investigador e3 p2 2/9/95 Null e3 p3 11/23/96 Programador CARGAR_A

# cuenta empleado proyecto fecha_inicio cantidad

z00 e1 p1 1/16/96 55.000

abc89 e1 p1 1/16/96 9.950

455xz e1 p1 1/16/96 10.000

pdq1 e3 p2 2/9/95 10.000

(38)

En la tabla ASIGNADO_A la llave primaria es: empleado, proyecto, fecha_inicio.

Por conveniencia el diseñador puede inventarse una columna llamada código con característica de llave artificial, quedando así el ejemplo:

ASIGNADO_A

# código empleado proyecto fecha_inicio actividad

c1 e1 p1 1/16/96 Supervisor c2 e1 p1 3/21/96 Investigador c3 e1 p1 5/19/96 Programador c4 e1 p3 8/11/98 Investigador c5 e3 p2 2/9/95 Null c6 p3 p3 11/23/96 Programador CARGAR_A

# cuenta código cantidad

z00 c1 55.000

abc89 c1 9.950

455xz c5 10.000

pdq1 c5 10.000

pdq2 c5 14.800

7.1.1 Ventajas de las llave artificiales

• Cuando una llave primaria en forma natural tiene nulos, al seleccionar una llave artificial se le puede dar la característica de no nulo.

• A las llaves artificiales generalmente se les asigna un valor entero o un mnemónico fácil de manipular.

• Los índices sobre llaves artificiales ocupan menos espacio físico y generalmente son más eficientes.

• Las llaves artificiales son estables y se les puede controlar (a veces un concepto de la llave primaria natural puede perder significado, por ejemplo en la columna fecha_inicio del ejemplo anterior).

• Las llaves artificiales eliminan redundancia al escribirlas como llaves foráneas.

7.1.2 Desventajas de las llave artificiales

• A veces no tienen significado alguno para el usuario final y hacen más difícil el acceso directo a las tablas.

• Se aumenta el número de columnas de una tabla.

• Hay que hacer más encadenamientos (joins) cuando se traen o actualizan datos.

K5

Considerar llaves artificiales como llaves primarias Cuando:

(39)

• La llave primaria natural tiene el caso de valores: ◊ Tipo nulo. ◊ No únicos. ◊ Inestables. ◊ Complejos. ◊ Poco significativos. Lo deseable para una llave primaria es:

• Que sea estable.

• Corta y sencilla.

• Sin información descriptiva.

• Familiar para los usuarios finales.

La complejidad de una llave primaria se puede mirar desde dos aspectos:

• Relacional: por ejemplo que tenga muchos caracteres o que tenga muchas columnas y por lo tanto ser incómoda.

• Físico: Cantidad de espacio que se necesita para su manejo interno y su eficiencia. Por ejemplo la cantidad de espacio que se necesita para utilizarla como un índice o como llave foránea.

7.2 Datos compartidos en L

7.2.1 Supertablas

Tabla donde se tiene toda la información en columnas. Ventajas de las supertablas:

• Se necesitan menos encadenamientos (joins)

• Se necesitan menos llaves foráneas.

• Se necesitan menos tablas.

• Ejemplo:

EMPLEADO

empleado . . . actividad depto proc_pal nivel zona comisión

e1 . . . Secretaria d3 Word Básico null null

e2 . . . Vendedor d2 null null Centro 242.000

e3 . . . Vendedor d2 null null Sur null

e4 . . . Portero d1 null null null null

e5 . . . Secretaria d2 WP Intermedio null null

e6 . . . Secretaria d3 WS Avanzado null null

7.2.2 Subtablas

En varias tablas se tiene la información. Ventajas de las subtablas:

• Se aplica menos veces el concepto de nulo o no aplica.

• Generalmente necesitan menos espacio físico para su almacenamiento.

(40)

• Ejemplo:

EMPLEADO

empleado . . . nombre sexo esposo nivel zona comisión

e1 . . . Secretaria d3 Word Básico null null

e2 . . . Vendedor d2 null null Centro 242.000

e3 . . . Vendedor d2 null null Sur null

e4 . . . Portero d1 null null null null

e5 . . . Secretaria d2 WP Intermedio null null

e6 . . . Secretaria d3 WS Avanzado null null

VENDEDOR PROC_PALALBRA

# empleado zona comisión # empleado procesador nivel

e2 Centro 242.000 e1 Word Básico

e3 Sur null e5 WP Intermedio

e6 WS Avanzado

T5

Preferir el uso de subtablas sobre el de supertablas Excepciones:

• El costo de los encadenamientos (joins) es inaceptable.

• Al hacer supertablas se tienen pocos caso de nulo o ‘no aplica’.

7.3 Relaciones uno a uno, revisión

• Trabaja mejor con una sola tabla.

• Ventajas y desventajas semejantes al caso de datos compartidos en L, es decir, potencialmente reduce el número de encadenamientos (joins) y llaves foráneas, pero se suelen presentar casos de valores nulos y disminuye la flexibilidad del diseño.

• Mejor si:

◊ La mínima cardinalidad es también uno a uno y

◊ La cardinalidad es estable.

T6

Considerar una sola tabla cuando existan tablas con relación uno a uno

7.4 Datos en forma de vector

• Un vector es un atributo plural, donde el conjunto de valores válido siempre es el mismo.

(41)

• Normalmente se utiliza la implementación columnar.

• No se debe utilizar la implementación en forma de filas cuando no es razonable el número de filas.

• De hecho es el mismo caso que se presenta cuando se elabora el diseño básico: los atributos plurales se llevan a tablas dependientes.

• Ventajas del diseño utilizando la forma de filas:

◊ Generalmente ocupa mucho menos espacio de almacenamiento, es decir, es más compacta.

◊ La cantidad de trabajo, desde el punto de vista físico, es menor.

◊ Se necesitan menos tablas (cuando existen otros atributos singulares).

◊ Es la forma natural de presentar informes al usuario final.

• Ventajas del diseño utilizando la forma columnar:

◊ Es la forma natural como trabaja el modelo relacional.

◊ La mayoría de los atributos plurales se deben llevar a forma columnar, es decir, utilizando tablas dependientes.

◊ Más fácil de mantener, sobretodo cuando el vector cambia de longitud.

◊ Presenta ventajas cuando hay casos de valores nulos.

◊ Los procedimientos y/o funciones imp lementados por los DBMS generalmente trabajan mejor, porque existe una mejor compatibilidad. Además las sentencias SQL son más sencillas y la probabilidad de error que comete el usuario al escribirlas es menor.

• Ejemplo: número de estudiantes de Ingeniería Civil, Eléctrica, Mecánica, Química y de Sistemas matriculados por año.

Implementación:

EN FORMA DE FILA

# año civil eléctrica mecánica química sistemas

1995 1430 1020 2050 2570 500

1996 1870 990 1630 1200 380

EN FORMA DE COLUMNA

# año # carrera alumnos

1995 civil 1430 1995 eléctrica 1020 1995 mecánica 2050 1995 química 2570 1995 sistemas 500 1996 civil 1870 1996 eléctrica 990 1996 mecánica 1630 1996 química 1200 1996 sistemas 380

C5

Preferir la implementación de vectores utilizando forma columnar Excepciones (es decir, utilizar implementación en forma de fila por):

(42)

◊ Tamaño físico.

◊ Acceso del usuario.

◊ Número de tablas.

7.5 Sobrecarga de columnas

• Columna sobrecargada: cuando en una columna existen dos o más atributos.

• Existen tres casos importantes de columnas sobrecargadas: alternación, codificación y traslape.

7.5.1 Atributos alternos

• Dos o más atributos se alternan en diferentes filas de una columna.

• Es posible que columnas definidas así conduzcan a resultados que cualitativamente no tienen significado o sean erróneamente interpretados.

• La aparición de este tipo de columnas reflejan fallas de la etapa de análisis.

• Tener valores no comparables en una columna son causa de errores.

• Emplear nombres distintos de columnas para representar atributos diferentes y considerar la posibilidad de utilizar subtablas.

• En caso de utilizar supertablas, se definen tantas columnas como atributos diferentes se tengan y se preveé la utilización de valores nulos donde no aplique (los nulos son indeseables, pero son preferibles a tener atributos alternos).

Ejemplo: En la tabla ATR_ALT que se muestra, aparece una columna identificada como cantidad. Para los programadores significa la cantidad de líneas de código producidas por ellos en un mes y Para los vendedores significa la cantidad en pesos vendidos en un mes.

En este caso cantidad es un homónimo para representar dos cosas diferentes. No tendría significado hacer cálculos como suma o promedio sobre esta columna. Una posible solución sería definir dos atributos: uno para líneas_de_código y otro para

cantidad_en_pesos y asignárselos a las subentidades PROGRAMADOR y VENDEDOR. Otras soluciones posibles serían: definir dos subtablas separadas o crear una supertabla con valores nulos en los sitios donde no aplica el concepto.

ATR_ALT

# empleado ocupación cantidad

e1 Programador 2550 e2 Programador 1820 e3 Vendedor 300.000 e4 Programador 3278 e5 Vendedor 450.782

7.5.2 Atributos codificados

• Atributos con significado codificado no son claros, especialmente para programadores y usuarios.

• En atributos codificados generalmente se encuentran dos o más atributos en una sola columna.

• Se utiliza concatenación o codificación.

• Son esquemas incómodos y propensos a errores.

• Los programadores y usuarios deben entenderlos muy bien para codificarlos y decodificarlos apropiadamente.

(43)

• Es una buena solución, cuando en la columna que se aplica codificación sólo existe un atributo (pensando en ahorro de espacio en dispositivos para almacenamiento de datos).

• No es una solución deseable si la columna que se codifica tiene inmersos dos o más atributos.

• Ejemplos:

◊ De columna concatenada:

En la columna descripción se desea representar la combinación de características de transmisión de un vehículo y características de la caja de cambios:

CONCATENADA descripción 4ruedas/4velocidades 4ruedas/5velocidades 4ruedas/automática 2ruedas/4velocidades ◊ De columna codificada:

En la columna empleado se desea representar en tres posiciones digitales lo siguiente: Último dígito para representar el tipo de contrato, así:

si es par quiere decir que trabaja a comisión y si es impar que trabaja a salario fijo.

Primer y segundo dígito para un número secuencial. CODIFICADA empleado 325 672 744 827 ◊ Caso crítico:

Supongamos que en caso anterior más del sesenta por ciento (60%) son empleados a comisión. Entonces se decide que todos los empleados con código mayor que .... son a comisión (hay que aplicar un caso de excepción).

7.5.3 Valores traslapados

• Se presenta el caso de valores traslapados cuando en una columna existen valores que no son mutuamente excluyentes.

• Valores traslapados es equivalente a implementar atributos plurales como singulares.

• Ejemplo:

En la columna estado se quiere representar el estado en que está un estudiante en la universidad: estudiante con matrícula de honor, becario, con préstamo beca.

Podemos observar que un estudiante puede simultáneamente tener uno o más de esos estados. ESTUDIANTE

(44)

# código . . . . . estado 212432 . . . . . Matrícula de honor 233922 . . . . . Becario

243475 . . . . . Con préstamo beca 253963 . . . . . Becario

274937 . . . . . Becario

• Implementar atributos plurales en tablas dependientes FORMA_COLUMNAR

# código estado 212432 Matrícula de honor 212432 Becario

212432 Con préstamo beca 253963 Becario

274937 Becario

• Si el atributo plural es un vector, considerar una tabla con solución en forma de fila. FORMA_DE_FILA

# código matr_honor becario con_préstamo

212432 sí sí sí

253963 no sí no

274937 no sí no

7.6 Tratamiento general para columnas sobrecargadas

• Añadir una columna por cada atributo, cargar y actualizar el software.

• Separar información codificada en columnas separadas.

• Borrar la(s) columna(s) sobrecargada(s) y derivarla como sea necesario. Si no es derivable de la

información codificada en columnas, se deben mantener ambas. Esto causa redundancia pero es preferible al hecho de tener que constantemente codificar y decodificar.

C6

Evitar columnas con atributos alternos, codificados o traslapados

7.7 Sobrenormalización

• Descomponer tablas más allá de lo requerido por 3FN, para obtener mejor rendimiento.

• Pregunta: Qué nivel de sobrenormalización optimiza el rendimiento de una consulta crítica? Respuesta muy difícil de contestar en términos generales.

Referencias

Documento similar

Descripción: Devuelve el valor del atributo fecha Nombre: Get_Paciente (): string.. Descripción: Devuelve el valor del

U-Ranking cuenta con la colaboración del Ministe- rio de Universidades, al permitirnos el acceso al Sistema Integrado de Información Universitaria (SIIU). El SIIU es

El valor agregado 6 del indicador por universidad se pre- senta en una escala de 0 (mínimo valor obtenido por una universidad del sistema en ese indicador) a 100 (correspondiente

El segundo paso es elegir la comunidad autónoma o comunidades que se contemplan como lugares en los que cursar los estudios. Para ello, el usuario debe marcar las elegidas

[r]

SVP, EXECUTIVE CREATIVE DIRECTOR JACK MORTON

Social Media, Email Marketing, Workflows, Smart CTA’s, Video Marketing. Blog, Social Media, SEO, SEM, Mobile Marketing,

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas