martes, 11 de octubre de 2011

Modelo Logico



SEMANA 5

MODELO LÓGICO
VIII Diseño lógico de bases de datos
En este capítulo se describen los pasos para llevar a cabo el diseño lógico. Ya que aquí se trata el diseño de bases de datos relacionales, en esta etapa se obtiene un conjunto de relaciones (tablas) que representen los datos de interés. Este conjunto de relaciones se valida mediante la normalización, técnica que se estudia al final del capítulo.
 Introducción
El objetivo del diseño lógico es convertir los esquemas conceptuales locales en un esquema lógico global que se ajuste al modelo de SGBD sobre el que se vaya a implementar el sistema. Mientras que el objetivo fundamental del diseño conceptual es la compleción y expresividad de los esquemas conceptuales locales, el objetivo del diseño lógico es obtener una representación que use, del modo más eficiente posible, los recursos que el modelo de SGBD posee para estructurar los datos y para modelar las restricciones
Los modelos de bases de datos más extendidos son el modelo relacional, el modelo de red y el modelo jerárquico. El modelo orientado a objetos es también muy popular, pero no existe un modelo estándar orientado a objetos.
El modelo relacional (y los modelos previos) carecen de ciertos rasgos de abstracción que se usan en los modelos conceptuales. Por lo tanto, un primer paso en la fase del diseño lógico consistirá en la conversión de esos mecanismos de representación de alto nivel en términos de las estructuras de bajo nivel disponibles en el modelo relacional.


Metodología de diseño lógico en el modelo relacional
La metodología que se va a seguir para el diseño lógico en el modelo relacional consta de dos fases, cada una de ellas compuesta por varios pasos que se detallan a continuación.
·        Construir y validar los esquemas lógicos locales para cada vista de usuario.
1.      Convertir los esquemas conceptuales locales en esquemas lógicos locales.
2.      Derivar un conjunto de relaciones (tablas) para cada esquema lógico local.
3.      Validar cada esquema mediante la normalización.
4.      Validar cada esquema frente a las transacciones del usuario.
5.      Dibujar el diagrama entidad-relación.
6.      Definir las restricciones de integridad.
7.      Revisar cada esquema lógico local con el usuario correspondiente.
·        Construir y validar el esquema lógico global.
8.      Mezclar los esquemas lógicos locales en un esquema lógico global.
9.      Validar el esquema lógico global.
10.  Estudiar el crecimiento futuro.
11.  Dibujar el diagrama entidad-relación final.
12.  Revisar el esquema lógico global con los usuarios.
En la primera fase, se construyen los esquemas lógicos locales para cada vista de usuario y se validan. En esta fase se refinan los esquemas conceptuales creados durante el diseño conceptual, eliminando las estructuras de datos que no se pueden implementar de manera directa sobre el modelo que soporta el SGBD, en el caso que nos ocupa, el modelo relacional. Una vez hecho esto, se obtiene un primer esquema lógico que se valida mediante la normalización y frente a las transacciones que el sistema debe llevar a cabo, tal y como se refleja en las especificaciones de requisitos de usuario. El esquema lógico ya validado se puede utilizar como base para el desarrollo de prototipos. Una vez finalizada esta fase, se dispone de un esquema lógico para cada vista de usuario que es correcto, comprensible y sin ambigüedad.
1.  Convertir los esquemas conceptuales locales en esquemas lógicos locales
En este paso, se eliminan de cada esquema conceptual las estructuras de datos que los sistemas relacionales no modelan directamente:
(a)  
Eliminar las relaciones de muchos a muchos, sustituyendo cada una de ellas por una nueva entidad intermedia y dos relaciones de uno a muchos de esta nueva entidad con las entidades originales. La nueva entidad será débil, ya que sus ocurrencias dependen de la existencia de ocurrencias en las entidades originales.
(b)  
Eliminar las relaciones entre tres o más entidades, sustituyendo cada una de ellas por una nueva entidad (débil) intermedia que se relaciona con cada una de las entidades originales. La cardinalidad de estas nuevas relaciones binarias dependerá de su significado.
(c)
Eliminar las relaciones recursivas, sustituyendo cada una de ellas por una nueva entidad (débil) y dos relaciones binarias de esta nueva entidad con la entidad original. La cardinalidad de estas relaciones dependerá de su significado.
(d)  
Eliminar las relaciones con atributos, sustituyendo cada una de ellas por una nueva entidad (débil) y las relaciones binarias correspondientes de esta nueva entidad con las entidades originales. La cardinalidad de estas relaciones dependerá del tipo de la relación original y de su significado.
(e)  
Eliminar los atributos multievaluados, sustituyendo cada uno de ellos por una nueva entidad (débil) y una relación binaria de uno a muchos con la entidad original.
(f)
Revisar las relaciones de uno a uno, ya que es posible que se hayan identificado dos entidades que representen el mismo objeto (sinónimos). Si así fuera, ambas entidades deben integrarse en una sola.
(g)  
Eliminar las relaciones redundantes. Una relación es redundante cuando se puede obtener la misma información que ella aporta mediante otras relaciones. El hecho de que haya dos caminos diferentes entre dos entidades no implica que uno de los caminos corresponda a una relación redundante, eso dependerá del significado de cada relación.
Una vez finalizado este paso, es más correcto referirse a los esquemas conceptuales locales refinados como esquemas lógicos locales, ya que se adaptan al modelo de base de datos que soporta el SGBD escogido.
2.  Derivar un conjunto de relaciones (tablas) para cada esquema lógico local
En este paso, se obtiene un conjunto de relaciones (tablas) para cada uno de los esquemas lógicos locales en donde se representen las entidades y relaciones entre entidades, que se describen en cada una de las vistas que los usuarios tienen de la empresa. Cada relación de la base de datos tendrá un nombre, y el nombre de sus atributos aparecerá, a continuación, entre paréntesis. El atributo o atributos que forman la clave primaria se subrayan. Las claves ajenas, mecanismo que se utiliza para representar las relaciones entre entidades en el modelo relacional, se especifican aparte indicando la relación (tabla) a la que hacen referencia.
A continuación, se describe cómo las relaciones (tablas) del modelo relacional representan las entidades y relaciones que pueden aparecer en los esquemas lógicos.
(a)  
Entidades fuertes. Crear una relación para cada entidad fuerte que incluya todos sus atributos simples. De los atributos compuestos incluir sólo sus componentes.
Cada uno de los identificadores de la entidad será una clave candidata. De entre las claves candidatas hay que escoger la clave primaria; el resto serán claves alternativas. Para escoger la clave primaria entre las claves candidatas se pueden seguir estas indicaciones:
·        Escoger la clave candidata que tenga menos atributos.
·        Escoger la clave candidata cuyos valores no tengan probabilidad de cambiar en el futuro.
·        Escoger la clave candidata cuyos valores no tengan probabilidad de perder la unicidad en el futuro.
·        Escoger la clave candidata con el mínimo número de caracteres (si es de tipo texto).
·        Escoger la clave candidata más fácil de utilizar desde el punto de vista de los usuarios.
(b)  
Entidades débiles. Crear una relación para cada entidad débil incluyendo todos sus atributos simples. De los atributos compuestos incluir sólo sus componentes. Añadir una clave ajena a la entidad de la que depende. Para ello, se incluye la clave primaria de la relación que representa a la entidad padre en la nueva relación creada para la entidad débil. A continuación, determinar la clave primaria de la nueva relación.
(c)
Relaciones binarias de uno a uno. Para cada relación binaria se incluyen los atributos de la clave primaria de la entidad padre en la relación (tabla) que representa a la entidad hijo, para actuar como una clave ajena. La entidad hijo es la que participa de forma total (obligatoria) en la relación, mientras que la entidad padre es la que participa de forma parcial (opcional). Si las dos entidades participan de forma total o parcial en la relación, la elección de padre e hijo es arbitraria. Además, en caso de que ambas entidades participen de forma total en la relación, se tiene la opción de integrar las dos entidades en una sola relación (tabla). Esto se suele hacer si una de las entidades no participa en ninguna otra relación.
(d)  
Relaciones binarias de uno a muchos. Como en las relaciones de uno a uno, se incluyen los atributos de la clave primaria de la entidad padre en la relación (tabla) que representa a la entidad hijo, para actuar como una clave ajena. Pero ahora, la entidad padre es la de "la parte del muchos" (cada padre tiene muchos hijos), mientras que la entidad hijo es la de "la parte del uno" (cada hijo tiene un solo padre).
(e)  
Jerarquías de generalización. En las jerarquías, se denomina entidad padre a la entidad genérica y entidades hijo a las subentidades. Hay tres opciones distintas para representar las jerarquías. La elección de la más adecuada se hará en función de su tipo (total/parcial, exclusiva/superpuesta).
1.      Crear una relación por cada entidad. Las relaciones de las entidades hijo heredan como clave primaria la de la entidad padre. Por lo tanto, la clave primaria de las entidades hijo es también una clave ajena al padre. Esta opción sirve para cualquier tipo de jerarquía, total o parcial y exclusiva o superpuesta.
2.      Crear una relación por cada entidad hijo, heredando los atributos de la entidad padre. Esta opción sólo sirve para jerarquías totales y exclusivas.
3.      Integrar todas las entidades en una relación, incluyendo en ella los atributos de la entidad padre, los atributos de todos los hijos y un atributo discriminativo para indicar el caso al cual pertenece la entidad en consideración. Esta opción sirve para cualquier tipo de jerarquía. Si la jerarquía es superpuesta, el atributo discriminativo será multievaluado.
Una vez obtenidas las relaciones con sus atributos, claves primarias y claves ajenas, sólo queda actualizar el diccionario de datos con los nuevos atributos que se hayan identificado en este paso.
3.  Validar cada esquema mediante la normalización
La normalización se utiliza para mejorar el esquema lógico, de modo que satisfaga ciertas restricciones que eviten la duplicidad de datos. La normalización garantiza que el esquema resultante se encuentra más próximo al modelo de la empresa, que es consistente y que tiene la mínima redundancia y la máxima estabilidad.
La normalización es un proceso que permite decidir a qué entidad pertenece cada atributo. Uno de los conceptos básicos del modelo relacional es que los atributos se agrupan en relaciones (tablas) porque están relacionados a nivel lógico. En la mayoría de las ocasiones, una base de datos normalizada no proporciona la máxima eficiencia, sin embargo, el objetivo ahora es conseguir una base de datos normalizada por las siguientes razones:
·        Un esquema normalizado organiza los datos de acuerdo a sus dependencias funcionales, es decir, de acuerdo a sus relaciones lógicas.
·        El esquema lógico no tiene porqué ser el esquema final. Debe representar lo que el diseñador entiende sobre la naturaleza y el significado de los datos de la empresa. Si se establecen unos objetivos en cuanto a prestaciones, el diseño físico cambiará el esquema lógico de modo adecuado. Una posibilidad es que algunas relaciones normalizadas se des normalicen. Pero la des normalización no implica que se haya malgastado tiempo normalizando, ya que mediante este proceso el diseñador aprende más sobre el significado de los datos. De hecho, la normalización obliga a entender completamente cada uno de los atributos que se han de representar en la base de datos.
·        Un esquema normalizado es robusto y carece de redundancias, por lo que está libre de ciertas anomalías que éstas pueden provocar cuando se actualiza la base de datos.
·        Los equipos informáticos de hoy en día son mucho más potentes, por lo que en ocasiones es más razonable implementar bases de datos fáciles de manejar (las normalizadas), a costa de un tiempo adicional de proceso.
·        La normalización produce bases de datos con esquemas flexibles que pueden extenderse con facilidad.
El objetivo de este paso es obtener un conjunto de relaciones que se encuentren en la forma normal de Boyce-Codd. Para ello, hay que pasar por la primera, segunda y tercera formas normales.

