Estructuras y Bases de Datos

Sistemas administradores de bases de datos

¿Qué es un DBMS? Data Base Management System

Es un software cuyo objetivo principal es proveer mayor control sobre la información. Subsana las deficiencias, limitantes y carencias del uso de archivos tradicionales. En un ambiente tradicional los programas interactúan directamente sobre los archivos de datos a través del sistema operativo. En un ambiente con DBMS los programas interactúan con él y este a su vez con los archivos de datos a través del sistema operativo.

Niveles de un DBMS

Interno

Representación de bajo nivel de toda la información de la base de datos. Registros internos, métodos de almacenamiento y de acceso a la información.

Conceptual

Esquema lógico de la base de datos (definición). Se aplican restricciones de seguridad e integridad.

Usuario

Vistas lógicas que el usuario percibe como información. El usuario puede ser un usuario final o un programador (el DBA (database administrator) es aparte).

Objetivos de un DBMS

Integridad

Estar seguros de que la información dentro de la base de datos esta correcta de acuerdo a ciertos parámetros de validación.

Lógica

Bitácora de control, unicidad de la transacción, mantiene la consistencia. Ejemplo:

BEGIN transaction
	Movimiento de retiro
	Actualiza retiro en C23
	Moviemiento de depósito
	Actualiza depósito en C24
END transaction

Si algún movimiento dentro de la transacción falla, los otros son cancelados.

Referencial

Que el campo de una tabla (llave externa) nunca haga referencia a un renglón de otra tabla (llave interna) que no exista.

Entidad

Nunca tener dos registros dentro de la misma tabla que sean idénticos, esto produce confusión en el proceso de selección.

Usuario

Conjunto de reglas que regulan el medio ambiente donde se desenvolverá el sistema (business rules). Pueden incluir procedimientos y políticas de seguridad.

Dominio

Poder controlar (restringir) los valores posibles (a un dominio) para un campo determinado de una relación (tabla).

Seguridad

Facilidades que provee la base de datos para controlar el acceso y la utilización de la información.

Del sistema operativo

Sistemas de seguridad que son parte de la arquitectura del sistema operativo sobre el cual funciona el DBMS: OS/2, VMS, DOS, UNIX, VM, MVS, etc. Dan protección de archivos y directorios así como controlan cuentas y usuarios.

Acceso a la información

Estructuras de datos que sirven para facilitarle al usuario sólo la información que requiere. Pueden ser vistas lógicas, tablas derivadas, subesquemas, esquemas del DBMS, columnas, tablas e incluso bases de datos completas.

Ejecución de comandos

Esquema que nos sirve para controlar los comandos que puede ejecutar el usuario sobre la información. Se regulan los comandos de SQL como Select, Insert, Update, Delete y Execute con directivas GRANT y REVOKE.

Independencia

Es la facilidad de modificar ciertas estructuras o criterios definidos en la base de datos sin repercusiones para los programas. Existen la independencia lógica, la física, la de integridad y la de distribución.

Módulos o sistemas donde opera el DBMS

Estructuras CDD

Diccionario de datos comunes, almacena información centralizada, ahí reside la definición de la base de datos.

Funciones de lenguaje

Definición DDL

Lenguaje de definición de datos, maneja las estructuras de la base de datos.

Manipulación DML

Lenguaje de manipulación de datos, realiza la explotación, actualización, borrado e inserción de datos en la base de datos.

Control DCL

Maneja las transacciones, los usuarios y los privilegios.

Programación

Interfaz para interactuar con lenguajes de programación externos al DBMS.

Operación y administración

Administración

Definición de cuestiones asociadas con las estructuras a nivel conceptual e interno de la base de datos.

Operación

Mantenimiento del medio ambiente óptimo para el funcionamiento del manejador de base de datos.

Archivo Log

Es un archivo donde se guardan las instrucciones que conforman una transacción lógica mientras se completa. Esto con el objetivo de preservar la integridad.

Precompilador

Parte integral del DBMS que se encarga de traducir los comandos del lenguaje específico del DBMS a instrucciones del lenguaje de programación donde se intercalan dichos comandos.

Esquema general de un DBMS

El usuario (final, programador u operador, recordar que el DBA es un caso particular), interactúa con los módulos DML (manipulación de datos) y DDL (definición de datos). Los módulos DML y DDL interactúan con el precompilador. El precompilador interactúa con el CDD (diccionario de datos) y con programas externos. Los programas externos interactúan con el DBMS y el sistema operativo. Por último el DBMS interactúa con el CDD, con el archivo log y con la base de datos.

