Base de datos Normalización
PDF generado usando el kit de herramientas de fuente abierta mwlib. Ver http://code.pediapress.com/ para mayor información. información. PDF generated at: Fri, 18 Feb 2011 21:42:04 UTC
Contenidos Artículos Base de datos
1
Sistema de gestión de bases de datos
5
Base de datos orientada a objetos
8
Modelo relacional
9
Normalización de bases de datos
11
Referencias Fuentes y contribuyentes del artículo
18
Fuentes de imagen, Licencias y contribuyentes
19
Licencias de artículos Licencia
20
Base de datos
Base de datos Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de OpenOffice.org Base: sistema de gestión de bases de datos. las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos. Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática. Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental. Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios países. Por ejemplo, en España los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD).
Tipos de Base de Datos Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidad de la misma: Según la variabilidad de los datos almacenados Bases de datos estáticas
Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.
1
Base de datos Bases de datos dinámicas
Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de información de un supermercado, una farmacia, un videoclub o una empresa. Según el contenido Bases de datos bibliográficas
Solo contienen un subrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras. Bases de datos de texto completo
Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas. Directorios
Un ejemplo son las guías telefónicas en formato electrónico. Bases de datos o "bibliotecas" de información química o biológica
Son bases de datos que almacenan diferentes tipos de información proveniente de la química, las ciencias de la vida o médicas. Se pueden considerar en varios subtipos: • Las que almacenan almacenan secuencias secuencias de nucleót nucleótidos idos o proteínas. proteínas. • Las base basess de dato datoss de ruta rutass metabó metabólic licas. as. • Bases de datos datos de estructura, estructura, compren comprende de los registros registros de datos datos experimenta experimentales les sobre estructu estructuras ras 3D de biomoléculas• Base Basess de de dat datos os clín clínic icas as.. • Bases de datos datos bibliográficas bibliográficas (biológic (biológicas, as, químicas, químicas, médicas médicas y de otros campos): PubChem, PubChem, Medline, Medline, EBSCOhost.
Modelos de bases de datos Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos. Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos. Algunos modelos con frecuencia utilizados en las bases de datos:
2
Base de datos Bases de datos jerárquicas Éstas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas. Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento. Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos. Base de datos de red Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico). Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales. Bases de datos transaccionales transaccionales Son bases de datos cuyo único fin es el envío y recepción de datos a grandes velocidades, estas bases son muy poco comunes y están dirigidas por lo general al entorno de análisis de calidad, datos de producción e industrial, es importante entender que su fin único es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto la redundancia y duplicación de información no es un problema como con las demás bases de datos, por lo general para poderlas aprovechar al máximo permiten algún tipo de conectividad a bases de datos relacionales. Bases de datos relacionales Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que ésta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla). En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la base de datos. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce como normalización de una base de datos. Durante los años 80 la aparición de dBASE produjo una revolución en los lenguajes de programación y sistemas de administración de datos. Aunque nunca debe olvidarse que dBase no utilizaba SQL como lenguaje base para su gestión.
3
Base de datos Bases de datos multidimensionales Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como creación de Cubos OLAP. Básicamente no se diferencian demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podría serlo también en una base de datos multidimensional), la diferencia está más bien a nivel conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan métricas que se desean estudiar. Bases de datos orientadas a objetos Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos: • Encapsulaci Encapsulación ón - Propiedad que que permite ocultar ocultar la información información al resto de los objetos, objetos, impidiend impidiendoo así accesos incorrectos o conflictos. • Herencia Herencia - Propiedad Propiedad a través de la cual los objetos objetos heredan comporta comportamient mientoo dentro de una jerarquía jerarquía de clases. clases. • Polimorfismo Polimorfismo - Propiedad Propiedad de una operación operación mediante mediante la cual cual puede ser aplicada aplicada a distintos distintos tipos de objetos. objetos. En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La implementación (o método) de la operación se especifica separadamente y puede modificarse sin afectar la interfaz. Los programas de aplicación de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarse independencia entre programas y operaciones. SQL:2003, es el estándar de SQL92 ampliado, soporta los conceptos orientados a objetos y mantiene la compatibilidad con SQL92. Bases de datos documentales Permiten la indexación a texto completo, y en líneas generales realizar búsquedas más potentes. Tesaurus es un sistema de índices optimizado para este tipo de bases de datos. Bases de datos deductivas Un sistema de base de datos deductiva, es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. Las bases de datos deductivas son también llamadas bases de datos lógicas, a raíz de que se basa en lógica matemática. Gestión de bases de datos distribuida ( SGBDD) la base de datos y el software SGBD pueden estar distribuidos en múltiples sitios conectados por una red. Hay de dos tipos: 1. Distribuidos homogéneos: utilizan el mismo SGBD en múltiples sitios. 2. Distribuidos heterogéneos: Da lugar a los SGBD federados o sistemas multibase de datos en los que los SGBD participantes tienen cierto grado de autonomía local y tienen acceso a varias bases de datos autónomas preexistentes almacenados en los SGBD, muchos de estos emplean una arquitectura cliente-servidor.
4
Base de datos Estas surgen debido a la existencia física de organismos descentralizados. Esto les da la capacidad de unir las bases de datos de cada localidad y acceder así a distintas universidades, sucursales de tiendas, etcétera.
Vé ase ase tam tambi biéé n • • • • • • •
Sistema Sistema de gest gestión ión de base base de dato datoss Modelo relacional, relacional, normalizac normalización ión de de bases bases de de datos datos Base Base de datos datos orie orienta ntada da a objeto objetoss Alma Almaccén de dato datoss Mine Minerí ríaa de de da datos tos Base Base de dato datoss bio bioló lógi gica ca Base Base de dat datos os prob probab abil ilíst ístic icaa
Sistema de gestión de bases de datos Los sistemas de gestión de bases de datos (en inglés database management system, abreviado DBMS ) son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.
Propósito El propósito general de los sistemas de gestión de bases de datos es el de manejar de manera clara, sencilla y ordenada un conjunto de datos que posteriormente se convertirán en información relevante para una organización.
Objetivos Existen distintos objetivos que deben cumplir los SGBD: • Abstracción de la información. Los SGBD ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción. • Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella. • Consistencia. En aquellos casos en los que no se ha logrado eliminar la redundancia, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. Por otra parte, la base de datos representa una realidad determinada que tiene determinadas condiciones, por ejemplo que los menores de edad no pueden tener licencia de conducir. El sistema no debería aceptar datos de un conductor menor de edad. En los SGBD existen herramientas que facilitan la programación de este tipo de condiciones. • Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor. Los SGBD deben garantizar que esta información se encuentra segura de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos. • Manejo de transacciones. Una transacción es un programa que se ejecuta como una sola operación. Esto quiere decir que luego de una ejecución en la que se produce una falla es el mismo que se obtendría si el programa no se hubiera ejecutado. Los SGBD proveen mecanismos para programar las modificaciones de los datos de una forma mucho más simple que si no se dispusiera de ellos. • Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el SGBD demora en proporcionar la información solicitada y en almacenar los cambios realizados.
5
Sistema de gestión de bases de datos
Ventajas • Proveen Proveen facilidades facilidades para la manipulac manipulación ión de grandes grandes volúmenes volúmenes de datos (ver objetivos). objetivos). Entre Entre éstas: • Simplifican Simplifican la program programación ación de equipos equipos de consiste consistencia. ncia. • Manejando Manejando las políticas políticas de respaldo respaldo adecua adecuadas, das, garantiza garantizann que los cambios cambios de la base serán serán siempre siempre consistentes sin importar si hay errores correctamente, etc. • Organizan Organizan los los datos con un impacto impacto mínimo mínimo en el el código código de los los programas. programas. • Disminuyen Disminuyen drásticame drásticamente nte los tiempos tiempos de desarrollo desarrollo y aumentan la calidad calidad del sistema sistema desarrollad desarrolladoo si son bien explotados por los desarrolladores. • Usualmente, Usualmente, proveen proveen interface interfacess y lenguajes de consulta consulta que simplifica simplificann la recuperación recuperación de los datos. datos.
Inconvenientes 1. Típicamente, es necesario disponer de una o más personas que administren la base de datos, de la misma forma en que suele ser necesario en instalaciones de cierto porte disponer de una o más personas que administren los sistemas operativos. Esto puede llegar a incrementar los costos de operación en una empresa. Sin embargo hay que balancear este aspecto con la calidad y confiabilidad del sistema que se obtiene. 2. Si se tienen muy pocos pocos datos que son usados por un único usuario por vez vez y no hay que realizar consultas complejas sobre los datos, entonces es posible que sea mejor usar una planilla de cálculo. 3. Complejidad: los software muy complejos y las personas que vayan a usarlo deben tener tener conocimiento de las funcionalidades del mismo para poder aprovecharlo al máximo. 4. Tamaño: la complejidad y la gran cantidad de funciones que tienen tienen hacen que sea un software de gran tamaño, que requiere de gran cantidad de memoria para poder correr. 5. Coste del hardware hardware adicional: los requisitos de hardware hardware para correr correr un SGBD por lo general son relativamente altos, por lo que estos equipos pueden llegar a costar gran cantidad de dinero.
Productos SGBD disponibles en el mercado SGBD libres • • • • •
Postg Postgre reSQ SQL L (htt (http: p://ww //www. w.postgresql.org postgresql.org Postgresql) Licencia BSD Firebird Firebird basada en en la versión 6 de InterBa InterBase, se, Initial Initial Developer' Developer'ss PUBLIC LICENSE LICENSE Version Version 1.0. SQLi SQLite te (ht (http tp:/ ://w /www ww..sqlite.org sqlite.org SQLite) Licencia Dominio Público DB2 DB2 Expr Expres ess-C s-C (htt (http: p://ww //www. w.ibm. ibm.com/software/data/db2/express/) com/software/data/db2/express/) Apac Apache he Derb Derbyy (ht (http tp://d ://db. b.apache. apache.org/derby/) org/derby/)
SGBD no libres • MySQL: Licencia Licencia Dual, Dual, depende depende del uso. uso. No se sabe hasta hasta cuándo cuándo permanecerá permanecerá así, así, ya que ha sido comprad compradaa por Oracle. Sin embargo, existen 2 versiones: una gratuita que sería equivalente a la edición "express" SQL server de Microsoft Windows, y otra más completa de pago. • Adva Advant ntag agee Data Databa base se • dBase • FileMaker • Fox Pro • gsBase • IBM DB2: DB2: Univ Univers ersal al Datab Database ase (DB2 (DB2 UDB) UDB) • IBM IBM Inf Informix • Interba Interbase se de Code CodeGea Gear, r, filial filial de de Borlan Borlandd
6
Sistema de gestión de bases de datos • • • • • • • • • • • • • • •
MAGIC Micr Micros osof oftt Acce Access ss Micr Micros osof oftt SQL SQL Serv Server er NexusDB Open Ac Access Oracle Paradox Perv Pervas asiv iveS eSQL QL Prog Progre ress ss (DB (DBMS MS)) Sybase ASE Sybase ASA Sybase IQ WindowBase IBM IMS Base Base de de Dato Datoss Jerár Jerárqui quica ca CA-IDMS
SGBD no libres y gratuitos • Microso Microsoft ft SQL Serv Server er Compa Compact ct Editio Editionn Basica Basica • Sybase ASE Express Express Edition Edition para para Linux Linux (edición (edición gratuita gratuita para Linux) Linux) • Orac Oracle le Expre Express ss Edi Editi tion on 10 10
Vé ase ase tam tambi biéé n • Base de de datos • Comparación Comparación de de sistemas sistemas administrado administradores res de bases bases de datos datos relacional relacionales es
7
Base de datos orientada a objetos
Base de datos orientada a objetos En una base de datos orientada a objetos, la información se representa mediante objetos como los presentes en la programación orientada a objetos. Cuando se integra las características de una base de datos con las de un lenguaje de programación orientado a objetos, el resultado es un sistema gestor de base de datos orientada a objetos (ODBMS, object database management system). Un ODBMS hace que los objetos de la base de datos aparezcan como objetos de un lenguaje de programación en uno o más lenguajes de programación a los que dé soporte. Un ODBMS extiende los lenguajes con datos persistentes de forma transparente, control de concurrencia, recuperación de datos, consultas asociativas y otras capacidades. Las bases de datos orientadas a objetos se diseñan para trabajar bien en conjunción con lenguajes de programación orientados a objetos como Java, C#, Visual Basic.NET y C++. Los ODBMS usan exactamente el mismo modelo que estos lenguajes de programación. Los ODBMS son una buena elección para aquellos sistemas que necesitan un buen rendimiento en la manipulación de tipos de dato complejos. Los ODBMS proporcionan los costes de desarrollo más bajos y el mejor rendimiento cuando se usan objetos gracias a que almacenan objetos en disco y tienen una integración transparente con el programa escrito en un lenguaje de programación orientado a objetos, al almacenar exactamente el modelo de objeto usado a nivel aplicativo, lo que reduce los costes de desarrollo y mantenimiento. Historia
Herschell...Los orígenes del término orientados a objetos (abreviado OO) se remontan a los lenguajes de programación orientadas a objetos. Los lenguajes de programación OO tienen sus raíces en el lenguaje SIMULA 67, propuesto a finales de la década de 1960. En Simula, el concepto de clase agrupa la estructura de datos interna de un objeto en una declaración de clase, es decir, introduce en el lenguaje Algol los conceptos de objeto y de clase. Como Algol, Simula es un lenguaje fuertemente tipado para entornos compilados. Sin embargo, el primer lenguaje que popularizó la aproximación a objetos fue Smalltalk (1976); este puede considerarse una síntesis de años del lenguaje Lisp, que ofrece una gran flexibilidad gracias a la interpretación, y de Simula, añadiendo el concepto de metaclase. Smalltalk ha podido responder a las necesidades de flexibilidad presentadas por el desarrollo de entornos de programación gráficos, favoreciendo la rápida creación de prototipos de interfaces de usuarios amigables. Fue utilizado con éxito en la primera estación gráfica de Xerox para (el antecesor de Macintosh). Con la llegada de las estaciones de trabajo en los años 80, han crecido numerosos lenguajes orientados a objetos inspirados en Simula o Smalltalk. Entre los lenguajes compilados, los más celebres son C++, Objective C y Eiffel, debido a la compatibilidad del lenguaje o del código producido con el lenguaje de programación C. La mayor parte de los lenguajes interpretados son extensiones del Lisp; por ejemplo, Loops y CLOS. Es interesante notar que la mayor parte de los lenguajes populares existentes se encuentran en curso de ampliación para convertirse en orientados a objetos, incluyendo al Cobol y Ada (más exactamente Ada 9X, que aporta la herencia). En años recientes, han aparecido muchos prototipos experimentales y sistemas de bases de datos comerciales orientados a objetos. Entre los primeros se encuentran los sistemas ORION, OpenOODB, IRIS, ODE y el proyecto ENCORE/ObServer. Y entre los sistemas disponibles en el mercado están: GEMSTONE/OPAL de ServicLogic, ONTOS de Ontologic, Objectivity de Objectivity Inc., Versant de Versant Technologies, ObjecStore de Object Design y O2 de O2 Technology. Esta es solo una lista parcial de los prototipos experimentales y de los sistemas de bases de datos comerciales orientados a objetos. Desafortunadamente, es aún demasiado pronto para saber cuáles sistemas se instalarán como líderes en este campo. Las bases de datos orientados a objetos han adoptado muchos de los objetos creados para los lenguajes de programación orientados a objetos. Herschell
8
Base de datos orientada a objetos
Vé ase ase tam tambi biéé n • • • •
Enter Enterpr pris isee Objec Objects ts Frame Framewo work rk ODMG (Object Database Management Group) Mape Mapeoo obje objeto to-re -rela laci cion onal al Per Persis sistencia
Modelo relacional El modelo relacional para la gestión de una base de datos es un modelo de datos basado en la lógica de predicados y en la teoría de conjuntos. Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de «relaciones». Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados «tuplas». Pese a que ésta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar, esto es, pensando en cada relación como si fuese una tabla que está compuesta por registros (cada fila de la tabla sería un registro o tupla), y columnas (también llamadas campos).
Descripción En este modelo todos los datos son almacenados en relaciones, y como cada relación es un conjunto de datos, el orden en el que estos se almacenen no tiene relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar por un usuario no experto. La información puede ser recuperada o almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la información. Este modelo considera la base de datos como una colección de relaciones. De manera simple, una relación representa una tabla que no es más que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila también se puede denominar tupla o registro y a cada columna también se le puede llamar campo o atributo. Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional permite describir la forma de realizar una consulta, en cambio, el Cálculo relacional sólo indica lo que se desea devolver. Esquema Un esquema es la definición de una estructura (generalmente relaciones o tablas de una base de datos), es decir, determina la identidad de la relación y que tipo de información podrá ser almacenada dentro de ella; en otras palabras, el esquema son los metadatos de la relación. Todo esquema constará de: • Nombre Nombre de de la relac relación ión (su (su ident identifi ificad cador). or). • Nombre de de los atributos atributos (o campos) campos) de la relación relación y sus dominios; dominios; el dominio dominio de un atributo atributo o campo campo define define los valores permitidos para el mismo, es equivalente al tipo de dato por ejemplo character , integer , date, string, etc.
9
Modelo relacional Instancias Una instancia de manera formal es la aplicación de un esquema a un conjunto finito de datos. En palabras no tan técnicas, se puede definir como el contenido de una tabla en un momento dado, pero también es valido referirnos a una instancia cuando trabajamos o mostramos únicamente un subconjunto de la información contenida en una relación o tabla, como por ejemplo: • Ciertos Ciertos caracteres caracteres y números números (una sola columna columna de una sola fila). fila). • Algunas Algunas o todas todas las las filas con todas todas o algunas algunas columnas columnas • Cada fila es es una tupla. El número número de de filas filas es llamado llamado cardinalidad . • El núme número ro de de colu columna mnass es llamad llamadoo aridad o grado.
Base de datos relacional Una base de datos relacional es un conjunto de una o más tablas estructuradas en registros (líneas) y campos (columnas), que se vinculan entre sí por un campo en común, en ambos casos posee las mismas características como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le denomina ID, identificador o clave. A esta manera de construir bases de datos se le denomina modelo relacional. Estrictamente hablando el término se refiere a una colección específica de datos pero a menudo se le usa, en forma errónea como sinónimo del software usado para gestionar esa colección de datos. Ese software se conoce como SGBD (sistema gestor de base de datos) relacional o RDBMS (del inglés relational database management system). Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización de una base de datos, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera óptima. Entre las ventajas de este modelo están: 1. Garantiza herramientas para evitar la duplicidad de registros, a través de campos claves claves o llaves. 2. Garantiza la integridad referencial: Así al eliminar un registro elimina todos los registros relacionados dependientes. 3. Favorece Favorece la normalizac normalización ión por ser más más comprensible comprensible y aplicabl aplicable. e.
Vé ase ase tam tambi biéé n • • • • • • • • • •
Hugh Darwen Base Basess de datos atos Mode Modelo lo de Dato Datoss Álge Álgebr braa rela relaci cion onal al Cálc Cálcul uloo rela relaci cion onal al Model Modeloo enti entida dadd-re rela laci ción ón SQL Lenguaje de consulta estructurado . Tabla Registro Campo
10
Normalización de bases de datos
11
Normalización Normalización de bases de datos Definición general El modelo entidad relación se basa como un sitio web en red aprobado por la IEEE. Originalmente era un concepto para estudiantes de la Universidad Harvard, pero actualmente está abierto a cualquier persona que tenga un proyecto de base de datos abierto (SQL, MySQL, Oracle).
Figura 1.0: Trabajo (Código, Nombre, Posición, Salario), donde Código es la Clave Primaria.
Se rige por las 3 Formas Normales. • Prime Primera ra form formaa norm normal al:: Debe ser una base de datos real, que represente un objeto del mundo y contener tablas basadas en el modelo entidad-relación. • Segu Segund ndaa forma forma norm normal al:: Debe cumplir la primera forma normal y además hacer referencia con una llave foránea. • Terc Tercer eraa form formaa norm normal al:: Debe cumplir la segunda forma normal y además contener una clave primaria. Dependencia funcional Aumentativa
entonces DNI
nombre
DNI ,dirección
nombre,dirección
Si con el DNI se determina el nombre de una persona, entonces con el DNI más la dirección también se determina el nombre o su dirección. Dependencia funcional transitiva
Sean X, Y, Z tres atributos (o grupos de atributos) de la misma entidad. Si Y depende funcionalmente de X y Z de Y , pero X no depende funcionalmente de Y , se dice entonces que Z depende transitivamente de X . Simbólicamente sería: X
Y
Z entonces X
FechaDeNacimiento Edad
Dependencia funcional transitiva.
Z
Edad
Conducir
FechaDeNacimiento
Edad
Conducir
Entonces tenemos que FechaDeNacimiento determina a Edad y la Edad determina a Conducir , indirectamente podemos saber a través de FechaDeNacimiento a Conducir (En muchos países, una persona necesita ser mayor de cierta edad para poder conducir un automóvil, por eso se utiliza este ejemplo).
Normalización de bases de datos
12
Propiedades deducidas Unión
y
entonces
Pseudo-transitiva
y
entonces
Descomposición
y
está incluido en
entonces
Claves Una clave primaria es aquella columna (pueden ser también dos columnas o más) que identifica únicamente a esa fila. La clave primaria es un identificador que va a ser único para cada fila. Se acostumbra a poner la clave primaria como la primera columna de la tabla pero esto no tiene que ser necesario, si no es más una conveniencia. Muchas veces la clave primaria es autonumérica. En una tabla puede que tengamos más de una clave, en tal caso se puede escoger una para ser la clave primaria, las demás claves son las claves candidatas. Además es la posible clave primaria. Una clave ajena (foreign key o clave foránea) es aquella columna que existiendo como dependiente en una tabla, es a su vez clave primaria en otra tabla. Una clave alternativa es aquella clave candidata que no ha sido seleccionada como clave primaria, pero que también puede identificar de forma única a una fila dentro de una tabla. Ejemplo: Si en una tabla clientes definimos el número de documento (id_cliente) como clave primaria, el número de seguro social de ese cliente podría ser una clave alternativa. En este caso no se usó como clave primaria porque es posible que no se conozca ese dato en todos los clientes. Una clave compuesta es una clave que está compuesta por más de una columna.
Formas Normales Las formas normales son aplicadas a las tablas de una base de datos. Decir que una base de datos está en la forma normal N es decir que todas sus tablas están en la forma normal N. En general, las primeras tres formas normales son suficientes para cubrir las necesidades de la mayoría de las bases de datos. El creador de estas 3 primeras formas normales (o reglas) fue Edgar F. Codd. [1] Primera Forma Normal (1FN) Una tabla está en Primera Forma Normal si: • • • • •
Todos los atributos atributos son atómico atómicos. s. Un atributo atributo es atómico atómico si los elementos elementos del dominio dominio son indivisib indivisibles, les, mínimos. mínimos. La tabla tabla contie contiene ne una una clav clavee prima primaria ria.. La clave clave prima primaria ria no cont contien ienee atribut atributos os nulos. nulos. No debe debe existir existir variación variación en en el número de column columnas. as. Los Campos Campos no clave clave deben deben identificar identificarse se por la clave clave (Depend (Dependencia encia Funcion Funcional) al)
Una tupla no puede tener múltiples valores en cada columna. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y y viceversa) Esta forma normal elimina los valores repetidos dentro de una BD
Normalización de bases de datos
13
Segunda Forma Normal (2FN) Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna
clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. (Todos los atributos que no son clave principal deben depender únicamente de la clave principal). En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de dependencia completamente funcional. Una dependencia funcional es completamente funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es que . Una dependencia funcional es una dependencia parcial si hay algunos atributos que pueden ser eliminados de X y la dependencia todavía se mantiene, esto es . Por ejemplo ejemplo {DNI, ID_PROYECTO} HORAS_TRABAJO (con el DNI de un empleado y el ID de un proyecto sabemos cuántas horas de trabajo por semana trabaja un empleado en dicho proyecto) es completamente dependiente dado que ni DNI HORAS_TRABAJO ni ID_PROYECTO HORAS_TRABAJO mantienen la dependencia. Sin embargo {DNI, ID_PROYECTO} NOMBRE_EMPLEADO es parcialmente dependiente dado que DNI NOMBRE_EMPLEADO mantiene la dependencia. Tercera Forma Normal (3FN) La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave. Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y. Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva vía DNUMBER porque las dependencias SSN →DNUMBER y DNUMBER →DMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT. Formalmente, un esquema de relacion está en 3 Forma Normal Elmasri-Navathe, [2] si para toda dependencia funcional , se cumple al menos una de las siguientes condiciones: 1. 2.
es su superllave o clave. es atrib atribut utoo prim primoo de ; esto esto es, es, si es miem miembro bro de algu alguna na clav clavee en
.
Además el esquema debe cumplir necesariamente, con las condiciones de segunda forma normal. Forma normal de Boyce-Codd (FNBC) La tabla se encuentra en FNBC si cada determinante, atributo que determina completamente a otro, es clave candidata. Deberá registrarse de forma anillada ante la presencia de un intervalo seguido de una formalizacion perpetua, es decir las variantes creadas, en una tabla no se llegaran a mostrar, si las ya planificadas, dejan de existir. Formalmente, un esquema de relación válida en , se cumple que 1.
está en FNBC, si y sólo si, para toda dependencia funcional
es su superllave o clave.
De esta forma, todo esquema que cumple FNBC, está además en 3FN; sin embargo, no todo esquema cumple con 3FN, está en FNBC.
que
Normalización de bases de datos
14
Cuarta Forma Normal (4FN) Una tabla se encuentra en 4FN si, y sólo si, para cada una de sus dependencias múltiples no funcionales X->->Y, siendo X una super-clave que, X es o una clave candidata o un conjunto de claves primarias. Quinta Forma Normal (5FN) Una tabla se encuentra en 5FN si: • La tabl tablaa est estáá en en 4FN 4FN • No existen existen relaciones relaciones de dependen dependencias cias no triviales triviales que no no siguen los criterio criterioss de las claves. claves. Una tabla que se encuentra en la 4FN se dice que está en la 5FN si, y sólo si, cada relación de dependencia se encuentra definida por las claves candidatas.
Diagrama de inclusión de todas las formas normales.
Reglas de Codd Codd se percató de que existían bases de datos en el mercado las cuales decían ser relacionales, pero lo único que hacían era guardar la información en las tablas, sin estar estas tablas literalmente normalizadas; entonces éste publicó 12 reglas que un verdadero sistema relacional debería tener, en la práctica algunas de ellas son difíciles de realizar. Un sistema podrá considerarse "más relacional" cuanto más siga estas reglas. Regla No. 1 - La Regla de la l a información Toda la información en un RDBMS está explícitamente representada de una sola manera por valores en una tabla .
Cualquier cosa que no exista en una tabla no existe del todo. Toda la información, incluyendo nombres de tablas, nombres de vistas, nombres de columnas, y los datos de las columnas deben estar almacenados en tablas dentro de las bases de datos. Las tablas que contienen tal información constituyen el Diccionario de Datos. Esto significa que todo tiene que estar almacenado en las tablas. Toda la información en una base de datos relacional se representa explícitamente en el nivel lógico exactamente de una manera: con valores en tablas. Por tanto los metadatos (diccionario, catálogo) se representan exactamente igual que los datos de usuario. Y puede usarse el mismo lenguaje (ej. SQL) para acceder a los datos y a los metadatos (regla 4) Regla No. 2 - La regla del acceso garantizado Cada ítem de datos debe ser lógicamente accesible al ejecutar una búsqueda que combine el nombre de la tabla, su clave primaria, y el nombre de la columna.
Esto significa que dado un nombre de tabla, dado el valor de la clave primaria, y dado el nombre de la columna requerida, deberá encontrarse uno y solamente un valor. Por esta razón la definición de claves primarias para todas las tablas es prácticamente obligatoria.
Normalización de bases de datos Regla No. 3 - Tratamiento sistemático de los valores nulos La información inaplicable o faltante f altante puede ser representada a través de valores nulos
Un RDBMS (Sistema Gestor de Bases de Datos Relacionales) debe ser capaz de soportar el uso de valores nulos en el lugar de columnas cuyos valores sean desconocidos. Regla No. 4 - La regla de la descripción de la base de datos La descripción de la base de datos es almacenada de la misma manera que los datos ordinarios, esto es, en tablas y columnas, y debe ser accesible a los usuarios autorizados .
La información de tablas, vistas, permisos de acceso de usuarios autorizados, etc, debe ser almacenada exactamente de la misma manera: En tablas. Estas tablas deben ser accesibles igual que todas las tablas, a través de sentencias de SQL (o similar). Regla No. 5 - La regla del sub-lenguaje Integral Debe haber al menos un lenguaje que sea integral para soportar la definición de datos, manipulación de datos, definición de vistas, restricciones de integridad, y control de autorizaciones y transacciones .
Esto significa que debe haber por lo menos un lenguaje con una sintaxis bien definida que pueda ser usado para administrar completamente la base de datos. Regla No. 6 - La regla de la actualización de vistas Todas las vistas que son teóricamente actualizables, deben ser actualizables por el sistema mismo .
La mayoría de las RDBMS permiten actualizar vistas simples, pero deshabilitan los intentos de actualizar vistas complejas. Regla No. 7 - La regla de insertar y actualizar La capacidad de manejar una base de datos con operandos simples aplica no sólo para la recuperación o consulta de datos, sino también para la inserción, actualización y borrado de datos '.
Esto significa que las cláusulas para leer, escribir, eliminar y agregar registros (SELECT, UPDATE, DELETE e INSERT en SQL) deben estar disponibles y operables, independientemente del tipo de relaciones y restricciones que haya entre las tablas. Regla No. 8 - La regla de independencia física El acceso de usuarios a la base de datos a través de terminales o programas de aplicación, debe permanecer consistente lógicamente cuando quiera que haya cambios en los datos almacenados, o sean cambiados los métodos de acceso a los datos.
El comportamiento de los programas de aplicación y de la actividad de usuarios vía terminales debería ser predecible basados en la definición lógica de la base de datos, y éste comportamiento debería permanecer inalterado, independientemente de los cambios en la definición física de ésta.
15
Normalización de bases de datos Regla No. 9 - La regla de independencia lógica Los programas de aplicación y las actividades de acceso por terminal deben permanecer lógicamente inalteradas cuando quiera que se hagan cambios (según los permisos asignados) en las tablas de la base de datos .
La independencia lógica de los datos especifica que los programas de aplicación y las actividades de terminal deben ser independientes de la estructura lógica, por lo tanto los cambios en la estructura lógica no deben alterar o modificar estos programas de aplicación. Regla No. 10 - La regla de la independencia de la integridad Todas las restricciones de integridad deben ser definibles en los datos, y almacenables en el catalogo, no en el programa de aplicación .
Las reglas de integridad
1. Ningún componente de una clave primaria puede tener valores en blanco o nulos (ésta es es la norma básica de integridad). 2. Para cada valor de clave foránea deberá existir un valor de clave clave primaria concordante. La combinación de estas reglas aseguran que haya integridad referencial. Regla No. 11 - La regla de la distribución El sistema debe poseer un lenguaje de datos que pueda soportar que la base de datos esté distribuida físicamente en distintos lugares sin que esto afecte o altere a los programas de aplicación .
El soporte para bases de datos distribuidas significa que una colección arbitraria de relaciones, bases de datos corriendo en una mezcla de distintas máquinas y distintos sistemas operativos y que esté conectada por una variedad de redes, pueda funcionar como si estuviera disponible como en una única base de datos en una sola máquina. Regla No. 12 - Regla de la no-subversión Si el sistema tiene lenguajes de bajo nivel, estos lenguajes de ninguna manera pueden ser usados para violar la integridad de las reglas y restricciones expresadas en un lenguaje de alto nivel (como SQL) .
Algunos productos solamente construyen una interfaz relacional para sus bases de datos No relacionales, lo que hace posible la subversión (violación) de las restricciones de integridad. Esto no debe ser permitido.
Referencias [1] A Relational Model of Data for Large Shared Data Banks Communications Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387 (http:// www.acm. www.acm.org/classics/nov95/toc. org/classics/nov95/toc.html) html) [2] Fundamentals of DATABASE SYSTEMS Addison Wesley;, ISBN-10: 0321122267, ISBN-13: 978-0321122261, 978-0321122261,
• E.F.C E.F.Cod oddd (jun (junio io de de 197 1970) 0).. "A Relational Model of Data for Large Shared Databanks" . Communications of the ACM. • C.J. C.J.Da Date te (199 (1994) 4).. "An Introduction to Database Systems" . Addison-Wesley.
16
Normalización de bases de datos
Vé ase ase tam tambi biéé n • 1NF - 2NF 2NF - 3NF - BCNF - 4NF - 5NF 5NF - DKNF - 6NF - Denorma Denormalizac lización ión • Edg Edgar Fra Frank Codd odd • Base de de datos
Enlaces externos • Bases de Datos: Datos: Formas Formas Normale Normales. s. Optimiza Optimizarr Tablas Tablas (http://www. (http://www.scourdesign. scourdesign.com/articulos/BD-FN. com/articulos/BD-FN.php) php)
17
Fuentes y contribuyentes del artículo
18
Fuentes y contribuyentes del artículo Base de datos Fuente: http://es.wikipedia.org/w/index.php?oldid=441 http://es.wikipedia.org/w/index.php?oldid=44181246 81246 Contribuyentes: .Sergio, 3coma14, Achicoria, AdeVega, Airunp, Aleator,
Alexav8, Alhen, Alphabravotango, Andreasmperu, Angus, Armando-Martin, Armin76, Arrt-932, Ascánder, Açigni-Lovrij, Baiji, Baldur71, Belb, Biasoli, Bigsus, BlackBeast, BuenaGente, Carrillo1, Cesar4545, ChaTo, Chanchicto, Cinabrium, Claudio Elias, Comae, Damián del Valle, Daniel G., Dferg, Diegusjaimes, Diotime, Dodo, Dpr, Dreitmen, Drini2, Ecemaml, Eddanlo, Ediazrod, Eduardosalg, Edub, Eli22, Elisardojm, Elwikipedista, Equi, Er Komandante, Er javi 93, FAR, Fabio.morales, Fcr, Fernandopcg, Foundling, FrancoGG, Furti, Gaabriieelaa, Gabriel Acquistapace, Gacq, GermanX, Gizmo II, Globalphilosophy, Gonis, Grivadeneira, HUB, HUEVOCHIPS, Hispa, Humbefa, Humberto, Irbian, JMPerez, Jesuja, Jgalgarra, Jkbw, Jonik, JorgeGG, Jsanchezes, Jugones55, Klondike, Kokoo, Lazamazu, Leonardo, Levhita, Lourdes Cardenal, Magister Mathematicae, Maldoror, Mansoncc, ManuelGR, Matdrodes, Mel 23, Mikelo, Moriel, Mortadelo2005, Muro de Aguas, Murven, Máximo de Montemar, Napoleón333, Nelauxiliadora, No sé qué nick poner, Nonick, Nubecosmica, OMenda, Olivares86, Opinador, Orgullomoore, Otermin, PACO, Pablin3, Pabloab, Pablotorres, Pacolope, PeiT, Petruss, Pieter, PoLuX124, Ppfk, Renacimiento, RoyFocker, Rsg, Rumpelstiltskin, Sabbut, Sanbec, Sauron, Savh, Sergio Andres Segovia, Shasa, Sramco, Superzerocool, Taichi, Tano4595, Taragui, Technopat, Tirithel, Tomatejc, Tostadora, Wesisnay, Xenoforme, Xpel1, Yamaneko, Yrithinnd, ZackBsAs, Zanorte, Zuirdj, conversion script, 830 ediciones anónimas Sistema de gestión de bases de datos Fuente: http://es.wikipedia.org/w/index.php?oldid=441 http://es.wikipedia.org/w/index.php?oldid=44121482 21482 Contribuyentes: 4lex, Agmesas, Banfield, Biasoli, Diegusjaimes, Dodo, Eligna, Humbefa,
Leugim1972, Nioger, Olivares86, Poco a poco, Riviera, Robertorp, Savh, Super braulio, Technopat, Tirithel, 74 e diciones anónimas Base de datos orientada a objetos Fuente: http://es.wikipedia.org/w/index.php?oldid=4 http://es.wikipedia.org/w/index.php?oldid=44010465 4010465 Contribuyentes: Dodo, GermanX, Jarke, Jesuja,
Niqueco, Psicosix, Tano4595, Tirithel,
Tomatejc, 15 ediciones anónimas Modelo relacional Fuente: http://es.wikipedia.org/w/index.php?oldid=429 http://es.wikipedia.org/w/index.php?oldid=42970783 70783 Contribuyentes: Airunp, Amadís, Angel GN, Antur,
Barcex, CommonsDelinker, Delphidius, Diosa, Dogor, Edmenb, Eligna, Eliomaximus, Emijrp, GermanX, Guanxito, Humbefa, Humberto, Javierito92, Jesuja, Lanselott, Leonel.canton, Lhombria, Ltourn, Magomaitin, Maldoror, Mansoncc, Manwë, Mario modesto, Matdrodes, Ooscarr, Oscaroe, PoLuX124, RoyFocker, Rrupo, Savh, Snakeyes, Super braulio, Tano4595, Tecnicoespaniol, U.gonzalez, Vitorres, Xatufan, 114 ediciones anónimas Normalización de bases de datos Fuente: http://es.wikipedia.org/w/index.php?oldid=4398 http://es.wikipedia.org/w/index.php?oldid=43987844 7844 Contribuyentes: Airunp, Akhram, Alagoro, Alexav8, Almorca, Andreasmperu, Andvarp,
Angus, Antur, BL, Barct, Bedwyr, BlackBeast, C'est moi, Changa, Cumanacr, David0811, Deniel77, Dferg, Diego diaz espinoza, Diegusjaimes, Dodo, Dovidena, Ecelan, Edmenb, Edtruji, Egaida, Elielsardanons, Eluseche, Elwikipedista, Er Komandante, FAR, Fama.arciniega, Felipecanol, Fgtez, Filipo, Gaeddal, Gatra, GermanX, Goofys, Grillitus, Gusgus, Hernan Beati, Hprmedina, Humbefa, Humberto, Isha, Jago84, Javierito92, Jkarretero, Juandiegocano, Jugones55, Jynus, Kuanto, Libertad y Saber, Lucien leGrey, Maleiva, Mansoncc, ManuelMontiel, Manuelt15, Manwë, Matdrodes, Mencey, Merlyn333, Miguelo on the road, Mortadelo2005, Mushii, Máximo de Montemar, Netito777, PabloCastellano, Pabloab, Paintman, Pan con queso, PoLuX124, Queninosta, RafaRamirez, Rayleon, RoyFocker, Rrupo, Rsg, SHeLoo, Savh, Snakeyes, Spirit-Black-Wikipedista, Super braulio, Taichi, Tirithel, Tostadora, Truor, Tyrannosaurusreflex, U.gonzalez, Valyag, Verajm, Vitorres, Walter closser, Xatufan, Yeza, 696 ediciones anónimas
Fuentes de imagen, Licencias y contribuyentes
Fuentes de imagen, Licencias y contribuyentes Archivo:OOo-2.0-Base-ca.png Fuente: http://es.wikipedia.org/w/index.php?title=Archivo: http://es.wikipedia.org/w/index.php?title=Archivo:OOo-2.0-Base-ca.png OOo-2.0-Base-ca.png Licencia: GNU Lesser General Public License Contribuyentes: German,
Iradigalesc Archivo:TablaRelacional2.png Fuente: http://es.wikipedia.org/w/index.php?title=Archivo: http://es.wikipedia.org/w/index.php?title=Archivo:TablaRelacional2.png TablaRelacional2.png Licencia: Creative Commons Attribution 3.0 Contribuyentes: User:Edtruji Archivo:DependenciaFunional2.png Fuente: http://es.wikipedia.org/w/index.php?title=Archivo http://es.wikipedia.org/w/index.php?title=Archivo:DependenciaFunional2.png :DependenciaFunional2.png Licencia: GNU Free Documentation License Contribuyentes:
User:Edtruji Archivo:FormasNormales.png Fuente: http://es.wikipedia.org/w/index.php?title=Archi http://es.wikipedia.org/w/index.php?title=Archivo:FormasNormales.png vo:FormasNormales.png Licencia: Public Domain Contribuyentes: User:Diego diaz espinoza
19
Licencia
Licencia Creative Commons Attribution-Share Alike 3.0 Unported http://creativecommons.org/licenses/by-sa/3.0/
20