4.  Validar cada esquema frente a las transacciones del usuario
El objetivo de este paso es validar cada esquema lógico local para garantizar que puede soportar las transacciones requeridas por los correspondientes usuarios. Estas transacciones se encontrarán en las especificaciones de requisitos de usuario. Lo que se debe hacer es tratar de realizar las transacciones de forma manual utilizando el diagrama entidad-relación, el diccionario de datos y las conexiones que establecen las claves ajenas de las relaciones (tablas). Si todas las transacciones se pueden realizar, el esquema queda validado. Pero si alguna transacción no se puede realizar, seguramente será porque alguna entidad, relación o atributo no se ha incluido en el esquema.
5.  Dibujar el diagrama entidad-relación
En este momento, se puede dibujar el diagrama entidad-relación final para cada vista de usuario que recoja la representación lógica de los datos desde su punto de vista. Este diagrama habrá sido validado mediante la normalización y frente a las transacciones de los usuarios.


6.  Definir las restricciones de integridad
Las restricciones de integridad son reglas que se quieren imponer para proteger la base de datos, de modo que no pueda llegar a un estado inconsistente. Hay cinco tipos de restricciones de integridad.
(a)  
Datos requeridos. Algunos atributos deben contener valores en todo momento, es decir, no admiten nulos.
(b)  
Restricciones de dominios. Todos los atributos tienen un dominio asociado, que es el conjunto los valores que cada atributo puede tomar.
(c)
Integridad de entidades. El identificador de una entidad no puede ser nulo, por lo tanto, las claves primarias de las relaciones (tablas) no admiten nulos.
(d)  
Integridad referencial. Una clave ajena enlaza cada tupla de la relación hijo con la dupla de la relación padre que tiene el mismo valor en su clave primaria. La integridad referencial dice que si una clave ajena tiene un valor (si es no nula), ese valor debe ser uno de los valores de la clave primaria a la que referencia. Hay varios aspectos a tener en cuenta sobre las claves ajenas para lograr que se cumpla la integridad referencial.
1.      ¿Admite nulos la clave ajena? Cada clave ajena expresa una relación. Si la participación de la entidad hijo en la relación es total, entonces la clave ajena no admite nulos; si es parcial, la clave ajena debe aceptar nulos.
2.      ¿Qué hacer cuando se quiere borrar una ocurrencia de la entidad padre que tiene algún hijo? O lo que es lo mismo, ¿qué hacer cuando se quiere borrar una dupla que está siendo referenciada por otra dupla a través de una clave ajena? Hay varias respuestas posibles:
o        Restringir: no se pueden borrar duplas que están siendo referenciadas por otras duplas.
o        Propagar: se borra la tupla deseada y se propaga el borrado a todas las tuplas que le hacen referencia.
o        Anular: se borra la tupla deseada y todas las referencias que tenía se ponen, automáticamente, a nulo (esta respuesta sólo es válida si la clave ajena acepta nulos).
O        Valor por defecto: se borra la tupla deseada y todas las referencias toman, automáticamente, el valor por defecto (esta respuesta sólo es válida si se ha especificado un valor por defecto para la clave ajena).
O        No comprobar: se borra la tupla deseada y no se hace nada para garantizar que se sigue cumpliendo la integridad referencial.
3.      ¿Qué hacer cuando se quiere modificar la clave primaria de una tupla que está siendo referenciada por otra tupla a través de una clave ajena? Las respuestas posibles son las mismas que en el caso anterior. Cuando se escoge propagar, se actualiza la clave primaria en la tupla deseada y se propaga el cambio a los valores de clave ajena que le hacían referencia.
(e)  
Reglas de negocio. Cualquier operación que se realice sobre los datos debe cumplir las restricciones que impone el funcionamiento de la empresa.
Todas las restricciones de integridad establecidas en este paso se deben reflejar en el diccionario de datos para que puedan ser tenidas en cuenta durante la fase del diseño físico.
7.  Revisar cada esquema lógico local con el usuario correspondiente
Para garantizar que cada esquema lógico local es una fiel representación de la vista del usuario lo que se debe hacer es comprobar con él que lo reflejado en el esquema y en la documentación es correcto y está completo.
Relación entre el esquema lógico y los diagramas de flujo de datos
El esquema lógico refleja la estructura de los datos a almacenar que maneja la empresa. Un diagrama de flujo de datos muestra cómo se mueven los datos en la empresa y los almacenes en donde se guardan. Si se han utilizado diagramas de flujo de datos para modelar las especificaciones de requisitos de usuario, se pueden utilizar para comprobar la consistencia y completitud del esquema lógico desarrollado. Para ello:
·        Cada almacén de datos debe corresponder con una o varias entidades completas.
·        Los atributos en los flujos de datos deben corresponder a alguna entidad.
Los esquemas lógicos locales obtenidos hasta este momento se integrarán en un solo esquema lógico global en la siguiente fase para modelar los datos de toda la empresa.
8.  Mezclar los esquemas lógicos locales en un esquema lógico global
En este paso, se deben integrar todos los esquemas locales en un solo esquema global. En un sistema pequeño, con dos o tres vistas de usuario y unas pocas entidades y relaciones, es relativamente sencillo comparar los esquemas locales, mezclarlos y resolver cualquier tipo de diferencia que pueda existir. Pero en los sistemas grandes, se debe seguir un proceso más sistemático para llevar a cabo este paso con éxito:
1.      Revisar los nombres de las entidades y sus claves primarias.
2.      Revisar los nombres de las relaciones.
3.      Mezclar las entidades de las vistas locales.
4.      Incluir (sin mezclar) las entidades que pertenecen a una sola vista de usuario.
5.      Mezclar las relaciones de las vistas locales.
6.      Incluir (sin mezclar) las relaciones que pertenecen a una sola vista de usuario.
7.      Comprobar que no se ha omitido ninguna entidad ni relación.
8.      Comprobar las claves ajenas.
9.      Comprobar las restricciones de integridad.
10.  Dibujar el esquema lógico global.
11.  Actualizar la documentación.
9.  Validar el esquema lógico global
Este proceso de validación se realiza, de nuevo, mediante la normalización y mediante la prueba frente a las transacciones de los usuarios. Pero ahora sólo hay que normalizar las relaciones que hayan cambiado al mezclar los esquemas lógicos locales y sólo hay que probar las transacciones que requieran acceso a áreas que hayan sufrido algún cambio.
10.       Estudiar el crecimiento futuro
En este paso, se trata de comprobar que el esquema obtenido puede acomodar los futuros cambios en los requisitos con un impacto mínimo. Si el esquema lógico se puede extender fácilmente, cualquiera de los cambios previstos se podrá incorporar al mismo con un efecto mínimo sobre los usuarios existentes.
11.       Dibujar el diagrama entidad-relación final
Una vez validado el esquema lógico global, ya se puede dibujar el diagrama entidad-relación que representa el modelo de los datos de la empresa que son de interés. La documentación que describe este modelo (incluyendo el esquema relacional y el diccionario de datos) se debe actualizar y completar.
12.       Revisar el esquema lógico global con los usuarios
Una vez más, se debe revisar con los usuarios el esquema global y la documentación obtenida para asegurarse de que son una fiel representación de la empresa.
Normalización
La normalización es una técnica para diseñar la estructura lógica de los datos de un sistema de información en el modelo relacional, desarrollada por E. F. Cód. en 1972. Es una estrategia de diseño de abajo a arriba: se parte de los atributos y éstos se van agrupando en relaciones (tablas) según su afinidad. Aquí no se utilizará la normalización como una técnica de diseño de bases de datos, sino como una etapa posterior a la correspondencia entre el esquema conceptual y el esquema lógico, que elimine las dependencias entre atributos no deseadas. Las ventajas de la normalización son las siguientes:
·        Evita anomalías en inserciones, modificaciones y borrados.
·        Mejora la independencia de datos.
·        No establece restricciones artificiales en la estructura de los datos.
Uno de los conceptos fundamentales en la normalización es el de dependencia funcional. Una dependencia funcional es una relación entre atributos de una misma relación (tabla). Si e son atributos de la relación, se dice que es funcionalmente dependiente de (se denota por) si cada valor de tiene asociado un solo valor de ( e pueden constar de uno o varios atributos). A se le denomina determinante, ya que determina el valor de . Se dice que el atributo es completamente dependiente de si depende funcionalmente de y no depende de ningún subconjunto.
La dependencia funcional es una noción semántica. Si hay o no dependencias funcionales entre atributos no lo determina una serie abstracta de reglas, sino, más bien, los modelos mentales del usuario y las reglas de negocio de la organización o empresa para la que se desarrolla el sistema de información. Cada dependencia funcional es una clase especial de regla de integridad y representa una relación de uno a muchos.
En el proceso de normalización se debe ir comprobando que cada relación (tabla) cumple una serie de reglas que se basan en la clave primaria y las dependencias funcionales. Cada regla que se cumple aumenta el grado de normalización. Si una regla no se cumple, la relación se debe descomponer en varias relaciones que sí la cumplan.
La normalización se lleva a cabo en una serie pasos. Cada paso corresponde a una forma normal que tiene unas propiedades. Conforme se va avanzando en la normalización, las relaciones tienen un formato más estricto (más fuerte) y, por lo tanto, son menos vulnerables a las anomalías de actualización. El modelo relacional sólo requiere un conjunto de relaciones en primera forma normal. Las restantes formas normales son opcionales. Sin embargo, para evitar las anomalías de actualización, es recomendable llegar al menos a la tercera forma normal.
Primera forma normal (1FN)
Una relación está en primera forma normal si, y sólo si, todos los dominios de la misma contienen valores atómicos, es decir, no hay grupos repetitivos. Si se ve la relación gráficamente como una tabla, estará en 1FN si tiene un solo valor en la intersección de cada fila con cada columna.
Si una relación no está en 1FN, hay que eliminar de ella los grupos repetitivos. Un grupo repetitivo será el atributo o grupo de atributos que tiene múltiples valores para cada tupla de la relación. Hay dos formas de eliminar los grupos repetitivos. En la primera, se repiten los atributos con un solo valor para cada valor del grupo repetitivo. De este modo, se introducen redundancias ya que se duplican valores, pero estas redundancias se eliminarán después mediante las restantes formas normales. La segunda forma de eliminar los grupos repetitivos consiste en poner cada uno de ellos en una relación aparte, heredando la clave primaria de la relación en la que se encontraban.
Un conjunto de relaciones se encuentra en 1FN si ninguna de ellas tiene grupos repetitivos.
Segunda forma normal (2FN)
Una relación está en segunda forma normal si, y sólo si, está en 1FN y, además, cada atributo que no está en la clave primaria es completamente dependiente de la clave primaria.
La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o más atributos. Si una relación está en 1FN y su clave primaria es simple (tiene un solo atributo), entonces también está en 2FN. Las relaciones que no están en 2FN pueden sufrir anomalías cuando se realizan actualizaciones.
Para pasar una relación en 1FN a 2FN hay que eliminar las dependencias parciales de la clave primaria. Para ello, se eliminan los atributos que son funcionalmente dependientes y se ponen en una nueva relación con una copia de su determinante (los atributos de la clave primaria de los que dependen).
Tercera forma normal (3FN)
Una relación está en tercera forma normal si, y sólo si, está en 2FN y, además, cada atributo que no está en la clave primaria no depende transitivamente de la clave primaria. La dependencia es transitiva si existen las dependencias , , siendo , , atributos o conjuntos de atributos de una misma relación.
Aunque las relaciones en 2FN tienen menos redundancias que las relaciones en 1FN, todavía pueden sufrir anomalías frente a las actualizaciones. Para pasar una relación de 2FN a 3FN hay que eliminar las dependencias transitivas. Para ello, se eliminan los atributos que dependen transitivamente y se ponen en una nueva relación con una copia de su determinante (el atributo o atributos no clave de los que dependen).
Forma normal de Boyce-Codd (BCFN)
Una relación está en la forma normal de Boyce-Codd si, y sólo si, todo determinante es una clave candidata.
La 2FN y la 3FN eliminan las dependencias parciales y las dependencias transitivas de la clave primaria. Pero este tipo de dependencias todavía pueden existir sobre otras claves candidatas, si éstas existen. La BCFN es más fuerte que la 3FN, por lo tanto, toda relación en BCFN está en 3FN.
La violación de la BCFN es poco frecuente ya que se da bajo ciertas condiciones que raramente se presentan. Se debe comprobar si una relación viola la BCFN si tiene dos o más claves candidatas compuestas que tienen al menos un atributo en común.
Resumen
El diseño de bases de datos consta de tres etapas: diseño conceptual, lógico y físico. El diseño lógico es el proceso mediante el que se construye un esquema que representa la información que maneja una empresa, basándose en un modelo lógico determinado, pero independientemente del SGBD concreto que se vaya a utilizar para implementar la base de datos e independientemente de cualquier otra consideración física.
Las dos fases de que consta el diseño lógico son la construcción y validación de los esquemas lógicos locales para cada vista de usuario, y la construcción y validación de un esquema lógico global. Cada una de estas fases consta de una serie de pasos.
Un paso importante es la conversión del esquema conceptual a un esquema lógico adecuado al modelo relacional. Para ello, se deben hacer algunas transformaciones: eliminar las relaciones de muchos a muchos, eliminar las relaciones complejas, eliminar las relaciones recursivas, eliminar las relaciones con atributos, eliminar los atributos multievaluados, reconsiderar las relaciones de uno a uno y eliminar las relaciones redundantes.
Los esquemas lógicos se pueden validar mediante la normalización y frente a las transacciones de los usuarios. La normalización se utiliza para mejorar el esquema, de modo que éste satisface ciertas restricciones que evitan la duplicidad de datos. La normalización garantiza que el esquema resultante está más próximo al modelo de la empresa, es consistente, tiene la mínima redundancia y la máxima estabilidad.
Las restricciones de integridad son las restricciones que se imponen para que la base de datos nunca llegue a un estado inconsistente. Hay cinco tipos de restricciones de integridad: datos requeridos, restricciones de dominio, integridad de entidades, integridad referencial y reglas de negocio.
Para garantizar la integridad referencial se debe especificar el comportamiento de las claves ajenas: si aceptan nulos y qué hacer cuando se borra la tupla a la que se hace referencia, o cuando se modifica el valor de su clave primaria.