Los componentes de un DBMS pueden variar dependiendo del modelo (jerárquico, redes o relacional) y del producto.

Modelos de bases de datos

Modelo jerárquico, red y relacional

Características, usos y mantenimiento

El modelo relacional de bases de datos

Se basa en el concepto lógico que nos indica que la información de un manejador de base de datos debe presentarsele al usuario en forma de tablas.

Cronología

1970 Codd define el modelo R
1974 IBM inicia el system R
1974 Primer artículo de SEQUEL
1977 SEQUEL2 (SQL)
1978 Primeras pruebas de R
1979 Liberación de Oracle
1981 Liberación de Ingres
1981 IBM anuncia SQL/DS
1982 ANSI forma X3HZ
1983 IBM anuncia DB2
1986 Se ratifica el SQL de ANSI
1986 Sybase introduce OLTP
1987 IBM define SAA/SQL
1987 X/Open (ISO) ratifica el SQL86
1987 IBM saca SAA, DB2, SQL/400 SQL/DS y EE DBM para OS/2
1988 SQL estándar de FIPS
1988 Microsoft anuncia su SQL
1990 ANSI/SQL2

Áreas principales

Un DBMS relacional debe dar un nivel de soporte de ciertos conceptos relacionales criticos que son: Estructura tabular, operadores tradicionales, operadores especiales, reglas de integridad y lógica de dominios. Se dividen en:

Estructuras de datos

Dominios relacionales: Relación o tabla, atributo o columna, tupla o entidad o renglón, llave primaria y llave externa. Las llaves pueden ser simples (un solo atributo) o compuestas (2 o más atributos). Existen además las tablas bases (parte de la estructura de la base de datos) y las tablas derivadas (vistas) que se crean a partir de tablas base.

Integridad
De la entidad

No se deben manejar valores nulos ni repetidos en la llave primaria.

Referencial

No se debe referenciar algo que no existe dentro de la base de datos (llaves externas).

Manipulación de datos
Álgebra relacional

Conjunto de operaciones para manipular información en un sistema relacional. Estos operadores deberán ser parte del sublenguaje de datos (SQL) del producto. El álgebra relacional se aplica sobre relaciones (tablas) y da como resultado relaciones (tablas).

Operadores Unión Es un operador tradicional, construye una relación a partir de dos relaciones concatenando todas las tuplas posibles de estas (elimina duplicados), C:=A Unión B.

Intersección Es un operador tradicional, construye una relación a partir de todas las tuplas que aparecen en las dos relaciones de entrada, C:=A Intersección B.

Diferencia Es un operador tradicional, construye una relación a partir de las tuplas que aparecen en A y no en B, C:=A Diferencia B.

Producto Es un operador tradicional, la relación resultante se compone de todas las combinaciones posibles de las columnas de ambas relaciones de entrada, C:=AB.

Select Selecciona tuplas de A de acuerdo a un criterio específico (lógico) y forma con ellas una nueva relación.

Project Selecciona columnas (atributos) de la relación A y forma con ellos una nueva relación.

Join La relación resultante C contiene todas las tuplas concatenadas de las dos relaciones de entrada (A y B) que satisfacen una cierta condición común.

		a1 b1	Join	b1 c1	=	a1 b1 c1
		a2 b2

Divide Toma dos relaciones, una binaria y otra unitaria, construye la relación de salida a partir de: Todos los valores de un atributo de la relación binaria cuyo otro atributo comprende todos los valores que se encuentran en la relación unitaria.

		a x	Divide	x	=	a
		a y		z		b
		a z
		b x
		b y
		b z

No se deben confundir el Select como concepto algebráico de la instrucción de SQL Select.

Asignación relacional

Cómo y dónde se guardan los resultados del álgebra relacional.

Contexto, Reglas de Codd

Sistema tabular, relacional mínimo, relacional completo o relacional total

0.- Todo sistema relacional debe manejar sus bases de datos a través de sus capacidades relacionales exclusivamente.

1.- Toda la información en una base de datos relacional se debe representar explícitamente en el nivel lógico en forma de tablas relacionales.

2.- Acceso garantizado: Todos y cada uno de los datos en una base de datos relacional deben poder accesarse a través de la combinación: Nombre de relación (Tabla), llave primaria (Renglón) y nombre atributo (Columna).

3.- Valores nulos: Todo manejador relacional debe poder representar y manipular valores nulos, utilizando para su representación un código específico.

	  V F N		  V F N
	V V F N		V V V V
	F F F F		F V F N
	N N F N AND	N V N N OR

4.- Catálogo relacional: La información sobre la base de datos debe estar representada en tablas para que podamos utilizar el mismo lenguaje para su administración.

5.- Sublenguaje de datos (SQL): Un manejador relacional debe soportar al menos un lenguaje, con una sintáxis formalmente definida, a través del cual podemos: Definir datos, definir vistas lógicas, manipular datos, controlar la integridad, controlar seguridad y realizar transacciones lógicas.

6.- Actualización de vistas: Un DBMS relacional debe tener un algoritmo al menos tan poderoso como el VU-1 para determinar si la vista lógica en cuestión es sujeta a inserciones o borrados de tuplas y si se pueden modificar columnas.

7.- Operaciones masivas: La capacidad del manejador de manipular una relación a través de un solo operando debe aplicar no solo al Select si no también al Insert, Delete y al Update.

8.- Independencia física: Los programas de aplicación deben permanecer sin cambios cuando se modifiquen, ya sea las representaciones de almacenamiento, o los métodos de acceso a la información (modelo físico).

9.- Independencia lógica: Los programas de aplicación deben permanecer sin cambios cuando se lleven a cabo modificaciones para preservar la información (modelo lógico).

10.- Independencia de integridad: Las reglas de integridad deben poder definirse en el lenguaje de datos y almacenarse en el catálogo del sistema relacional.

11.- Independencia de distribución: Los programas de aplicación no deben sufrir modificaciones cuando la información se distribuye en lugares físicamente diferentes. Esto debe ser transparente para el usuario.

12.- No subversión: Ninguna aplicación podrá accesar directamente la información en la base de datos por cuestiones de integridad. Toda aplicación deberá pasar a través de los controles de seguridad e integridad del DBMS.

Lo importante de un DBMS no es que sea relacional, si no que cumpla con las características de integridad, independencia y seguridad. Hay que evaluar no solo que el producto cumpla con las reglas de Codd, si no también que tan eficientemente las lleva a cabo.

Sublenguaje de datos (SQL, Structured Query Language)

Los paquetes, herramientas o programas que accesan al DBMS lo hacen mediantes instrucciones de SQL. En el SQL el usuario no indica dónde están los datos, ni los manipula uno por uno, el SQL es un lenguaje no-procedural.

¿Qué es SQL?

Es una herramienta para organizar y explotar información almacenada en una base de datos del tipo relacional. Sus funciones son: Consultas interactivas (ISQL), programación, administración de la base de datos, lenguaje cliente/servidor, soporte a bases de datos distribuidas y servir como gateway a otras bases de datos. Cumple el papel de sublenguaje de datos en el modelo relacional.

El SQL es la forma de comunicación con el motor de base de datos. El SQL es usado para manejar formas, generar reportes, programar aplicaciones, comunicar con otros equipos, bases de datos y otros manejadores.

Valores nulos

Debe existir una forma explícita de representar la ausencia de información en cualquier campo de la base de datos: NI (Nulo Inaplicable) y NA (Nulo Aplicable).

Tipos de SQL

Estático, que va al pre-compilador del DBMS y se define al crear la aplicación. Lo usan los paquetes de aplicación y los programas.

Dinámico, que va al optimizador del DBMS y se define al ejecutar la aplicación. Lo usan las herramientas de usuario.

El optimizador es parte integral del DBMS, su labor es analizar los comandos SQL y decide la mejor opción para accesar la información en función del catálogo de sistema (diccionario de la base de datos), el pre-compilador también lo usa.

Cursores

Estructura a través de la cual podemos accesar las tablas de una base de datos registro por registro, con SQL intercalado en un lenguaje de 3° generación.

Subqueries

Es la posibilidad de anidar varios queries en un mismo bloque de ejecución, es indispensable para tener un lenguaje estructurado.

Cliente/Servidor con SQL/DBMS

Front End: Interfaz de usuario (PC)

Front – Back : NetBios, IPX/SPX, Named Pipes
Back End: SQL/DBMS en el servidor

Front – MainFrame: TCP/IP, APPC, ISO/OSI
MainFrame: SQL/DBMS en el MainFrama

Comandos de SQL
Definición

A través de estos comandos creamos la base de datos, modificamos alguna de sus características o la borramos:

Create

CREATE TABLA productos
	pro_clave CHAR(6),
	pro_descri CHAR(20),
	pro_precio MONEY,
	pro_invent INTEGER

Drop

DROP TABLE productos

Alter