Modelo Conceptual




SEMANA 4
MODELO CONCEPTUAL
El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los usuarios tienen de la información. Cada una de estas visiones suelen corresponder a las diferentes áreas funcionales de la empresa como, por ejemplo, producción, ventas, recursos humanos, etc.
Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas. Una opción consiste en examinar los diagramas de flujo de datos, que se pueden haber producido previamente, para identificar cada una de las áreas funcionales. La otra opción consiste en entrevistar a los usuarios, examinar los procedimientos, los informes y los formularios, y también observar el funcionamiento de la empresa.
A los esquemas conceptuales correspondientes a cada vista de usuario se les denomina esquemas conceptuales locales. Cada uno de estos esquemas se compone de entidades, relaciones, atributos, dominios de atributos e identificadores. El esquema conceptual también tendrá una documentación, que se irá produciendo durante su desarrollo. Las tareas a realizar en el diseño conceptual son las siguientes:

1.      Identificar las entidades.
2.      Identificar las relaciones.
3.      Identificar los atributos y asociarlos a entidades y relaciones.
4.      Determinar los dominios de los atributos.
5.      Determinar los identificadores.
6.      Determinar las jerarquías de generalización (si las hay).
7.      Dibujar el diagrama entidad-relación.
8.      Revisar el esquema conceptual local con el usuario.