ALTER TABLE productos ADD pro_ventas MONEY
Manipulación

A través de estos comandos consultamos, modificamos o borramos la información dentro de la base de datos:

Select

SELECT pro_descri
FROM productos
WHERE pro_clave = "100345"

SELECT *
FROM productos

Insert

INSERT INTO productos (pro_clave , pro_descri, pro_precio, pro_invent)
VALUES ("100345","Un producto más",100.00,123)

Update

UPDATE productos
SET pro_estado = "A"
WHERE pro_clave = "100345"

Delete

DELETE FROM productos
WHERE pro_clave = "100345"
Control (DCL)

Manejamos la seguridad y los privilegios relacionados con la base de datos.

Grant

GRANT UPDATE, SELECT ON productos TO usuaio01

Revoke

REVOKE ALL ON productos TO usuario02

Commit Rollback

Análisis básico para bases de datos relacionales

Entidades

Personas, lugares, objetos, conceptos, actividades o eventos de interés para la empresa: EMPLOYEE, DEPARTAMENT, PROJECT.

Un tipo de entidad son un conjunto de cosas escritos en mayúsculas (EMPLOYEE), un ejemplo de entidad es una cosa particular escrita en minúscula (John Smith).

Las entidades se convierten en tablas en el diseño relacional.

E1 Buscar entidades en las entrevistas

Las entidades son sustantivos, pero no todos los sustantivos son entidades. Se deben ignorar sustantivos que denoten datos específicos o que no sean importantes para la empresa.

No se debe confundir una forma con la información que documenta.

E2 ¿Qué tipo de entidad?

Se verá en el análisis avanzado.

E3 Determinar llave primaria

La llave primaria identifica y distingue a los miembros de las entidades: EMPLOYEE_NUMBER, DEPARTAMENT_CODE.

Características generales: Única, conocida todo el tiempo.

Características deseables: Estable, controlada por el DBA, disponible para los usuarios, no describe información, corta, simple, evitar nombres.

E4 Decidir un nombre formal

Usar el singular del sustantivo (EMPLOYEE, DEPARTAMENT). Listar los nombres alternativos como sinónimos en el diccionario de datos. Eliminar homónimos.

E5 Escribir una descripción

Significados y usos en oraciones completas, incluír ejemplos y contra ejemplos.

Relaciones

Una oración acerca de dos entidades: EMPLOYEE MANAGE DEPARTAMENT, EMPLOYEE ASSIGN_TO PROJECT.

Un tipos de relación se escribe en mayúsculas: EMPLOYEE MANAGE DEPARTAMENT, un ejemplo de relación es una oración acerca de entidades en minúsculas: John Smith manage Administration.

Las relaciones se transforman en llaves foráneas en el diseño relacional.

R1 Buscar relaciones en entrevistas

Las relaciones son verbos, pero no todos los verbos son relaciones. Se deben ignorar verbos que describen procesos en lugar de verbos o que no son seguidos por la empresa.

Buscar relaciones implícitamente documentadas.

R2 ¿Qué tipo de relaciones?

Se verá en el análisis avanzado.

R3 Determinar la cardinalidad

Máxima

La cardinalidad de EMPLOYEE WORK_IN DEPARTAMENT es muchos-uno, ¿cuántos empleados pueden trabajar en un departamento? Muchos, ¿en cuántos departamentos puede un empleado trabajar? Al menos uno.

La cardinalidad de EMPLOYEE MANAGE DEPARTAMENT es uno-uno, ¿cuántos empleados pueden manejar un departamento? Al menos uno, ¿cuántos departamentos puede un empleado manejar? Al menos uno.

Mínima

La cardinalidad mínima de EMPLOYEE MANAGE DEPARTAMENT es uno-cero, ¿cuántos empleados deben manejar un departamento? Al menos uno, ¿cuántos departamentos debe manejar un empleado? Cero.

La cardinalidad es una regla especial de integridad y refleja la política de la empresa.

R4 Decidir un nombre formal

Usar la voz activa cuando sea posible, listar los sinónimos en el diccionario de datos y eliminar los homónimos. Los nombres de las relaciones incluyen nombres de entidades (o no cuando sean obvias).

EMPLOYEE ASSIGN_TO PROJECT, AGENT ASSIGN_TO CUSTOMER.

R5 Escribir una descripción

Usar oraciones completas, ejemplos y contra ejemplos.

Atributos

Una propiedad descriptiva de la entidad o de la relación.

EMPLOYEE		EMPLOYEE-------------->PROJECT
EMPLOYEE_NUMBER			ASSIGN_TO
SALARY_MOUNT			START_DATE
EXTENSION_NUMBER		ROLE_NAME

Padre: Entidad o relación que posee un atributo.

Tipo de atributo: Conjunto de valores (mayúsculas).

Ejemplo de atributo: Valor individual (minúsculas).

Los atributos se transforman en columnas en el diseño relacional.

A1 Buscar atributos en la entrevista

Los atributos son sustantivos que denotan datos específicos. NAME, DATE, QUANTITY, MONETARY VALUE.

A2 ¿Qué tipo de dato?

Los tipos de datos incluyen:

nombre: MONEY, LENGTH, QUANTITY
tipo físico: character, integer, float, binary
número de caracteres o dígitos
valores legales (COLOR IN [RED, GREEN, BLUE])
reglas de validación (AGE>=21)
valor por omisión (default)

A3 Determinar la cardinalidad

Los atributos tienen cardinalidad mínima y máxima

La cardinalidad de EXTENSION_NUMBER es muchos=máximo a cero=mínimo, ¿cuántas extensiones puede un empleado tener? Muchas, ¿cuántas extensiones debe un empleado tener? Cero.

Terminología: Singular Máximo uno, Optional Mínimo cero, Plural Máximo muchos, Required Mínimo uno.

A4 Buscar un nombre formal

El nombre formal del atributo deberá tener el formato: PARENTAL_QUALIFIER_DATATYPE, ejemplos: EMPLOYEE_FIRTS_NAME, ASSIGN_START_DATE o CUSTOMER_BALANCE_AMOUNT.

El nombre de padre puede evitarse para claridad en el contexto. Pueden usarse cero, uno o varios calificadores. El DATATYPE se toma de la lista estándar. Se deben eliminar homónimos y documentar en el diccionario de datos los sinónimos.

A5 Escribir una descripción

Usar frases completas, dar ejemplos y contra ejemplos. Especificar unidades (monetarias, distancia, tiempo, peso).

Diagrama entidad – relación

		M(0)		    M(0)
EMPLOYEE	------------------------PROJECT
EMPLOYEE_NUMBER		ASSIGN_TO	PROJECT_NUMBER
SS_NUMBER		ROLE_NAME	DESCRIPTION
FULL_NAME				BUDGET_AMOUNT
SEX						|1(0)
EXTENSION_NUMBER				|
|1		|M(0)				|BELONG_TO
| MANAGE	| WORK_IN			|
|1(0)		|1				|M
DEPARTAMENT				TASK
DEPT_NUMBER				PROJECT_NUMBER
DEPT_NAME				TASK_NAME
BUILDING_NUMBER				START_DATE
					STATUS

Análisis avanzado para bases de datos relacionales

Entidades

Las entidades dependientes no pueden existir sin su entidad padre. Las dependencias siempre tienen una relación BELONG_TO con su entidad padre, usualmente muchos a uno.

PROJECT		-------------------------  TASK
PROJECT_NUMBER	1	BELONG_TO	M  PROJECT_NUMBER
					   TASK_NAME

La llave primaria de las dependencias incluyen la llave padre y una columna descriptiva.

Subentidades

La subentidad es un subconjunto de otra entidad, llamada superentidad. Crear subentidades para subconjuntos importantes de una entidad, que tienen atributos especiales.

Entidad: EMPLOYEE, ejemplos AGENT, CLERK, SALARIED_EMPLOYEE, HOURLY_EMPLOYEE
Subentidad: PROGRAMMER, ejemplos APPLICATION_PROGRAMMER, SYSTEMS_PROGRAMMER

Herencia

La llave primaria, los atributos y las relaciones de la superentidad se aplican a todas sus subentidades y no viceversa.

EMPLOYEE			AGENT			SALARIED_EMPLOYEE
EMPLOYEE_NUMBER			COMMISION_AMOUNT
SS_NUMBER			TERRITORY_NAME		HOURLY_EMPLOYEE
FULL_NAME						OVERTIME_RATE
SEX				CLERK
EXTENSION_NUMBER		TYPING_SPEED		PROGRAMMER	APPL_PROGRAMMER
							LANGUAGE
							LEVEL_CODE	SYS_PROGRAMMER
									MACHINE_NAME

La relación ISA (is a, es un)

Existe siempre una relación ISA entre una subentidad y una superentidad. La cardinalidad es siempre máximo: 1-1 y mínimo: 1-0 (super-sub).

		EMPLOYEE----------------PROGRAMMER
			1    ISA    1(0)