1.  Identificar las entidades

En primer lugar hay que definir los principales objetos que interesan al usuario. Estos objetos serán las entidades. Una forma de identificar las entidades es examinar las especificaciones de requisitos de usuario. En estas especificaciones se buscan los nombres o los sintagmas nominales que se mencionan (por ejemplo: número de empleado, nombre de empleado, número de inmueble, dirección del inmueble, alquiler, número de habitaciones). También se buscan objetos importantes como personas, lugares o conceptos de interés, excluyendo aquellos nombres que sólo son propiedades de otros objetos. Por ejemplo, se pueden agrupar el número de empleado y el nombre de empleado en una entidad denominada empleado, y agrupar número de inmueble, dirección del inmueble, alquiler y número de habitaciones en otra entidad denominada inmueble.
Otra forma de identificar las entidades es buscar aquellos objetos que existen por sí mismos. Por ejemplo, empleado es una entidad porque los empleados existen, sepamos o no sus nombres, direcciones y teléfonos. Siempre que sea posible, el usuario debe colaborar en la identificación de las entidades.

A veces, es difícil identificar las entidades por la forma en que aparecen en las especificaciones de requisitos. Los usuarios, a veces, hablan utilizando ejemplos o analogías. En lugar de hablar de empleados en general, hablan de personas concretas, o bien, hablan de los puestos que ocupan esas personas.
Para liarlo aún más, los usuarios usan, muchas veces, sinónimos y homónimos. Dos palabras son sinónimos cuando tienen el mismo significado. Los homónimos ocurren cuando la misma palabra puede tener distintos significados dependiendo del contexto.
No siempre es obvio saber si un objeto es una entidad, una relación o un atributo. Por ejemplo ¿cómo se podría clasificar matrimonio? Pues de cualquiera de las tres formas. El análisis es subjetivo, por lo que distintos diseñadores pueden hacer distintas interpretaciones, aunque todas igualmente válidas. Todo depende de la opinión y la experiencia de cada uno. Los diseñadores de bases de datos deben tener una visión selectiva y clasificar las cosas que observan dentro del contexto de la empresa u organización. A partir de unas especificaciones de usuario es posible que no se pueda deducir un conjunto único de entidades, pero después de varias iteraciones del proceso de análisis, se llegará a obtener un conjunto de entidades que sean adecuadas para el sistema que se ha de construir.
Conforme se van identificando las entidades, se les dan nombres que tengan un significado y que sean obvias para el usuario. Los nombres de las entidades y sus descripciones se anotan en el diccionario de datos. Cuando sea posible, se debe anotar también el número aproximado de ocurrencias de cada entidad. Si una entidad se conoce por varios nombres, éstos se deben anotar en el diccionario de datos como alias o sinónimos.

2.  Identificar las relaciones
Una vez definidas las entidades, se deben definir las relaciones existentes entre ellas. Del mismo modo que para identificar las entidades se buscaban nombres en las especificaciones de requisitos, para identificar las relaciones se suelen buscar las expresiones verbales (por ejemplo: oficina tiene empleados, empleado gestiona inmueble, cliente visita inmueble). Si las especificaciones de requisitos reflejan estas relaciones es porque son importantes para la empresa y, por lo tanto, se deben reflejar en el esquema conceptual.
Pero sólo interesan las relaciones que son necesarias. En el ejemplo anterior, se han identificado las relaciones empleado gestiona inmueble y cliente visita inmueble. Se podría pensar en incluir una relación entre empleado y cliente: empleado atiende a cliente, pero observando las especificaciones de requisitos no parece que haya interés en modelar tal relación.
La mayoría de las relaciones son binarias (entre dos entidades), pero no hay que olvidar que también puede haber relaciones en las que participen más de dos entidades, así como relaciones recursivas.
Es muy importante repasar las especificaciones para comprobar que todas las relaciones, explícitas o implícitas, se han encontrado. Si se tienen pocas entidades, se puede comprobar por parejas si hay alguna relación entre ellas. De todos modos, las relaciones que no se identifican ahora se suelen encontrar cuando se valida el esquema con las transacciones que debe soportar.
Una vez identificadas todas las relaciones, hay que determinar la cardinalidad mínima y máxima con la que participa cada entidad en cada una de ellas. De este modo, el esquema representa de un modo más explícito la semántica de las relaciones. La cardinalidad es un tipo de restricción que se utiliza para comprobar y mantener la calidad de los datos. Estas restricciones son aserciones sobre las entidades que se pueden aplicar cuando se actualiza la base de datos para determinar si las actualizaciones violan o no las reglas establecidas sobre la semántica de los datos.
Conforme se van identificando las relaciones, se les van asignando nombres que tengan significado para el usuario. En el diccionario de datos se anotan los nombres de las relaciones, su descripción y las cardinalidades con las que participan las entidades en ellas.