No se documentará la relación ISA en el diccionario de datos o en el diagrama, siempre es asumida.

E2 ¿Qué clase de entidad?

Si no puede existir sin su padre, es dependiente y se debe documentar como BELONG_TO. Los subconjuntos importantes de una entidad con atributos especiales son subentidades, documentar la superentidad pero no la relación ISA.

E3 Determinar la llave primaria

La llave primaria de la dependencia incluye la llave de la entidad padre y una columna descriptiva. La llave primaria de la subentidad es heredada de la superentidad.

E7 Crear superentidades alrededor de entidades similares

Las entidades similares tienen muchos atributos en común. Asigna los atributos comunes a la superentidad, y los especiales a las subentidades.

Considera el uso de llaves primarias artificiales para nuevas superentidades.

EMPLOYEE	CUSTOMER		PERSON			EMPLOYEE
FULL_NAME	FULL_NAME		PERSON_ID		SALARY_AMOUNT
ADDRESS		ADDRESS			FULL_NAME		JOBCODE
BIRTH_DATE	BIRTH_DATE		ADDRESS
SALARY_AMOUNT	ACCOUNT_NUMBER		BIRTH_DATE		STOCKHOLDER
JOBCODE				--->
								CUSTOMER
STOCKHOLDER							ACCOUNT_NUMBER
FULL_NAME
ADDRESS

E8 Determina clases y clasifica atributos

EMPLOYEE		JOBCODE		WAGE_STATUS
EMPLOYEE_NUMBER
SS_NUMBER		AGENT		SALARIED_EMPLOYEE
FULL_NAME
			CLERK		HOURLY_EMPLOYEE

			PROGRAMMER SKILL_TYPE

			APPLICATIONS_PROGRAMMER
			SYSTEM_PROGRAMMER

Clase: Grupo de subentidades mutuamente excluyentes, alineadas verticalmente. Cada clase corresponde a la clasificación del atributo de la superentidad. Una superentidad puede tener muchas clases sin relacionarse.

Relaciones

Las relaciones N-way (n caminos) inmiscuyen más de dos entidades

		ROLE--IN--EMPLOYEE--ASSIGN_TO--PROJECT

Buscar oraciones con frases prepositivas que contienen una entidad.

Una three-way no es lo mismo que tres two-way:

			EMPLOYEE	ROLE		PROJECT
			smith		flunky		training
			smith		manager		sales
			jones		flunky		sales

EMPLOYEE	ROLE		EMPLOYEE	PROJECT		ROLE		PROJECT
smith		flunky		smith		training	flunky		traininig
smith		manager		smith		sales		manager		sales
jones		flunky		jones		sales		flunky		sales

			EMPLOYEE	ROLE		PROJECT
			smith		flunky		training
			smith		manager		sales
			jones		flunky		sales
			smith		flunky		sales

Relaciones recursivas

La relación recursiva es una frase acerca de una entidad: EMPLOYEE SUPERVISE EMPLOYEE.

Documentar los roles de la primera y la segunda entidad en la descripción, ejemplo: SUPERVISOR, SUBORDINATE.

R2 ¿Qué tipo de relación?

Las frases con una oraciòn proposicional conteniendo una entidad son relaciones tres-caminos. No confundir las tres-caminos con dos de dos-caminos. Se deben documentar los roles en la relaciòn recursiva.

R7 Eliminar las relaciones indirectas

Una relación indirecta es redundante a otras dos relaciones. Usualmente se excluyen las relaciones indirectas del diccionario.

		EMPLOYEE---------DEPARTAMENT---------DIVISION
		    |	 WORK_IN	    BELONG_TO   |
		    |					|
		    --------------ASSIGN_TO--------------

¿Relaciones o atributos?

Cuando un atributo iguala la llave primaria de una entidad, es en realidad una relación.

				EMPLOYEE
				DEPARTAMENT_CODE
				      |
			EMPLOYEE----WORK_IN------DEPARTAMENT
				      |
				DEPARTAMENT
				EMPLOYEE_NUMBER

¿Relaciones o entidades?

Los verbos pueden substituirse por sustantivos y viceversa. Si la llave primaria coincide con la llave primaria de otras entidades, es una relación.

	EMPLOYEE--------PROJECT		EMPLOYEE	PROJECT
	  |	ASSIGN_TO		    |---ASSIGMENT---|
	  |IN			----->		    |
	ROLE					   ROLE

R8 No confundir relaciones con entidades o atributos