3.  Identificar los atributos y asociarlos a entidades y relaciones
Al igual que con las entidades, se buscan nombres en las especificaciones de requisitos. Son atributos los nombres que identifican propiedades, cualidades, identificadores o características de entidades o relaciones.
Lo más sencillo es preguntarse, para cada entidad y cada relación, ¿qué información se quiere saber de ...? La respuesta a esta pregunta se debe encontrar en las especificaciones de requisitos. Pero, en ocasiones, será necesario preguntar a los usuarios para que aclaren los requisitos. Desgraciadamente, los usuarios pueden dar respuestas a esta pregunta que también contengan otros conceptos, por lo que hay que considerar sus respuestas con mucho cuidado.
Al identificar los atributos, hay que tener en cuenta si son simples o compuestos. Por ejemplo, el atributo dirección puede ser simple, teniendo la dirección completa como un solo valor: `San Rafael 45, Almazora´; o puede ser un atributo compuesto, formado por la calle (`San Rafael´), el número (`45´) y la población (`Almazora´). El escoger entre atributo simple o compuesto depende de los requisitos del usuario. Si el usuario no necesita acceder a cada uno de los componentes de la dirección por separado, se puede representar como un atributo simple. Pero si el usuario quiere acceder a los componentes de forma individual, entonces se debe representar como un atributo compuesto.
También se deben identificar los atributos derivados o calculados, que son aquellos cuyo valor se puede calcular a partir de los valores de otros atributos. Por ejemplo, el número de empleados de cada oficina, la edad de los empleados o el número de inmuebles que gestiona cada empleado. Algunos diseñadores no representan los atributos derivados en los esquemas conceptuales. Si se hace, se debe indicar claramente que el atributo es derivado y a partir de qué atributos se obtiene su valor. Donde hay que considerar los atributos derivados es en el diseño físico.
Cuando se están identificando los atributos, se puede descubrir alguna entidad que no se ha identificado previamente, por lo que hay que volver al principio introduciendo esta entidad y viendo si se relaciona con otras entidades.
Es muy útil elaborar una lista de atributos e ir eliminándolos de la lista conforme se vayan asociando a una entidad o relación. De este modo, uno se puede asegurar de que cada atributo se asocia a una sola entidad o relación, y que cuando la lista se ha acabado, se han asociado todos los atributos.
Hay que tener mucho cuidado cuando parece que un mismo atributo se debe asociar a varias entidades. Esto puede ser por una de las siguientes causas:
·        Se han identificado varias entidades, como director, supervisor y administrativo, cuando, de hecho, pueden representarse como una sola entidad denominada empleado. En este caso, se puede escoger entre introducir una jerarquía de generalización, o dejar las entidades que representan cada uno de los puestos de empleado.
·        Se ha identificado una relación entre entidades. En este caso, se debe asociar el atributo a una sola de las entidades y hay que asegurarse de que la relación ya se había identificado previamente. Si no es así, se debe actualizar la documentación para recoger la nueva relación.
Conforme se van identificando los atributos, se les asignan nombres que tengan significado para el usuario. De cada atributo se debe anotar la siguiente información:
·        Nombre y descripción del atributo.
·        Alias o sinónimos por los que se conoce al atributo.
·        Tipo de dato y longitud.
·        Valores por defecto del atributo (si se especifican).
·        Si el atributo siempre va a tener un valor (si admite o no nulos).
·        Si el atributo es compuesto y, en su caso, qué atributos simples lo forman.
·        Si el atributo es derivado y, en su caso, cómo se calcula su valor.
·        Si el atributo es multievaluado.

4.  Determinar los dominios de los atributos
El dominio de un atributo es el conjunto de valores que puede tomar el atributo. Por ejemplo el dominio de los números de oficina son las tiras de hasta tres caracteres en donde el primero es una letra y el siguiente o los dos siguientes son dígitos en el rango de 1 a 99; el dominio de los números de teléfono y los números de fax son las tiras de 9 dígitos.
Un esquema conceptual está completo si incluye los dominios de cada atributo: los valores permitidos para cada atributo, su tamaño y su formato. También se puede incluir información adicional sobre los dominios como, por ejemplo, las operaciones que se pueden realizar sobre cada atributo, qué atributos pueden compararse entre sí o qué atributos pueden combinarse con otros. Aunque sería muy interesante que el sistema final respetara todas estas indicaciones sobre los dominios, esto es todavía una línea abierta de investigación.
Toda la información sobre los dominios se debe anotar también en el diccionario de datos.

5.  Determinar los identificadores
Cada entidad tiene al menos un identificador. En este paso, se trata de encontrar todos los identificadores de cada una de las entidades. Los identificadores pueden ser simples o compuestos. De cada entidad se escogerá uno de los identificadores como clave primaria en la fase del diseño lógico.
Cuando se determinan los identificadores es fácil darse cuenta de si una entidad es fuerte o débil. Si una entidad tiene al menos un identificador, es fuerte (otras denominaciones son padre, propietaria o dominante). Si una entidad no tiene atributos que le sirvan de identificador, es débil (otras denominaciones son hijo, dependiente o subordinada).
Todos los identificadores de las entidades se deben anotar en el diccionario de datos.

6.  Determinar las jerarquías de generalización
En este paso hay que observar las entidades que se han identificado hasta el momento. Hay que ver si es necesario reflejar las diferencias entre distintas ocurrencias de una entidad, con lo que surgirán nuevas subentidades de esta entidad genérica; o bien, si hay entidades que tienen características en común y que realmente son subentidades de una nueva entidad genérica.
En cada jerarquía hay que determinar si es total o parcial y exclusiva o superpuesta.

7.  Dibujar el diagrama entidad-relación
Una vez identificados todos los conceptos, se puede dibujar el diagrama entidad-relación correspondiente a una de las vistas de los usuarios. Se obtiene así un esquema conceptual local.



8.  Revisar el esquema conceptual local con el usuario
Antes de dar por finalizada la fase del diseño conceptual, se debe revisar el esquema conceptual local con el usuario. Este esquema está formado por el diagrama entidad-relación y toda la documentación que describe el esquema. Si se encuentra alguna anomalía, hay que corregirla haciendo los cambios oportunos, por lo que posiblemente haya que repetir alguno de los pasos anteriores. Este proceso debe repetirse hasta que se esté seguro de que el esquema conceptual es una fiel representación de la parte de la empresa que se está tratando de modelar.



lunes, 10 de octubre de 2011

Tipos de Estructura

SEMANA 3

ESTRUCTURA DE LA BASE DE DATOS

La estructura de la base de datos es bastante sencilla. Las convenciones utilizadas aparecen implícitamente en este documento. Por ejemplo, la mayoría de los objetos se indexan con un entero autoincrementado cuyo nombre es de tipo id_objet, y que se declara como clave primaria en la tabla apropiada.
NB: este artículo necesita ser actualizado y nadie lo está haciendo todavía. Hay que leerlo como un elemento que ayuda a comprender el funcionamiento de SPIP, pero ya no como una referencia. Si quieres contribuir a la documentación rehaciendo este artículo, ¡no lo dudes!

Contenido referido a la redacción [1]

Las secciones: spip_rubriques

-  Cada sección se identifica por su id_rubrique .
-  id_parent es la id_rubrique de la sección que contiene esta sección (cero si la sección se encuentra en la raíz del sitio).
-  tire, descriptif, texto se explican ellos mismos [2].
-  id_secteur es la id_rubrique de la sección inicial de la jerarquía que contiene la sección actual. Una sección depende de una sección que depende de una sección… hasta una sección colocada en la raíz del sitio; es esta última sección la que determina el id_secteur. Este valor calculado previamente permite acelerar ciertos cálculos del espacio público (de hecho las breves son clasificadas únicamente por sector y no según toda la jerarquía).
-  maj es un campo técnico [3] calculado automáticamente por MySQL. Contiene la fecha de la última modificación introducida en la tabla.
-  export, id_import son dos campos reservados para funcionalidades futuras.
Los artículos: spip_articles


-  Cada artículo está identificado por su id_article.
-  id_rubrique indica en que sección está incluido el artículo.
-  id_secteur indica el sector correspondiente a la sección antes mencionada (ver el párrafo precedente para advertir la diferencia entre los dos).
-  tire, surtitre, soustitre, descriptif, chapo, texto, ps se explican ellos mismos.
-  date es la fecha de publicación del artículo (si todavía no está publicado, es la fecha de creación).
-  date_redac es la fecha de publicación anterior si introduces un valor; si no, es « 0000-00-00 ».
-  status es la situación actual del artículo: prepa (en curso de redacción), prop (propuesto a su publicación), publie (publicado), refuse (rechazado), poubelle (en la papelera).
-  accepter_forum: permite seleccionar manualmente si el artículo acepta foros o no (por omisión, sí).
-  maj: el mismo significado que en la tabla de las secciones.
-  export es un campo reservado para funcionalidades futuras.
-  images es un campo que contiene la lista de las imágenes utilizadas por el artículo, en un formato propio. Este campo se genera por spip_image.php3..
-  visites y referers son usados para las estadísticas sobre los artículos. El primero es el número de visitas del artículo en el espacio público; el segundo contiene un extracto de hash de las visitas externas para recordar esos diferentes enlaces externos. Ver inc-stats.php3.
Los autores/as: spip_auteurs


-  Cada autora o autor es identificado por su id_auteur.
-  nom, bio, nom_site, url_site, pgp son, respectivamente, el nombre de la autora o autor, una corta biografía, su dirección de email, el nombre de la URL de su sitio Web, y su clave PGP. Son informaciones que él o ella puede modificar libremente.
-  email, login son su email de inscripción y su login. Sólo puede modificarlos un administrador.
-  pass es el hash MD5 de la contraseña.
-  htpass es el valor encriptado (es decir, generado mediante crypt ()) de la contraseña para el .htpasswd.
-  statut es el estado del autor/a: 0minirezo (administrador/a), 1comite (redactor/a), 5poubelle (en la papelera), 6forum (registrado en los foros, cuando están definidos en el modo «por registro»).
-  maj tiene el mismo significado que en las otras tablas.
Las breves: spip_breves


-  Cada breve está identificada por su id_breve.
-  id_rubrique es la sección (de hecho el sector) en la cual está clasificada la breve.
-  tire, texto, lien_titre, lien_url son el título, el texto, y el nombre y la dirección de referencia asociados a la breve.
-  date_heure es la fecha de la breve.
-  statut es el estado de la breve: prop (propuesta a su publicación), publie (publicada) o refuse (rechazada).
-  maj: igual que en las otras tablas.
Las palabras clave: spip_mots


-  Cada palabra clave es identificada por su id_mot.
-  El type de la palabra clave es el tipo, o grupo, elegido para esa palabra clave. Definiendo varios tipos se obtienen diversas clasificaciones independientes (por ejemplo «tema», «época», «país»...).
-  titre, descriptif, texto se explican ellos mismos.
-  maj: igual que en las otras tablas.
Los sitios sindicados: spip_syndic


-  Cada sitio sindicado es identificado por su id_syndic.
-  id_rubrique e id_secteur contienen la posición en la jerarquía del sitio donde se encuentran los contenidos sindicados.
-  nom_site, url_site, descriptif son el nombre, la dirección y la descripción del sitio sindicado.
-  url_syndic es la dirección del archivo dinámico utilizado para recoger los contenidos sindicados (normalmente se trata de la url_site seguida de backend.php3).
Los artículos sindicados: spip_syndic_articles


-  Cada artículo sindicado es identificado por su id_syndic_article.
-  id_syndic se refiere al sitio sindicado de donde es extraído el artículo.
-  titre, url, date, lesauteurs se explican ellos mismos.

Elementos interactivos

Los mensajes de los foros: spip_forum


-  Cada mensaje de un foro es identificado por su id_forum.
-  El objeto al cual está vinculado el foro es identificado por su id_rubrique, id_article o id_breve. Por omisión estos valores son iguales a cero.
-  El mensaje padre (es decir, el mensaje al que se responde con el mensaje actual) es identificado por id_parent. Si el mensaje no es una respuesta a ningún otro mensaje este valor es cero.
-  titre, texto, nom_site, url_site son el título y el nombre del mensaje, y el nombre y la dirección del objeto relacionado.
-  auteur y email_auteur son el nombre y el email declarados por la autora o autor. En el caso de los foros con registro, no tienen porque ser los mismos que los datos guardados del autor (es decir, en la tabla spip_auteurs).
-  id_auteur identifica al autor o autora del mensaje en el caso de los foros con inscripción.
-  statut es el estado del mensaje: publie (visible en el espacio público), prive (escrito en relación a un artículo del espacio privado), privrac (escrito en el foro interno en el espacio privado), off (suprimido o a validar, según la moderación de los foros -a priori o a posteriori-).
-  ip es la dirección IP del ordenador de conexión al redactar una contribución en los foros públicos.
-  maj: igual que en las otras tablas.
Las peticiones: spip_petitions


-  id_article identifica el artículo al cual está asociada la petición (una sola petición por artículo).
-  email_unique, site_obli, site_unique, message definen la configuración de la petición: la dirección email de los firmantes debe ser única en las firmas; la dirección Web es obligatoria y debe ser única; un mensaje relacionado con las firmas es autorizado (oui o non).
-  texto es el texto de la petición.
-  maj igual que en las otras tablas.
Las firmas de las peticiones: spip_signatures


-  Cada firma es identificada por su id_signature.
-  id_article identifica el artículo en el que está incluida la petición que tiene la firma.
-  nom_email, ad_email, nom_site, url_site son el nombre, la dirección email, así como el sitio Web escritos por la persona firmante.
-  message es el mensaje eventualmente introducido por la persona firmante.
-  statut es el estado de la firma: publie (aceptada), poubelle (suprimida) ; cualquier otro valor da el valor de la clave de validación utilizada para la confirmación por email.
-  maj: igual que en las otras tablas.

Las relaciones entre los objetos

Estas tablas no generan ningún contenido, simplemente una relación entre los objetos presentes en otras tablas. Así:
-  spip_auteurs_articles especifica la relación entre autores/as y sus artículos. Si un id_auteur está asociado a un id_article, eso quiere decir que el autor/a en cuestión ha escrito o coescrito el artículo (puede haber varios artículos por autor/a y viceversa).
-  spip_mots_articles la define la relación para relacionar los artículos por palabras clave.

Gestión del sitio

La tabla spip_meta es fundamental. Contiene parejas (nom, valeur) indexadas por el nombre (clave primaria); estas parejas permiten almacenar diferentes informaciones como la configuración del sitio o la versión instalada de SPIP.
La tabla spip_forum_cache es utilizada para adaptar el sistema de caché a la inmediatez de los foros. Para cada fichero de la caché que haya dado lugar a una búsqueda en la tabla spip_forum, la tabla spip_forum_cache almacena los parámetros de la búsqueda (artículo, sección, breve y eventual mensaje padre del foro). Cuando un mensaje es enviado, sus parámetros son comparados con los guardados en spip_forum_cache, y para cada correspondencia encontrada el fichero caché hallado en la tabla es borrado. Así los mensajes no tienen que esperar a que la página en la que se encuentran vuelva a ser calculada para aparecer en el espacio público.