Los atributos que designan entidades son relaciones. Si la llave primaria de una entidad coincide con otras llaves primarias, podría ser una relación.

Atributos

Usualmente la relación padre es intuitivamente obvia, si no se está seguro se deberá buscar:

- Posesivo: El salario del empleaado.
- Verbo poseer: Los empleados tienen< códigos de trabajo.

- Preposición: El salario de el eempleado.

A1 Buscar atributos en la entrevista

Verificar la entidad padre o la relación. Buscar una preposición, un verbo de posesión o una voz posesiva.

A7 Reasignar los atributos indirectos

Un atributo indirecto no es en realidad una propiedad de su padre:

EMPLOYEE		--->	EMPLOYEE----------------DEPARTAMENT
BUILDING_NUMBER				     WORK_IN	BUILDING_NUMBER

Un atributo indirecto es un caso especial de relación indirecta.

A8 Documentar la fórmula derivada (si la hay)

Un atributo derivable es calculado en base a otros atributos.

	COMPENSATION_AMOUNT = HOURLY_WAGE_AMOUNT * 2000 + BONUS_AMOUNT

Un atributo primitivo debe ser entrado directamente.
Documentar la fórmula si el atributo es importante o la derivación es obscura.
Considerar la eliminación de atributos derivables.

A9 Convertir los atributos opcionales en subentidades

Los atributos opcionales tienen una cardinalidad mínima de cero.

	EMPLOYEE		EMPLOYEE
	FULL_NAME		FULLNAME
	ADDRESS			ADDRESS
	SALARY_AMOUNT	---->	SALARY_AMOUNT
	COMMISSION (o)
	TERRITORY (o)		AGENT
				COMMISSION
				TERRITORY

Los atributos son opcionales cuando su valor es a veces desconocido o inaplicable.

E6 R6 A6 Documentar estados pasados o futuros

Muchas entidades, relaciones y atributos se refieren a la situación actual, si estados pasados o futuros se necesitan entonces agregar:

Para entidades o relaciones añadir DATE o DATETIME como atributo para estados puntuales o continuos y START_DATE y END_DATE para estados segmentados.

Los atributos se deben hacer compuestos (SALARY_AMOUNT, EFFECTIVE_DATE).

Se deben documentar los estados pasados y futuros en la descripción.

Diseño relacional básico

					  M(0) M(0)
EMPLOYEE			JOBCODE   --------- PROJECT
EMPLOYEE_NUMBER				  ASSIGN_TO PROJECT_NAME
SS_NUMBER			AGENT	  ROLE_NAME DESCRIPTION
FULL_NAME			TERRITORY	    BUDGET_AMOUNT
SEX				COMMISSION		| 1(0)
EXTENSION_NUMBER (m)					| BELONG_TO
				CLERK			| M
						    TASK
				PROGRAMMER	    PROJECT_NAME
				LANGUAGE	    TASK_NAME
				LEVEL		    START_DATE
				   1(0)		    STATUS
  |1		|M(0)	    1(0) | ---|
  |MANAGE	|WORK_IN	 |    |MARRY
  |1(0)		|1		 ------
DEPARTAMENT
DEPT_NUMBER
DEPT_NAME
BUILDING_NUMBER

Diseño lógico

En el diseño básico relacional, cada entidad se transforma en una tabla. Las tablas son mezcladas o combinadas para mejorar el desempeño en el diseño relacional avanzado.

T1 Las entidades independientes se transforman en tablas independientes
	PROJECT
	PROJECT_NAME	DESCRIPTION	BUDGET_AMOUNT
	    P1		xyz Database	19000
	    P2		gizmo test	48000
	    P3		widget sales	4000

La llave primaria no contiene llaves foráneas.

T2 las entidades dependientes se transforman en tablas dependientes
	TASK
	PROJECT_NAME	TASK_NAME	START_DATE	STATUS
	    P1		Requirements	10/29/85	complete
	    P1		Logical design	03/24/87	active
	    P1		Physical design	03/29/87	proposed
	    P3		Sales report	null		proposed

La llave foránea hace referencia a la tabla padre, es una relación BELONG_TO. La llave primaria contiene esta llave foránea y otras columnas adicionales. En la llave foránea no se permiten nulos ni defaults. El borrado de datos usualmente se hace en cascada, o se restringe del todo.

T3 Las subentidades se transforman en subtablas
	PROGRAMMER
	EMPLOYEE_NUMBER	LANGUAGE	LEVEL
	e1		PL/1		beginner
	e5		Fortran		intermediate
	e6		Cobol		advanced