Indexación (motor de búsqueda)

Seis tablas son utilizadas por el motor de búsqueda. Se dividen en dos categorías.
El diccionario de indexación: spip_index_dico
Cada palabra encontrada durante la indexación es almacenada en esta tabla, así como los 64 primeros bits de su hash MD5. Es la palabra que sirve de clave primaria, permitiendo así efectuar muy rápidas búsquedas sobre el comienzo de una palabra; se recuperan entonces los hash que satisfacen la búsqueda, con el fin de efectuar la búsqueda propiamente dicha en las tablas de indexación.

Las tablas de indexación: spip_index_*
Estas tablas, son cinco, generan cada una la indexación de un tipo de objeto: artículos, secciones, breves, autores/as, palabras clave. Se almacena una entrada por palabra y por objeto. Cada entrada contiene el hash de la palabra (de hecho, los 64 bits más importantes del hash MD5, cf. debajo), el identificador del objeto indexado (por ejemplo el id_article para un artículo), y el número de puntos asociado a la indexación de la palabra dentro del objeto. Este número de puntos es calculado en función del número de ocurrencias de la palabra, ponderado por el campo donde se producen esas apariciones: una ocurrencia en el título de un artículo genera más puntos que una ocurrencia en el cuerpo del artículo.

viernes, 7 de octubre de 2011

Atributos y Dominios

Semana 9

ATRIBUTOS Y DOMINIOS

Dominios

Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos los valores de este atributo deben de ser elementos del conjunto especificado".
Distintos tipos de dominios son: enteros, cadenas de texto, fecha, no procedurales etc.

Dominio

Dominio: Rango o conjunto de posibles valores de un atributo.
El concepto de dominio es el mismo en el modelo E-R y en el modelo relacional. Pero en este modelo tiene mayor importancia, ya que será un dato importante a la hora de dimensionar la relación.
De nuevo estamos ante un concepto muy flexible. Por ejemplo, si definimos un atributo del tipo entero, el dominio más amplio sería, lógicamente, el de los números enteros. Pero este dominio es infinito, y sabemos que los ordenadores no pueden manejar infinitos números enteros. Al definir un atributo de una relación dispondremos de distintas opciones para guardar datos enteros. Si en nuestro caso usamos la variante de "entero pequeño", el dominio estará entre -128 y 127. Pero además, el atributo corresponderá a una característica concreta de una entidad; si se tratase, por ejemplo, de una calificación sobre 100, el dominio estaría restringido a los valores entre 0 y 100.




  Dominio y atributo
·         Dominio: conjunto finito de valores homogéneos y atómicos, caracterizados por un nombre y un tipo de datos; además de ciertas restricciones en algunos casos.
Los dominios se pueden definir por extensión (= España, Costa Rica, Etc.) o por intensión (Edad > 10 < 15).
·         Atributo: un atributo A, es el papel que juega un dominio D en una relación; se dice que D es el dominio de A y se denota Dom(A); así el atributo Nacionalidad de la tabla Autor, definidos sobre el dominio Nacionalidades, nos indica que dicho dominio tiene el papel de nacionalidad del autor en la tabla Autor.



sábado, 1 de octubre de 2011


Los archivos pueden clasificarse en cuatro tipos básicos; que son: los archivos maestros, los archivos de transacciones, los archivos de control y los archivos de planeamiento. Esta clasificación dependerá de la relación lógica que tengan que tener los datos, para dar apoyo a la actividad de la organización.

ARCHIVO MAESTRO
Un archivo maestro es un conjunto de registros que se refieren a algún aspecto importante de las actividades de una organización, como por ejemplo el archivo de VENDEDORES. Un archivo maestro también puede reflejar la historia de los eventos que afectan a una entidad determinada, como es en el caso de un archivo HISTÓRICO DE VENTAS. Otros ejemplos son los archivos maestros de: PLAN DE CUENTAS; BANCOS, NÓMINA DEL PERSONAL, CLIENTES, VENDEDORES, PRODUCTOS, PROVEEDORES, COMPETIDORES.

ARCHIVO DE TRANSACCIONES.
Un archivo de transacciones es un archivo temporal que persigue básicamente dos propósitos; uno es el de acumular datos de eventos en el momento que ocurran, y el segundo propósito es el de actualizar los archivos maestros para reflejar los resultados de las transacciones actuales. En otras palabras, guardan información sobre los eventos que afectan a la organización y sobre los cuales se calculan datos; como es en el caso de los archivos de VENTAS, ORDENES DE PRODUCCIÓN o PAGO DE SALARIOS. Otros ejemplos de archivos de transacciones son los archivos de: REGISTROS CONTABLES, COSTOS, FACTURAS, PAGOS A RECIBIR, PROCESOS DE EXPORTACIÓN, CONSULTA DE CLIENTES, PEDIDOS DE CLIENTES Y PEDIDOS A PROVEEDORES.

ARCHIVOS DE CONTROL.
Los archivos de control contienen datos de los archivos maestros y de transacciones, para permitir el análisis del desempeño de la organización. Estos archivosgeneran medidas de control de los negocios, como ser el VOLUMEN DE VENTA POR PRODUCTO, VOLUMEN DE VENTA POR VENDEDOR, VOLUMEN DE VENTA POR CLIENTE, COMPRAS POR PROVEEDOR, COSTO DE REPOSICIÓN.

ARCHIVO DE PLANEAMIENTO.
Los archivos de planeamiento, contienen datos referentes a los niveles esperados de los datos existentes en los archivos maestros y de transacciones; como por ejemplo: PROGRAMA DE VENTAS, PROGRAMA DE COMPRAS, PROGRAMA DE PRODUCCIÓN; PRESUPUESTO FINANCIERO. Por lo tanto los datos existentes en un archivo de planeamiento provienen de los archivos maestros, de transacciones, y de control.
 
 



SISTEMAS DE ARCHIVOS

Un sistema de archivos es un conjunto de programas que prestan servicio a los usuariosfinales, donde cada programa define y maneja sus propios datos.Los sistemas de archivos surgen de la necesidad de reemplazarel manejo de los archivos manuales para obtener acceso a los datos con mayor rapidez. Estos sistemas de archivos presentaban un modelo descentralizado para el manejo de sus datos, lo que representaba que cada núcleo de la organización donde se manejaba el sistema de archivos almacenaba y gestionaba sus propios datos.
Los sistemas de archivos presentan algunos inconvenientes que se atribuyen a que la definición de los datos se encuentra codificada dentro de los programas de aplicación, y no siendo almacenada de forma independiente a las aplicaciones. Además no hay control sobre el acceso y manipulación de los datos diferente al que proporciona la aplicación diseñada
para el sistema de archivos.
Debido a los inconvenientes que presentaban los sistemas de archivos surgieron las Bases de Datos y los Sistemas de Gestión de Base de Datos.