La llave foránea hace referencia a la tabla padre, es una relación ISA. La llave primaria es exactamente igual a la llave foránea. En la llave foránea no se permiten nulos ni defaults. El borrado de datos usualmente se hace en cascada, o se restringe del todo.

La clasificación de las columnas en la supertabla es recomendada si se desean eliminar las búsquedas en la subtabla y evitar la redundancia de los datos en la subtabla:

	EMPLOYEE
	EMPLOYEE_NUMBER	...	JOBCODE	DEPT# LANGUAGE	LEVEL	TERRITORY
		e1		program	d3	Pl/1	begin	null
		e2		agent	d2	null	null	Texas
		e3		agent	d2	null	null	Bulgaria
		e4		clerk	d1	null	null	null
		e5		program	d2	Fortran	interm	null
		e6		program	d3	Cobol	advanc	null
Las relaciones se transforman en llaves foráneas

El nombre de la llave foránea será el mismo del de la llave primaria, solo se agregará un calificador si se necesita. Se deben usar nombres con significado (MANAGER, SPOUSE):

	EMPLOYEE       ---|MARRY		PROJECT
	EMPLOYEE_NUMBER---|			PROJECT_NUMBER
	|	|					|
	|MANAGE |WORK_IN				| BELONG_TO
	|	|					|
	DEPARTAMENT				TASK
	DEPARTAMENT_NUMBER			PROJECT_NUMBER
						TASK_NAME
Relaciones muchos-uno
		EMPLOYEE-----------DEPARTAMENT
			M WORK_IN 1

Diseño erróneo:

	DEPARTAMENT
	DEPT_NUMBER	DEPT_NAME	BUILDING	MANAGER	STAFF
		d1	Finance		139		e4	e4
		d2	Marketing	200		e3	e2, e3, e5
		d3	research	360		e6	e1, e5
		d4	legal		145		null	null
R1 Muchos-uno, poner la llave foránea en la tabla “muchos”

La llave primaria debe ser singular porque las tablas son normalizadas.

	EMPLOYEE
	EMPL_NUMBER	NAME		SEX	SPOUSE JOBCODE	DEPT_NUMBER
	e1		Ronald Reagan	male	e2	program	d3
	e2		Nancy Reagan	female	e1	agent	d2
	e3		Dick Butkus	male	null	agent	d2
	e4		Humphrey Bugart	male	e5	clerk	d1
	e5		Lauren Bacall	female	e4	program	d2
	e6		Maggie Thatcher	female	null	program	d3
R2 Uno-uno, poner la llave foránea en la tabla con menos renglones

Esto reduce o elimina los valores nulos.

		[DEPARTAMENT]	MANAGE	[EMPLOYEE]
		   pocos		  muchos
		Aquì va la llave
R3 Muchos-muchos, transformarlas en tablas asociativas
	EMPLOYEE	1	M	     M		1 PROJECT
	EMPLOYEE_NUMBER --------- ASSIGNT_TO ------------ PROJECT_NUMBER
				  EMPLOYEE_NUMBER
				  PROJECT_NUMBER
				  ROLE_NAME

	ASSIGN_TO
	EMPLOYEE_NUMBER	PROJECT_NUMBER	ROLE_NAME
	e1		p1		Supervisor
	e1		p3		Scientist
	e3		p2		null
	e5		p3		Flunky

Dos llaves foráneas sobre la misma tabla se refieren a dos tablas relacionadas. La llave primaria está compuesta de las llaves foráneas, podría contener columnas adicionales. No se permiten nulos ni defaults en la llave foránea, el borrado es en cascada o no se restringe del todo.

R4 la relación tres-caminos se transforma en tabla asociativa

Como en la relación muchos-muchos la llave primaria contiene tres o más llaves foráneas.

		[EMPLOYEE] ASSIGN_TO [PROJECT]
			     IN
			   [ROLE]

	ROLE
	ROLE_NUMBER	ROLE_NAME	RATE
	r1		supervisor	60.00
	r2		scientist	25.50
	r3		flunky		9.95

	ASSIGN_TO
	EMPL_NUMBER	PROJ_NUMBER	ROLE_NUMBER
	e1		p1		r1
	e1		p3		r2
	e3		p2		r1
	e5		p3		r3

0 Responses to “CONTENIDO DE ESTRUCTURA DE BASE DE DATOS”



  1. Dejar un comentario

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




abril 2014
L M X J V S D
« jun    
 123456
78910111213
14151617181920
21222324252627
282930  

Meses


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: