88
PDF generado usando el kit de herramientas de fuente abierta mwlib. Ver http://code.pediapress.com/ para mayor información. PDF generated at: Wed, 26 Jan 2011 13:34:30 UTC Bases de Datos Introducción por Wikipedia

Manual SQL por Wikipedia

  • Upload
    dashin1

  • View
    601

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Manual SQL por Wikipedia

PDF generado usando el kit de herramientas de fuente abierta mwlib. Ver http://code.pediapress.com/ para mayor información.PDF generated at: Wed, 26 Jan 2011 13:34:30 UTC

Bases de DatosIntroducción por Wikipedia

Page 2: Manual SQL por Wikipedia

ContenidosArtículosIntroducción 1

Base de datos 1Dato 5Base de datos relacional 6Sistema administrador de bases de datos relacionales 10Sistema de gestión de bases de datos 14Clave primaria 16Clave foránea 18Columna (base de datos) 19Registro (base de datos) 20Null (SQL) 20Trigger (base de datos) 28Vista (base de datos) 31

Ejemplos de Software Disponible 32

SQL 32MySQL 39Oracle 48PostgreSQL 50Firebird 57Microsoft SQL Server 60InterBase 63

Otros 66

Software libre 66Normalización de bases de datos 76

ReferenciasFuentes y contribuyentes del artículo 83Fuentes de imagen, Licencias y contribuyentes 85

Licencias de artículosLicencia 86

Page 3: Manual SQL por Wikipedia

1

Introducción

Base de datos

OpenOffice.org Base: sistema de gestión de bases de datos.

Una base de datos o banco de datos (enocasiones abreviada con la sigla BD o con laabreviatura b. d.) es un conjunto de datospertenecientes a un mismo contexto yalmacenados sistemáticamente para suposterior uso. En este sentido, una bibliotecapuede considerarse una base de datoscompuesta en su mayoría por documentos ytextos impresos en papel e indexados parasu consulta. En la actualidad, y debido aldesarrollo tecnológico de campos como lainformática y la electrónica, la mayoría delas 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 yposteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como suutilizació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 ampliamenteutilizadas 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 lasleyes de varios países. Por ejemplo, en España los datos personales se encuentran protegidos por la Ley Orgánica deProtección de Datos de Carácter Personal (LOPD).

Tipos de Base de DatosLas bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidadde 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 queposteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo,realizar proyecciones y tomar decisiones.

Page 4: Manual SQL por Wikipedia

Base de datos 2

Bases de datos dinámicas

Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones comoactualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de estopuede ser la base de datos utilizada en un sistema de información de una tienda de abarrotes, una farmacia, unvideoclub.

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 unabase de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de unadeterminada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el textocompleto, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —vermás abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultadosde 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 derevistas 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 vidao médicas. Se pueden considerar en varios subtipos:• Las que almacenan secuencias de nucleótidos o proteínas.• Las bases de datos de rutas metabólicas.• Bases de datos de estructura, comprende los registros de datos experimentales sobre estructuras 3D de

biomoléculas-• Bases de datos clínicas.• Bases de datos bibliográficas (biológicas, químicas, médicas y de otros campos): PubChem, Medline,

EBSCOhost.

Modelos de bases de datosAdemás de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a sumodelo 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 seguarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Losmodelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente debase de datos; por lo general se refieren a algoritmos, y conceptos matemáticos.Algunos modelos con frecuencia utilizados en las bases de datos:

Page 5: Manual SQL por Wikipedia

Base de datos 3

Bases de datos jerárquicasÉstas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. Eneste modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre deinformación puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijosse los conoce como hojas.Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen deinformació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 dedatos.

Base de datos de redÉste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto denodo: 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 deredundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de redha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.

Bases de datos transaccionalesSon bases de datos cuyo único fin es el envío y recepción de datos a grandes velocidades, estas bases son muy pococomunes y están dirigidas por lo general al entorno de análisis de calidad, datos de producción e industrial, esimportante entender que su fin único es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto laredundancia y duplicación de información no es un problema como con las demás bases de datos, por lo general parapoderlas 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. Trasser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), notardó 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". Pesea que ésta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualizade una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuestapor 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 otrosmodelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y deutilizar 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 QueryLanguage o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemasde 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 unabase de datos.Durante los años 80 la aparición de dBASE produjo una revolución en los lenguajes de programación y sistemas deadministración de datos. Aunque nunca debe olvidarse que dBase no utilizaba SQL como lenguaje base para sugestión.

Page 6: Manual SQL por Wikipedia

Base de datos 4

Bases de datos multidimensionalesSon 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 datosrelacional podría serlo también en una base de datos multidimensional), la diferencia está más bien a nivelconceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, obien representan dimensiones de la tabla, o bien representan métricas que se desean estudiar.

Bases de datos orientadas a objetosEste modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en labase 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 delparadigma de objetos:• Encapsulación - Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos

incorrectos o conflictos.• Herencia - Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases.• Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos.En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de ladefinició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). Laimplementació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ésde sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarseindependencia entre programas y operaciones.SQL:2003, es el estándar de SQL92 ampliado, soporta los conceptos orientados a objetos y mantiene lacompatibilidad con SQL92.

Bases de datos documentalesPermiten la indexación a texto completo, y en líneas generales realizar búsquedas más potentes. Tesaurus es unsistema de índices optimizado para este tipo de bases de datos.

Bases de datos deductivasUn sistema de base de datos deductiva, es un sistema de base de datos pero con la diferencia de que permite hacerdeducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base dedatos. Las bases de datos deductivas son también llamadas bases de datos lógicas, a raíz de que se basa en lógicamatemá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 dostipos: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 SGBDparticipantes tienen cierto grado de autonomía local y tienen acceso a varias bases de datos autónomas preexistentesalmacenados en los SGBD, muchos de estos emplean una arquitectura cliente-servidor.

Page 7: Manual SQL por Wikipedia

Base de datos 5

Estas surgen debido a la existencia física de organismos descentralizados. Esto les da la capacidad de unir las basesde datos de cada localidad y acceder así a distintas universidades, sucursales de tiendas, etcétera.

Véase también• Sistema de gestión de base de datos• Modelo relacional, normalización de bases de datos• Base de datos orientada a objetos• Almacén de datos• Minería de datos• Base de datos biológica• Base de datos probabilística

DatoEl dato es una representación simbólica (numérica, alfabética, algorítmica etc.), un atributo o una característica deuna entidad. El dato no tiene valor semántico (sentido) en sí mismo, pero si recibe un tratamiento (procesamiento)apropiado, se puede utilizar en la realización de cálculos o toma de decisiones. Es de empleo muy común en elámbito informático y, en general, prácticamente en cualquier disciplina científica.En programación, un dato es la expresión general que describe las características de las entidades sobre las cualesopera un algoritmo.En Estructura de datos, es la parte mínima de la información.

Un dato por sí mismo no constituye información, es el procesamiento de los datoslo que nos proporciona información.

Véase también: Archivo informático

HumanidadesEn humanidades, específicamente en el ámbito de las ciencias de la información y la bibliotecología, se consideraque un dato es una expresión mínima de contenido sobre un tema. Ejemplos de datos son: la altura de una montaña,la fecha de nacimiento de un personaje histórico, el peso específico de una sustancia, el número de habitantes de unpaís, etc. La información representa un conjunto de datos relacionados que constituyen una estructura de menoscomplejidad (por ejemplo, un capítulo de un libro de ciencias). En otras palabras, un conjunto de datosconvenientemente estructurado y organizado es lo que llamamos información.

Page 8: Manual SQL por Wikipedia

Dato 6

Véase también• Información• Conocimiento• Sistema de información

Base de datos relacionalUna base de datos relacional es una base de datos que cumple con elmodelo relacional, el cual es el modelo más utilizado en la actualidadpara implementar bases de datos ya planificadas. Permiten establecerinterconexiones (relaciones) entre los datos (que están guardados entablas), y a través de dichas conexiones relacionar los datos de ambastablas, de ahí proviene su nombre: "Modelo Relacional". Tras serpostuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó enconsolidarse como un nuevo paradigma en los modelos de base de datos.[1]

Características• Una base de datos relacional se compone de varias tablas o relaciones.• No pueden existir dos tablas con el mismo nombre.• Cada tabla es a su vez un conjunto de registros (filas y columnas).• La relación entre una tabla padre y un hijo se lleva a cabo por medio de las claves primarias y ajenas (o foráneas).• Las claves primarias son la clave principal de un registro dentro de una tabla y éstas deben cumplir con la

integridad de datos.• Las claves ajenas se colocan en la tabla hija, contienen el mismo valor que la clave primaria del registro padre;

por medio de éstas se hacen las relaciones.

Elementos

Relaciones base y derivadasEn una base de datos relacional, todos los datos se almacenan y se accede a ellos por medio de relaciones. Lasrelaciones que almacenan datos son llamadas "relaciones base" y su implementación es llamada "tabla". Otrasrelaciones no almacenan datos, pero son calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas"relaciones derivadas" y su implementación es llamada "vista" o "consulta". Las relaciones derivadas sonconvenientes ya que expresan información de varias relaciones actuando como si fuera una sola.

Page 9: Manual SQL por Wikipedia

Base de datos relacional 7

RestriccionesUna restricción es una condición que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas noson determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datossea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valoresenteros entre 1 y 10.Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones restringen los datosque pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado unvalor booleano, indicando si los datos satisfacen la restricción o no.Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizarmejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales.

DominiosUn dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores delatributo, 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.

Clave únicaCada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, esdecir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjuntode campos se llama clave única.Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a claveprimaria.

Clave primariaUna clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demásatributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto espor medio de claves foráneas.Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL.

Clave foráneaUna clave foránea es una referencia a una clave en otra tabla. Las claves foráneas no necesitan ser claves únicas en latabla donde están y sí a donde están referenciadas.Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados, obviamente se permiteque haya varios empleados en un mismo departamento, pero existirá sólo un departamento.

Page 10: Manual SQL por Wikipedia

Base de datos relacional 8

Clave índiceLas claves índice surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creadoscon cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos,pueden encontrar los registros de forma no secuencial usando la clave índice.Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para ciertadistribución de datos y tamaño de la relación.Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, lasclaves índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

Procedimientos almacenadosUn procedimiento almacenado es código ejecutable que se asocia y se almacena con la base de datos. Losprocedimientos almacenados usualmente recogen y personalizan operaciones comunes, como insertar un registrodentro de una tabla, recopilar información estadística, o encapsular cálculos complejos. Son frecuentemente usadospor un API por seguridad o simplicidad.Los procedimientos almacenados no son parte del modelo relacional, pero todas las implementaciones comercialeslos incluyen.

EstructuraLa base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia).El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos:• El nombre de cada tabla• El nombre de cada columna• El tipo de dato de cada columna• La tabla a la que pertenece cada columnaLas bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dichoproceso es un esquema que permite que la base de datos sea usada de manera óptima.Los datos o instancia es el contenido de la base de datos en un momento dado. Es en sí, el contenido de todos losregistros.

Manipulación de la informaciónPara manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formalesel á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.El lenguaje más común para construir las consultas a bases de datos relacionales es SQL (Structured QueryLanguage), un estándar implementado por los principales motores o sistemas de gestión de bases de datosrelacionales.En el modelo relacional los atributos deben estar explícitamente relacionados a un nombre en todas las operaciones,en cambio, el estándar SQL permite usar columnas sin nombre en conjuntos de resultados, como el asteriscotaquigráfico (*) como notación de consultas.Al contrario del modelo relacional, el estándar SQL requiere que las columnas tengan un orden definido, lo cual esfácil de implementar en una computadora, ya que la memoria es lineal.Es de notar, sin embargo, que en SQL el orden de las columnas y los registros devueltos en cierto conjunto deresultado nunca está garantizado, a no ser que explícitamente sea especificado por el usuario.

Page 11: Manual SQL por Wikipedia

Base de datos relacional 9

Manejadores de base de datos relacionalesExiste software exclusivamente dedicado a tratar con bases de datos relacionales. Este software se conoce comoSGBD (Sistema de Gestión de Base de Datos relacional) o RDBMS (del inglés Relational Database ManagementSystem).Entre los gestores o manejadores actuales más populares encontramos: MySQL, PostgreSQL, Oracle,DB2,INFORMIX, Interbase, FireBird, Sybase y Microsoft SQL Server.

Ventajas y desventajasVentajas

• Provee herramientas que garantizan evitar la duplicidad de registros.• Garantiza la integridad referencial, así, al eliminar un registro elimina todos los registros relacionados

dependientes.• Favorece la normalización por ser más comprensible y aplicable.Desventajas

• Presentan deficiencias con datos gráficos, multimedia, CAD y sistemas de información geográfica.• No se manipulan de forma manejable los bloques de texto como tipo de dato.Las bases de datos orientadas a objetos (BDOO) se propusieron con el objetivo de satisfacer las necesidades de lasaplicaciones anteriores y así, complementar pero no sustituir a las bases de datos relacionales.

Diseño de las bases de datos relacionalesEl primer paso para crear una base de datos, es planificar el tipo de información que se quiere almacenar en lamisma, teniendo en cuenta dos aspectos: la información disponible y la información que necesitamos.La planificación de la estructura de la base de datos, en particular de las tablas, es vital para la gestión efectiva de lamisma. El diseño de la estructura de una tabla consiste en una descripción de cada uno de los campos que componenel registro y los valores o datos que contendrá cada uno de esos campos.Los campos son los distintos tipos de datos que componen la tabla, por ejemplo: nombre, apellido, domicilio. Ladefinición de un campo requiere: el nombre del campo, el tipo de campo, el ancho del campo, etc.Los registros constituyen la información que va contenida en los campos de la tabla, por ejemplo: el nombre delpaciente, el apellido del paciente y la dirección de este. Generalmente los diferente tipos de campos que su puedenalmacenar son los siguientes: Texto (caracteres), Numérico (números), Fecha / Hora, Lógico (informaciones lógicassi/no, verdadero/falso, etc.), imágenes.En resumen, el principal aspecto a tener en cuenta durante el diseño de una tabla es determinar claramente loscampos necesarios, definirlos en forma adecuada con un nombre especificando su tipo y su longitud.

Page 12: Manual SQL por Wikipedia

Base de datos relacional 10

Véase también• Base de datos• Modelo relacional• Modelo entidad-relación• Base de datos orientada a objetos

Referencias[1] Communications of the ACM, volume=13, issue=6, pages=377-387 (http:/ / www. acm. org/ classics/ nov95/ toc. html) en inglés

Enlaces externos• Articulo sobre Como ocupar menos espacio de disco duro en bases de datos relacionales (http:/ / www.

nuevastecnologias. com. ar/ 2010/ 04/ como-ahorrar-espacio-en-una-base-de. html)• Comunidad de profesionales Oracle hispanoparlantes (http:/ / comunidadoraclehispana. ning. com)• Artículo sobre Base de datos relacional (http:/ / objetoide. blogspot. com/ 2008/ 02/ base-de-datos-relacional.

html)• Blog sobre base de datos Oracle y alta disponibilidad (http:/ / oracleracnotes. wordpress. com/ )

Sistema administrador de bases de datosrelacionalesUn RDBMS es un Sistema Administrador de Bases de Datos Relacionales. RDBMS viene del acrónimo en inglésRelational Data Base Management System.Los RDBMS proporcionan el ambiente adecuado para gestionar una base de datos.

Reglas de CoddEn 1985 el Dr. Edgar Frank Codd publicó 12 reglas para evaluar si un DBMS (DataBase Management System)puede considerarse un RDBMS (Relational DataBase Management System), o dicho más concisamente, si unsistema de bases de datos puede considerarse o no relacional, y mas.

Regla 1: regla de la informaciónToda la información de la base de datos debe estar representada explícitamente en el esquema lógico. Es decir, todoslos datos están en las tablas.

Regla 2: regla del acceso garantizadoPara todos y cada uno de los datos (valores atómicos) de una Base de Datos Relacional (BDR) se garantiza que sonaccesibles a nivel lógico utilizando una combinación de nombre de tabla, valor de clave primaria y nombre decolumna.• Cualquier dato almacenado en una BDR tiene que poder ser direccionado unívocamente. Para ello hay que

indicar en qué tabla está, cuál es la columna y cuál es la fila (mediante la clave primaria).• Por tanto se necesita el concepto de clave primaria, que no es soportado en muchas implementaciones. En estos

casos, para lograr un efecto similar se puede hacer lo siguiente:• Hacer que los atributos clave primaria no puedan ser nulos (NOT NULL).• Crear un índice único sobre la clave primaria.

Page 13: Manual SQL por Wikipedia

Sistema administrador de bases de datos relacionales 11

• No eliminar nunca el índice.

Regla 3: tratamiento sistemático de valores nulosLos valores nulos (que son distintos de la cadena vacía, blancos, 0, ...) se soportan en los SGBD totalmenterelacionales para representar información desconocida o no aplicable de manera sistemática, independientemente deltipo de datos.• Se reconoce la necesidad de la existencia de valores nulos, para un tratamiento sistemático de los mismos.• Hay problemas para soportar los valores nulos en las operaciones relacionales, especialmente en las operaciones

lógicas.• Lógica trivaluada. En una posible solución. Existen tres (no dos) valores de verdad: Verdadero, Falso y

Desconocido (null). Se crean tablas de verdad para las operaciones lógicas:• null Y null = null• Verdadero Y null = null• Falso Y null = Falso• Verdadero O null = Verdadero• etc..

Un inconveniente es que de cara al usuario el manejo de los lenguajes relacionales se complica pues es más difícil deentender.

Regla 4: diccionario dinámico en línea basado en el modelo relacionalLa descripción de la base de datos se representa a nivel lógico de la misma manera que los datos normales, de modoque los usuarios autorizados pueden aplicar el mismo lenguaje relacional a su consulta, igual que lo aplican a losdatos normales.• Es una consecuencia de la regla 1 que se destaca por su importancia. Los metadatos se almacenan usando el

modelo relacional, con todas las consecuencias.

Regla 5: regla del sublenguaje de datos completoUn sistema relacional debe soportar varios lenguajes y varios modos de uso de terminal (ej: rellenar formularios,etc.). Sin embargo, debe existir al menos un lenguaje cuyas sentencias sean expresables, mediante una sintaxis biendefinida, como cadenas de caracteres y que sea completo, soportando:• Definición de datos• Definición de vistas• Manipulación de datos (interactiva y por programa)• Limitantes de integridad• Limitantes de transacción (iniciar, realizar, deshacer) (Begin, commit, rollback).• Además de poder tener interfaces más amigables para hacer consultas, etc. siempre debe de haber una manera de

hacerlo todo de manera textual, que es tanto como decir que pueda ser incorporada en un programa tradicional.• Un lenguaje que cumple esto en gran medida es SQL.

Page 14: Manual SQL por Wikipedia

Sistema administrador de bases de datos relacionales 12

Regla 6: regla de actualización de vistasTodas las vistas que son teóricamente actualizables se pueden actualizar por el sistema.• El problema es determinar cuáles son las vistas teóricamente actualizables, ya que no está muy claro.• Cada sistema puede hacer unas suposiciones particulares sobre las vistas que son actualizables.

Regla 7: inserción, actualización y borrado de alto nivelLa capacidad de manejar una relación base o derivada como un solo operando se aplica no sólo a la recuperación delos datos (consultas), si no también a la inserción, actualización y borrado de datos.• Esto es, el lenguaje de manejo de datos también debe ser de alto nivel (de conjuntos). Algunas bases de datos

inicialmente sólo podían modificar las tuplas de la base de datos de una en una (un registro de cada vez).

Regla 8: independencia física de datosLos programas de aplicación y actividades del terminal permanecen inalterados a nivel fisico cuando quiera que serealicen cambios en las representaciones de almacenamiento o métodos de acceso.• El modelo relacional es un modelo lógico de datos, y oculta las características de su representación física.• es la capacidad de modificar el esquema interno sin tener que alterar el esquema conceptual (o los externos). Porejemplo, puede ser necesario reorganizar ciertos ficheros físicos con el fin de mejorar el rendimiento de lasoperaciones de consulta o de actualización de datos. la independencia física se refiere sólo a la separación entre lasaplicaciones y las estructuras físicas de almacenamiento.La capacidad de modificar el esquema conceptual sin obligar a rescribir los programas de aplicación.

Regla 9: independencia lógica de datosLos programas de aplicación y actividades del terminal permanecen inalterados a nivel lógico cuando quiera que serealicen cambios a las tablas base que preserven la información.• Cuando se modifica el esquema lógico preservando información (no valdría p.ej. eliminar un atributo) no es

necesario modificar nada en niveles superiores.• Ejemplos de cambios que preservan la información:

• Añadir un atributo a una tabla base.• Sustituir dos tablas base por la unión de las mismas. Usando vistas de la unión puedo recrear las tablas

anteriores...• depurar las vistas de diseños y contenerla estasble.

Regla 10: independencia de integridadLos limitantes de integridad específicos para una determinada base de datos relacional deben poder ser definidos enel sublenguaje de datos relacional, y almacenables en el catálogo, no en los programas de aplicación.• El objetivo de las bases de datos no es sólo almacenar los datos, si no también sus relaciones y evitar que estas

(limitantes) se codifiquen en los programas. Por tanto en una BDR se deben poder definir limitantes de integridad.• Cada vez se van ampliando más los tipos de limitantes de integridad que se pueden utilizar en los SGBDR,

aunque hasta hace poco eran muy escasos.• Como parte de los limitantes inherentes al modelo relacional (forman parte de su definición) están:

• Una BDR tiene integridad de entidad. Es decir, toda tabla debe tener una clave primaria.• Una BDR tiene integridad referencial. Es decir, toda clave externa no nula debe existir en la relación donde es

primaria.

Page 15: Manual SQL por Wikipedia

Sistema administrador de bases de datos relacionales 13

Regla 11: independencia de distribuciónUna BDR tiene independencia de distribución.• Las mismas órdenes y programas se ejecutan igual en una BD centralizada que en una distribuida.• Las BDR son fácilmente distribuibles:

• Las tablas se dividen en fragmentos que se distribuyen.• Cuando se necesitan las tablas completas se recombinan usando operaciones relacionales con los fragmentos.

• Sin embargo se complica más la gestión interna de la integridad, etc.• Esta regla es responsable de tres tipos de transparencia de distribución:

• Transparencia de localización. El usuario tiene la impresión de que trabaja con una BD local. (aspecto de laregla de independencia física)

• Transparencia de fragmentación. El usuario no se da cuenta de que la relación con que trabaja estáfragmentada. (aspecto de la regla de independencia lógica de datos).

• Transparencia de replicación. El usuario no se da cuenta de que pueden existir copias (réplicas) de una mismarelación en diferentes lugares.

Regla 12: regla de la no subversiónSi un sistema relacional tiene un lenguaje de bajo nivel (un registro de cada vez), ese bajo nivel no puede ser usadopara saltarse (subvertir) las reglas de integridad y los limitantes expresados en los lenguajes relacionales de más altonivel (una relación (conjunto de registros) de cada vez)• Algunos problemas no se pueden solucionar directamente con el lenguaje de alto nivel.• Normalmente se usa SQL inmerso en un lenguaje anfitrión para solucionar estos problemas. Se utiliza el concepto

de cursor para tratar individualmente las tuplas de una relación. En cualquier caso no debe ser posible saltarse loslimitantes de integridad impuestos al tratar las tablas a ese nivel.

Page 16: Manual SQL por Wikipedia

Sistema de gestión de bases de datos 14

Sistema de gestión de bases de datosLos sistemas de gestión de bases de datos (en inglés database management system, abreviado DBMS) son un tipode software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que lautilizan.

PropósitoEl propósito general de los sistemas de gestión de bases de datos es el de manejar de manera clara, sencilla yordenada un conjunto de datos que posteriormente se convertirán en información relevante para una organización.

ObjetivosExisten 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 alusuario. 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 queaquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidosse actualicen de forma simultánea. Por otra parte, la base de datos representa una realidad determinada que tienedeterminadas condiciones, por ejemplo que los menores de edad no pueden tener licencia de conducir. El sistemano debería aceptar datos de un conductor menor de edad. En los SGBD existen herramientas que facilitan laprogramació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 debengarantizar que esta información se encuentra segura de permisos a usuarios y grupos de usuarios, que permitenotorgar diversas categorías de permisos.

• Manejo de transacciones. Una transacción es un programa que se ejecuta como una sola operación. Esto quieredecir que luego de una ejecución en la que se produce una falla es el mismo que se obtendría si el programa no sehubiera ejecutado. Los SGBD proveen mecanismos para programar las modificaciones de los datos de una formamucho 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 lainformación solicitada y en almacenar los cambios realizados.

Ventajas• Proveen facilidades para la manipulación de grandes volúmenes de datos (ver objetivos). Entre éstas:

• Simplifican la programación de equipos de consistencia.• Manejando las políticas de respaldo adecuadas, garantizan que los cambios de la base serán siempre

consistentes sin importar si hay errores correctamente, etc.• Organizan los datos con un impacto mínimo en el código de los programas.• Disminuyen drásticamente los tiempos de desarrollo y aumentan la calidad del sistema desarrollado si son bien

explotados por los desarrolladores.• Usualmente, proveen interfaces y lenguajes de consulta que simplifican la recuperación de los datos.

Page 17: Manual SQL por Wikipedia

Sistema de gestión de bases de datos 15

Inconvenientes1. Típicamente, es necesario disponer de una o más personas que administren de la base de datos, en la misma

forma en que suele ser necesario en instalaciones de cierto porte disponer de una o más personas que administrenlos sistemas operativos. Esto puede llegar a incrementar los costos de operación en una empresa. Sin embargo hayque balancear este aspecto con la calidad y confiabilidad del sistema que se obtiene.

2. Si se tienen muy pocos datos que son usados por un único usuario por vez y no hay que realizar consultascomplejas 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 conocimiento de lasfuncionalidades del mismo para poder aprovecharlo al máximo.

4. Tamaño: la complejidad y la gran cantidad de funciones que tienen hacen que sea un software de gran tamaño,que requiere de gran cantidad de memoria para poder correr.

5. Coste del hardware adicional: los requisitos de hardware para correr un SGBD por lo general son relativamentealtos, por lo que estos equipos pueden llegar a costar gran cantidad de dinero.

Productos SGBD disponibles en el mercado

SGBD libres• PostgreSQL (http:/ / www. postgresql. org Postgresql) Licencia BSD• Firebird basada en la versión 6 de InterBase, Initial Developer's PUBLIC LICENSE Version 1.0.• SQLite (http:/ / www. sqlite. org SQLite) Licencia Dominio Público• DB2 Express-C (http:/ / www. ibm. com/ software/ data/ db2/ express/ )• Apache Derby (http:/ / db. apache. org/ derby/ )

SGBD no libres• MySQL: Licencia Dual, depende del uso. No se sabe hasta cuándo permanecerá así, ya que ha sido comprada por

Oracle. Sin embargo, existen 2 versiones: una gratuita que sería equivalente a la edición "express" SQL server deMicrosoft Windows, y otra más completa de pago.

• Advantage Database• dBase• FileMaker• Fox Pro• gsBase• IBM DB2: Universal Database (DB2 UDB)• IBM Informix• Interbase de CodeGear, filial de Borland• MAGIC• Microsoft Access• Microsoft SQL Server• NexusDB• Open Access• Oracle• Paradox• PervasiveSQL• Progress (DBMS)• Sybase ASE• Sybase ASA

Page 18: Manual SQL por Wikipedia

Sistema de gestión de bases de datos 16

• Sybase IQ• WindowBase• IBM IMS Base de Datos Jerárquica• CA-IDMS

SGBD no libres y gratuitos• Microsoft SQL Server Compact Edition Basica• Sybase ASE Express Edition para Linux (edición gratuita para Linux)• Oracle Express Edition 10

Véase también• Base de datos• Comparación de sistemas administradores de bases de datos relacionales

Clave primariaEn el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de camposque identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna oconjunto de columnas. No pueden haber dos filas en una tabla que tengan la misma clave primaria.Una clave primaria debe identificar unívocamente a todas las posibles filas de una tabla y no solo a las filas que seencuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN(asociado a un libro). Las guias telefónicas y diccionarios no pueden usar nombres o palabras o números del sistemadecimal de Dewey como claves candidatas, porque identifican unívocamente números de teléfono o palabras.Una clave primaria es un caso especial de clave única. La mayor diferencia es que para claves únicas, no se imponeautomáticamente la restricción implícita NOT NULL, mientras que para claves primarias, sí. Así, los valores encolumnas de clave única pueden o no ser NULL. Otra diferencia es que las claves primarias deben definirse pormedio de otra sintaxis.El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre claveprimaria y otros tipos de claves. Las claves primarias fueron agregadas al estándar SQL principalmente paraconveniencia del programador.Tanto claves únicas como claves primarias pueden referenciarse con claves foráneas.

Definiendo claves primariasLas claves primarias están definidas el estándar ANSI SQL, mediante la directiva PRIMARY KEY. La sintaxis paraaplicar tal directiva a una tabla existente está definida en SQL:2003 de esta manera:

ALTER TABLE <identificador_de_la_tabla>

ADD [ CONSTRAINT <identificador_de_la_directiva> ]

PRIMARY KEY ( <nombre_de_columna> {, <nombre_de_columna>}... )

La clave primaria puede especificarse directamente en el momento de la creación de la tabla también. En el estándarSQL, las claves primarias pueden estar compuestas por una o más columnas. Cada columna que forme parte de laclave primaria queda implícitamente definida como NOT NULL. Nótese que algunos sistemas de bases de datosrequieren que se marque explícitamente a las columnas de clave primaria como NOT NULL.

Page 19: Manual SQL por Wikipedia

Clave primaria 17

CREATE TABLE nombre_de_la_tabla (

id_col INT,

col2 CHARACTER VARYING(20),

...

CONSTRAINT clapri_tabla PRIMARY KEY(id_col),

...

)

En el caso en que la clave primaria sea una sola columna, ésta puede marcarse como tal por medio de la siguientesintaxis:

CREATE TABLE nombre_de_la_tabla (

id_col INT PRIMARY KEY,

col2 CHARACTER VARYING(20),

...

)

Definiendo claves únicasLa definición de claves únicas es sintácticamente muy similar a la de clave primaria.

ALTER TABLE <identificador_de_la_tabla>

ADD [ CONSTRAINT <identificador_de_la_directiva> ]

UNIQUE ( <nombre_de_columna> {, <nombre_de_columna>}... )

De la misma manera, las claves únicas pueden definirse como parte de la sentencia de SQL CREATE TABLE.

CREATE TABLE nombre_de_la_tabla (

id_col INT,

col2 CHARACTER VARYING(20),

cla_col SMALLINT,

...

CONSTRAINT clave_única UNIQUE(cla_col),

...

)

CREATE TABLE nombre_de_la_tabla (

id_col INT PRIMARY KEY,

col2 CHARACTER VARYING(20),

...

cla_col SMALLINT UNIQUE,

...

)

Enlaces• Ejemplos de uso ALTER TABLE [1]

Page 20: Manual SQL por Wikipedia

Clave primaria 18

Referencias[1] http:/ / www. linuxtotal. com. mx/ index. php?cont=info_otros_005

Clave foráneaEn el contexto de bases de datos relacionales, una clave foránea (o Foreign Key FK) es una limitación referencialentre dos tablas. La clave foránea identifica una columna o grupo de columnas en una tabla (tabla hija o referendo)que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las columnas en latabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada.Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. Así, una filaen la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las referenciaspueden ser creadas para vincular o relacionar información. Esto es una parte esencial de la normalización de base dedatos. Múltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en latabla referenciada. Mayormente esto se ve reflejado en una relación uno (tabla maestra o referenciada) a muchos(tabla hija o referendo).La tabla referendo y la tabla referenciada pueden ser la misma, esto es, la clave foránea remite o hace referencia a lamisma tabla. Esta clave externa es conocida en SQL:2003 como auto-referencia o clave foránea recursiva. Una tablapuede tener múltiples claves foráneas y cada una puede tener diferentes tablas referenciadas. Cada clave foránea esforzada independientemente por el sistema de base de datos. Por tanto, las relaciones en cascada entre tablas puedenrealizarse usando claves foráneas. Configuraciones impropias de las claves foráneas o primarias o no forzar esasrelaciones son frecuentemente la fuente de muchos problemas para la base de datos o para el modelamiento de losmismos.

Definiendo claves foráneasLas claves foráneas son definidas bajo el estandard SQL a través de la restricción FOREIGN KEY. La sintaxis paraagregar tal restricción a una tabla existente es definida en SQL:2003 según se muestra debajo. Si se omite la lista decolumnas en la cláusula REFERENCES implica que la clave foránea tendrá que referenciar o relacionarse con laclave primaria de la tabla referenciada.

ALTER TABLE <nombre tabla>

ADD [ CONSTRAINT <nombre restricción> ]

FOREIGN KEY ( <expresión columna> [, <expresión columna>]... )

REFERENCES <nombre tabla> [ ( <expresión columna> [, <expresión columna>]... ) ]

[ ON UPDATE <acción> ]

[ ON DELETE <acción> ];

Page 21: Manual SQL por Wikipedia

Columna (base de datos) 19

Columna (base de datos)En el contexto de una tabla de base de datos relacional, una columna es un conjunto de valores de datos de unsimple tipo particular, uno por cada fila de la tabla.[1] Las columnas proporcionan la estructura según la cual secomponen las filas.El término campo es frecuentemente intercambiable con el de columna, aunque muchos consideran más correctousar el término campo (o valor de campo) para referirse específicamente al simple elemento que existe en laintersección entre una fila y una columna.Por ejemplo, una tabla que representa compañías pudo tener las siguientes columnas:• ID(identificador entero, único a cada fila)• Nombre (texto)• Dirección 1 (texto)• Dirección 2 (texto)• Ciudad (identificador entero, proviene de una tabla separada de ciudades, de la que cualquier información del

estado o del país puede ser tomada)• Código postal (texto)• Industria (identificador entero, Proviene de una tabla separada de industrias)• etc.Cada fila proporcionaría un valor de los datos para cada columna y después sería entendida como solo simple valorde datos estructurado, en este caso representando a una compañía. Más formalmente, cada fila puede ser interpretadacomo una variable relacional, compuesta por un conjunto de tuplas, con cada tupla consistiendo en los doselementos: el nombre de la columna relevante y el valor que esta fila proporciona para esa columna.

Columna 1 Columna 2

Fila 1 Fila 1 Columna 1 Fila 1 Columna 2

Fila 2 Fila 2 Columna 1 Fila 2 Columna 2

Fila 3 Fila 3 Columna 1 Fila 3 Columna 2

Referencias[1] The term "column" also has equivalent application in other, more generic contexts. See e.g., Flat file database, Table (information).

Véase también• Tabla• Fila• Índice

Page 22: Manual SQL por Wikipedia

Registro (base de datos) 20

Registro (base de datos)En informática, y concretamente en el contexto de una base de datos relacional, un registro (también llamado fila otupla) representa un objeto único de datos implícitamente estructurados en una tabla. En términos simples, una tablade una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa unconjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura.Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad. Sele asigna automáticamente un número consecutivo (número de registro) que en ocasiones es usado como índiceaunque lo normal y práctico es asignarle a cada registro un campo clave para su búsqueda.La estructura implícita de un registro y el significado de los valores de sus campos exige que dicho registro seaentendido como una sucesión de datos, uno en cada columna de la tabla. La fila se interpreta entonces como unavariable relacional compuesta por un conjunto de tuplas, cada una de las cuales consta de dos ítems: el nombre de lacolumna relevante y el valor que esta fila provee para dicha columna.Cada columna espera un valor de un tipo concreto.

Véase también• Base de datos relacional• Tabla• Columna• Índice

Null (SQL)Null (nulo) es un marcador especial usado en el lenguaje de consulta estructurado (SQL) para indicar que no existeun valor dentro de una base de datos.Introducido por el creador del modelo relacional de bases de datos E. F. Codd, sufunción es la de solventar el requisito de que los sistemas de gestión relacionales debase de datos (en inglés: Database management system, abreviado DBMS)verdaderos puedan representar información “desconocida” o “no aplicable”.Asimismo, Codd también introdujo el uso de la letra griega omega (ω) en minúscula para representar el Null en lateoría de la teoría de las bases de datos. NULL es también una palabra reservada en el lenguaje SQL para identificarel marcador especial Null.

Null ha sido un foco de controversia y una fuente de debate debido a su asociación a la lógica ternaria (en inglés:Three-Valued Logic, abreviado 3VL), a sus restricciones de uso en SQL y a la dificultad de su manejo en SQL.Aunque las funciones especiales y predicados sirven para manejar eficazmente el Nulls, la competencia opina queresolver este tipo de cuestiones añade complejidades y contradicciones innecesarias dentro del modelo relacional debases de datos.

Page 23: Manual SQL por Wikipedia

Null (SQL) 21

HistoriaNull fue introducido por E. F. Codd como un método de representación de datos que faltan en el modelo relacional.Codd más tarde reforzó su llamamiento para que todos los RDBMS’ incluyeran la función null para indicar los datosque faltan en un doble artículo publicado en la revista ComputerWorld. Codd también introdujo la lógica ternaria,consistente en la veracidad de los valores True (verdadero), False (falso), y Desconocido (Unknown), los cualesestán estrechamente relacionados con el concepto de Null. El valor Desconocido verdadero es generado cuando Nulles comparado con cualquier dato, o con otro Null.Codd indicó en su libro “The Relational Model for Database Management publicado en 1990, Version 2” que un solomandato Null a través del estándar SQL era inadecuado, y debería ser reemplazado por dos marcadores Nullseparados para indicar la razón de por qué los datos faltan. Estos dos tipos de marcadores Null son llamadoscomúnmente “Valores A” y “Valores I”, representando “datos que faltan pero aplicables” y “datos que faltan pero noaplicables”, respectivamente. La recomendación de Codd debería haber requerido una expansión del sistema lógicodel SQL para acomodar el sistema lógico cuaternario. Debido a su adicional complejidad, la idea de los múltiplesvalores Null no ha logrado un reconocimiento general.

Lógica ternaria (Three-valued logic -3VL-)Debido a que no pertenece a ningún dominio de datos, Null no está considerado propiamente un “valor”, perorealmente sí que es un marcador que indica la ausencia de un valor. Debido a esto, las comparaciones con Null nuncaresultan ciertas o falsas, pero si como un resultado lógico ternario, desconocidas (unknown). El resultado lógico de lasiguiente expresión, la cual compara el valor 10 con Null, es Desconocido:

10 = NULL -- Resultados en Desconocido (Unknown)

De todas formas, ciertas operaciones con Null pueden devolver valores si el valor Null no es relevante ante elresultado de la operación. Es el caso del siguiente ejemplo, considerando que la declaración OR es evaluada enforma de giro corto:

TRUE OR NULL -- Resultados en Verdadero (True)

En este caso, el hecho de que el valor a la derecha de OR es desconocido es irrelevante, porque el resultado de laoperación debería ser Verdadera a pesar del valor de la derecha. SQL aplica resultados lógicos ternarios, luego lasaplicaciones de SQL deben proporcionar unos valores lógicos ternarios especializados. Las reglas que gobiernan losvalores lógicos ternarios en SQL se muestran en las siguientes tablas (p y q representan estados lógicos):

p AND q p

Verdadero Falso Desconocido

q Verdadero Verdadero Falso Desconocido

Falso Falso Falso Falso

Desconocido Desconocido Falso Desconocido

Page 24: Manual SQL por Wikipedia

Null (SQL) 22

p OR q p

Verdadero Falso Desconocido

q Verdadero Verdadero Verdadero Verdadero

Falso Verdadero Falso Desconocido

Desconocido Verdadero Desconocido Desconocido

p NOT p

Verdadero Falso

Falso Verdadero

Desconocido Desconocido

p = q p

Verdadero Falso Desconocido

q Verdadero Verdadero Falso Desconocido

Falso Falso Verdadero Desconocido

Desconocido Desconocido Desconocido Desconocido

Las comparaciones operarias básicas en SQL resultan Desconocidas comparando cualquier cosa con Null, luego elestándar de SQL estipula cálculos predicados cotejados especiales para las dos funciones específicas Null.El test ES NULL y NO ES NULL determina si el dato es, o no es, Null.

Tipos de datosNull no está diseñado como un número entero, caracter u otro tipo de dato específico. Debido a esto, es a vecesdeseable convertir explícitamente Null en un tipo de dato específico. Por ejemplo, si las funciones sobrecargadas sonsostenidas por el SGBD (Sistema de Gestión de Base de Datos), SQL quizás no podría ser capaz de decidir lafunción correcta sin conocer los tipos de datos de todos los parámetros, incluidos aquellos para los cuales Null haactuado.

Lenguaje de manipulación de datosLos valores lógicos ternarios de SQL se encuentran en el Lenguaje de Manipulación de Datos (LMD) encomparaciones predicadas de afirmaciones LMD y dudas frecuentes. La proposición WHERE (DONDE) propiciaque la declaración LMD actúe sólo en aquellas filas para las cuales los cálculos de predicados evalúan la Verdad. Lasfilas para las cuales estos cálculos evalúan si son Falsas o Desconocidas no derivan de declaraciones DML comoINSERT, UPDATE o DELETE, y son desechados a partir de preguntas SELECT. Interpretando Desconocido yFalso como el mismo resultado lógico es un error común encontrado cuando tratamos con Nulls. El siguienteejemplo lo demuestra:

SELECT *

FROM t

WHERE i = NULL;

El ejemplo arriba planteado siempre devuelve lógicamente ceros a las filas debido a que la comparación entre lacolumna i con Null siempre devuelve un valor Desconocido, incluso para aquellas filas en las que i es Null. Elresultado Desconocido causa la declaración SELECT para desechar todas y cada una de las filas (De todas formas,

Page 25: Manual SQL por Wikipedia

Null (SQL) 23

en la práctica, las herramientas SQL recuperarán las filas utilizando la comparación con Null).

Expresiones CASELas expresiones CASE de SQL funcionan conforme a las mismas reglas que las del DMS WHERE para Null.Debido a que puede ser evaluado como una serie de condiciones de comparación de igualdad, una expresión deCASE simple no puede comprobar la existencia de Null directamente. Una comprobación de la existencia de Null enuna expresión CASE simple siempre resulta Desconocida, como a continuación:

SELECT CASE i WHEN NULL THEN 'Es Null' -- Esto nunca será devuelto.

WHEN 0 THEN 'Es Cero' -- Esto nunca será devuelto

cuando i = 0

WHEN 1 THEN 'Es uno' -- Esto nunca será devuelto

cuando i = 1

END

FROM t;

Como la expresión i = NULL evalúa a Desconocido sin importar el valor que la columna i contenga (incluso sicontiene el Null), el resultado ' ES NULL ' nunca será devuelto. Una expresión de CASE buscada también devuelveel primer valor para el cual el resultado de la comparación predicada evalúa la Verdad, incluyendo comparacionespredicadas que usan el “ES NULL” Y “NO ES NULL”. El ejemplo siguiente muestra cómo usar una expresión CASEbuscada para comprobar el Null:

SELECT CASE WHEN i ES NULL THEN 'Es Null' -- Esto nunca será devuelto

cuando i es NULL

WHEN i = 0 THEN 'Cero' -- Esto nunca será

devuelto i = 0

WHEN i = 1 THEN 'Uno' -- Esto nunca será

devuelto i = 1

END

FROM t;

En la expresión CASE buscada, ' el Resultado Null ' es devuelta para todas las filas en las cuales i es Null.

Revisión de las limitacionesEl lugar primario en el cual la lógica ternaria SQL se entrecruza con la Lengua de Definición de Datos SQL (DDL)es en forma de revisión de las limitaciones. Una revisión o comprobación de las limitaciones colocada sobre unacolumna opera bajo una serie de reglas ligeramente diferentes de aquellas para la cláusula DML WHERE. Mientrasque una cláusula DML WHERE debe evaluar la Verdad para una fila, una comprobación no debe evaluar laFalsedad. Esto quiere decir que una revisión tendrá éxito si el resultado de la comprobación es Verdadero oDesconocido. El ejemplo siguiente muestra una tabla con una comprobación que prohibirá a cualquier valor denúmero entero ser insertado en la columna i, pero permitirá a la Null ser insertada ya que el resultado de lacomprobación siempre evaluará se es Desconocido para la Null.

CREATE TABLE t (

i INTEGER,

CONSTRAINT ck_i CHECK ( i < 0 AND i = 0 AND i > 0 ) );

Con el objetivo de que una columna rechace Nulls, la coacción NOT NULL puede ser aplicada, como abajo semuestra en el ejemplo. La coacción NOT NULL es semánticamente equivalente a una comprobación de las

Page 26: Manual SQL por Wikipedia

Null (SQL) 24

limitaciones con un predicado IS NOT NULL.

CREATE TABLE t ( i INTEGER NOT NULL );

Extensiones de procedimientosSQL/PSM (SQL Módulos Persistentes Almacenados) define extensiones procesales para SQL, como la declaraciónIF. Sin embargo, las principales comercializaciones de SQL, históricamente han incluido sus extensiones procesalespropias. Las extensiones procesales para la formación de bucles y comparaciones funcionan bajo las reglas decomparación Null, similares a las declaraciones DML e interrogaciones. El siguiente fragmento de código, enformato estándar ISO SQL, demuestra el empleo del Null 3VL en una declaración IF.

IF i = NULL THEN

SELECT 'Result is True'

ELSEIF NOT(i = NULL) THEN

SELECT 'Result is False'

ELSE

SELECT 'Result is Unknown';

La declaración IF realiza acciones sólo para aquellas comparaciones que evalúan la Verdad. Para las declaracionesque evalúan la Falsedad o Desconocimiento, la declaración IF pasa el control de la cláusula ELSEIF, y finalmente lacláusula ELSE. El resultado de éste código, siempre será el mensaje 'Resultado es Desconocido' ya que lascomparaciones con Null siempre evalúan el Desconocimiento.

Sentencias JOINLa sentencia JOIN en SQL permite la combinación de registros de dos o más tablas dentro de una misma base dedatos relacional. En SQL existen tres tipos de JOIN: interno, externo, y cruzado. Las sentencias JOIN externas(Outer Joins), incluyendo las de tabla izquierda, derecha y de combinación completa, automáticamente producenNulls como marcadores (placeholders) de para los valores que faltan en tablas relacionadas. Para combinacionesexternas de tabla izquierda, por ejemplo, los Nulls son producidos en lugar de las filas ausentes de la tablaapareciendo en el lado derecho del operador JOIN externo de tabla izquierda. El siguiente ejemplo utiliza dos tablaspara demostrar que la producción del marcador Null en la combinación externa izquierda. La primera tabla(Empleado) contiene los números y nombres del empleado ID, mientras la segunda tabla (Número de teléfono)contiene números de teléfono relacionados con el empleado ID, como se muestra abajo.

ID Apellido Nombre

1 Izquierdo Roberto

2 Ambrosio Alberto

3 Alfonso Katia

4 Barbadillo Guillermo

|+ Empleado

ID Número

1 555-2323

3 555-9876

|+ Número deteléfono

La siguiente muestra SQL desarrolla una combinación externa de tabla izquierda entre las dos tablas anteriores.

SELECT e.ID, e.Apellido, e.Nombre, pn.Número

FROM Empleado e

LEFT OUTER JOIN Número de teléfono pn

ON e.ID = pn.ID;

Page 27: Manual SQL por Wikipedia

Null (SQL) 25

El resultado generado en esta serie de cuestiones demuestra cómo SQL usa el Null como un marcador para valoresque faltan en la parte derecha de la tabla (Números de teléfono), como se muestra a continuación:

ID Apellido Nombre Número

1 Izquierdo Roberto 555-2323

2 Ambrosio Alberto NULL

3 Alfonso Katia 555-9876

4 Barbadillo Guillermo NULL

|+ Resultado de la encuestaLas combinaciones internas (Inner Joins) y las cruzadas (Cross Joins), también están disponibles en el estándar SQL,y no generan marcadores Null para valores ausentes en tablas relacionadas.Es necesario tener cuidado a la hora de utilizar columnas en las que pueda operar Null en criterios de unificación deSQL. Como un Null no es igual a ninguna otro Null, los Nulls que se encuentren en una columna de una tabla no seunirán a Nulls de columnas relacionadas de otra tabla que usa los operadores de comparación de igualdad estándar.La función SQL COALESCE o expresiones CASE pueden ser usadas para "simular" una igualdad Null en criteriosde unificación, y los predicados ‘ES NULO’ Y ‘NO ES NULL’ pueden ser utilizados en los criterios de unificacióntambién.El predicado siguiente prueba para la igualdad de los valores A y B y trata a Null como si fuera igual. Se requiere eloperador IFNULL ya que A = B devuelve un valor Null si al menos uno de los valores (A o B) es Null y NULL OFALSO es Nulo en sí mismo.

IFNULL( A = B, FALSO ) OR ( A IS NULL AND B IS NULL )

Concadenación matemática y de caracteresComo Null no es un valor de datos, pero un marcador para un valor desconocido, usando operadores matemáticossobre Null resulta un valor desconocido, que es representado por Null. En el ejemplo siguiente, multiplicando 10 porNull resulta Null:

10 * NULL -- Resultado es NULL

Esto puede conducir a resultados inesperados. Por ejemplo, cuando una tentativa es hecha para dividir Null entrecero, las plataformas pueden devolver Null en vez de lanzar una esperado "excepción de datos - la división entrecero". Aunque este comportamiento no sea definido por la estándar SQL ISO muchos productos comercializadosDBMS tratan esta operación de modo similar. Por ejemplo, las plataformas Oracle, PostgreSQL, MySQL Server, yMicrosoft SQL Server devuelven el resultado Null para la operación:

NULL / 0

La serie de operaciones concadenadas, que son comunes en SQL, también resultan Null cuando uno de losoperándoos es Null. El siguiente ejemplo demuestra el resultado Null devuelto por el uso de Null con el SQL ||operador de una serie concadenada.

'Tortilla' || NULL || 'Patatas’ - Resultado es NULL

Esto no es verdadero para todas las puestas en práctica de base de datos. En Oracle RDBMS por ejemplo NULL yserie vacía son consideradas la misma cosa y por lo tanto ‘ Tortilla ‘ la NULL || || ‘Patata’ resulta ‘Tortilla Patata’.

Page 28: Manual SQL por Wikipedia

Null (SQL) 26

Funciones agregadasSQL define las funciones agregadas para simplificar cálculos agregados de datos del servidor. Casi todas lasfunciones agregadas realizan un paso de eliminación Null, de modo que los valores Null no sean incluidos en elresultado final del cálculo. Esta eliminación implícita Null, sin embargo, puede influir en los resultados de funcionesagregadas. La tabla ejemplificada a continuación deriva resultados diferentes siendo devueltos a cada columnacuando la función agregada SQL AVG (media) es aplicada:

i j

150 150

200 200

350 350

NULL 0

|+ TablaLa función agregada SQL AVG devuelve 233 cuando se aplica a la columna i, pero vuelve 175 cuando es aplicado ala columna j. El paso de eliminación de la función agregada Null explica la diferencia en estos resultados. La únicafunción agregada que no elimina implícitamente la Null es la función COUNT.

Agrupación y clasificaciónComo SQL:2003 define todos los marcadores Null como desiguales entre sí, requirieron una definición especial paraagrupar las Null en la realización de ciertas operaciones. SQL define "cualquiera de los dos valores que sean igualesel uno al otro, o cualquier pareja de Nulls", como "no distinto". Esta definición de no distinto permite a SQL agrupary clasificar los Nulls cuando la cláusula GROUP BY (y otras palabras clave que realizan la agrupación) es usada.Otras operaciones SQL, cláusulas, y palabras clave usan "no distinto" en su tratamiento de Nulls. Estos incluyen losiguiente:• La cláusula de clasificación PARTITION BY y funciones de enventanado (windowing) como ROW_NUMBER.• UNION, INTERSECT y el operador EXCEPT, que tratan los NULLs igual para las determinaciones de

comparación/eliminación en filas.• La palabra clave DISTINCT es usada en preguntas SELECT.• Coacciones Únicas sobre columnas en las que pueda encontrarse la función Null, que permiten sólo a un valor

solo Nulo ser almacenado en la columna.El estándar SQL no define explícitamente por defecto la clase de orden para los Null. En cambio, sobre sistemasconformados, los Nulls pueden ser clasificados antes o después de todos los valores de datos mediandte el uso de lascláusulas NULLS FIRST o NULLS LAST de la lista ORDER BY, respectivamente. No todos los vendedores deDBMS ponen en práctica esta funcionalidad pese a todo. Los vendedores que no ponen en práctica estafuncionalidad pueden especificar tratamientos diferentes para la clasificación de Null en el DBMS.

Page 29: Manual SQL por Wikipedia

Null (SQL) 27

Fuciones de tratamiento de NullSQL define dos funciones para manejar explícitamente la Null: COALESCE y NULLIF. Ambas funciones sonabreviaturas para expresiones CASE buscadas.

COALESCELa función COALESCE acepta una lista de parámetros, devolviendo el primer valor no Null de la lista:

COALESCE(value1, value2, value3, ...)

COALESCE está definida como la siguiente expresión SQL CASE:

CASE WHEN value1 IS NOT NULL THEN valor1

WHEN value2 IS NOT NULL THEN valor2

WHEN value3 IS NOT NULL THEN valor3

...

END

Algún DBMSs SQL pone en práctica funciones específicas de vendedor similares para COALESCE. Algunossistemas ponen en práctica una función de ISNULL, u otras funciones parecidas que son funcionalmente similares aCOALESCE.

NULLIFLa función de NULLIF acepta dos parámetros. Si el primer parámetro es igual al segundo, NULLIF devuelve Null.De otra manera, el valor del primer parámetro es devuelto.

NULLIF(valor1, valor2)

Por lo tanto, NULLIF es una abreviatura de de la siguiente expresión CASE:

CASE WHEN valor1 = valor2 THEN NULL ELSE valor1 END

Véase también• SQL• SQL:2003• Lenguaje de Manipulación de Datos• 12 reglas de Codd• Sistema de gestión de base de datos• Join

Page 30: Manual SQL por Wikipedia

Null (SQL) 28

Enlaces externos• NULLs de Oracle [1]

• Referencia Transact-SQL Null [2]

• Tratamiento de los valores NULL en sentencias SQL [3]

Referencias[1] http:/ / www. psoug. org/ reference/ null. html[2] http:/ / technet. microsoft. com/ es-es/ library/ ms188795. aspx[3] http:/ / www. bbr. cat/ index. php?option=com_myblog& show=Tratamiento-de-los-NULL-en-sentencias-SQL. html& Itemid=53

Trigger (base de datos)Un trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condiciónestablecida al realizar una operación de inserción (INSERT), actualización (UPDATE) o borrado (DELETE).

UsosSon usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute lasentencia de SQL.Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de unavista, etc.Permite implementar programas basados en paradigma lógico (sistemas expertos, deducción).

Componentes principalesLa estructura básica de un trigger es:• Llamada de activación: es la sentencia que permite "disparar" el código a ejecutar.• Restricción: es la condición necesaria para realizar el código. Esta restricción puede ser de tipo condicional o de

tipo nulidad.• Acción a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones

iniciales.

TiposExisten dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:• Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran n-veces si se llama n-veces desde la tabla

asociada al trigger• Statement Triggers (o Disparadores de secuencia): son áquellos que sin importar la cantidad de veces que se

cumpla con la condición, su ejecución es única.Pueden ser de sesión y almacenados; pero no son de fiar[cita requerida].

Page 31: Manual SQL por Wikipedia

Trigger (base de datos) 29

Efectos y características• No aceptan parámetros o argumentos (pero podrían almacenar los datos afectados en tablas temporales)• No pueden ejecutar las operaciones COMMIT o ROLLBACK por que estas son parte de la sentencia SQL del

disparador (únicamente a través de transacciones autónomas)• Pueden causar errores de mutaciones en las tablas, si se han escrito de manera deficiente.

EjemploUn sencillo ejemplo sería crear un Trigger para insertar un pedido de algún producto cuando la cantidad de éste, ennuestro almacén, sea inferior a un valor dado.

BEFORE UPDATE ON tabla_almacen

FOR ALL records

IF :NEW.producto < 100 THEN

INSERT INTO tabla_pedidos(producto) VALUES ('1000');

END IF;

SELECT DBO.POLVE.TEST

END

Disparadores en MySQLLos disparadores son soportados en MySQL a partir de la versión 5.0.2. Algunos de los soportes existentes son losdisparadores para las sentencias INSERT, UPDATE y DELETE

El estándar SQL:2003 requiere que los disparadores den a los programadores acceso a las variables de un registroutilizando una sintaxis como REFERENCING NEW AS n. Por ejemplo, si un disparador está monitoreando loscambios en la columna salario, podría escribirse un disparador como:

CREATE TRIGGER ver_salario

BEFORE UPDATE ON empleados

REFERENCING NEW ROW AS n, OLD ROW AS o

FOR EACH ROW

IF n.salario <> o.salario THEN

END IF;

Como en MySQL las sentencias se ejecutan luego de escribir el signo punto y coma (;), cabe destacar que para crearun disparador en MySQL, antes se escribe la sentencia DELIMITER seguida de un carácter tal como |, la cual asignala función del punto y coma (;) a otro carácter permitiendo que el disparador sea escrito usando los punto y comassin que se ejecute mientras se escribe; después de escrito el disparador se escribe nuevamente la sentenciaDELIMITER ; para asignar al punto y coma su función habitual.

Page 32: Manual SQL por Wikipedia

Trigger (base de datos) 30

Disparadores en PostgresQLDesde 1997 PostgresQL soporta el uso de disparadores, estos pueden anexarse a las tablas pero no a las vistas;aunque a las vistas se les pueden crear reglas.Al igual que en MySQL los disparadores de PostgresQL se pueden activar luego de sentencias INSERT, UPDATE oDELETECuando hay varios disparadores, se activan en orden alfabético.Además de permitir el uso de funciones en el lenguaje nativo de PostgresQL, PL/PgSQL, los disparadores tambiénpermiten invocar funciones escritas en otros lenguajes como PL/Perl.En Postgres un disparador ejecuta una función la cual contiene el código de lo que se requiere, esto difiere delmétodo expuesto anteriormente para MySQL que escribe el código a ejecutarse dentro del mismo disparador.El siguiente es un ejemplo de disparador creado con su respectiva función:

CREATE OR REPLACE FUNCTION actualizar() RETURNS TRIGGER AS $ejemplo$

BEGIN

NEW.nombre := NEW.nombres || ' ' || NEW.apellidos ;

RETURN NEW;

END;

$ejemplo$ LANGUAGE plpgsql;

CREATE TRIGGER ejemplo

BEFORE INSERT OR UPDATE ON tabla

FOR EACH ROW EXECUTE PROCEDURE actualizar();

Enlaces externos• Disparadores en MySQL (documentación oficial) [1]

• Microsoft SQL Server CREATE TRIGGER [2] (en inglés)• Microsoft SQL Server DROP TRIGGER [3] (en inglés)• Sentencia DB2 CREATE TRIGGER [4]

• Oracle CREATE TRIGGER [5]

• Trigger en PostgreSQL [6] (en inglés)• Sedna XQuery Triggers [7]

Referencias[1] http:/ / dev. mysql. com/ doc/ refman/ 5. 0/ es/ using-triggers. html[2] http:/ / msdn. microsoft. com/ es-es/ library/ aa258254(en-us,SQL. 80). aspx[3] http:/ / msdn. microsoft. com/ es-es/ library/ aa258846(en-us,SQL. 80). aspx[4] http:/ / publib. boulder. ibm. com/ infocenter/ db2luw/ v9/ topic/ com. ibm. db2. udb. admin. doc/ doc/ r0000931. htm[5] http:/ / download. oracle. com/ docs/ cd/ B19306_01/ server. 102/ b14200/ statements_7004. htm#sthref7885[6] http:/ / www. postgresql. org/ docs/ 8. 2/ static/ triggers. html[7] http:/ / www. modis. ispras. ru/ sedna/ progguide/ ProgGuidesu9. html#x15-520002. 6

Page 33: Manual SQL por Wikipedia

Vista (base de datos) 31

Vista (base de datos)Una vista de base de datos es un resultado de una consulta SQL de una o varias tablas; también se le puedeconsiderar una tabla virtual.Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena deellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarán igualque los de una tabla. De hecho, si no se sabe que se está trabajando con una vista, nada hace suponer que es así. Aligual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunquesiempre es posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el restode las operaciones sobre vistas.Una vista se especifica a través de una expresión de consulta (una sentencia SELECT) que la calcula y que puederealizarse sobre una o más tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un númerocualquiera de vistas.La mayoría de los SGBD soportan la creación y manipulación de vistas.

Page 34: Manual SQL por Wikipedia

32

Ejemplos de Software Disponible

SQLEl lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguajedeclarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en éstas.Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo efectuar consultas con el finde recuperar -de una forma sencilla- información de interés de una base de datos, así como también hacer cambiossobre ella.

Orígenes y evoluciónLos orígenes del SQL están ligados a las de las bases de datos relacionales. En 1970 E. F. Codd propone el modelorelacional y asociado a éste un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose enestas ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English QUEry Language) que mástarde sería ampliamente implementado por el sistema de gestión de bases de datos (SGBD) experimental System R,desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en unprograma comercial.El SEQUEL terminaría siendo el predecesor de SQL, siendo éste una versión evolucionada del primero. El SQL pasaa ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de datos relacionales surgidos en losaños siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de estelenguaje, el "SQL-86" o "SQL1". Al año siguiente este estándar es también adoptado por la ISO.Sin embargo, este primer estándar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades dedefinición de almacenamiento que se consideraron suprimir. Así que en 1992 se lanza un nuevo estándar ampliado yrevisado del SQL llamado "SQL-92" o "SQL2".En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque ladiversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia,el soporte al estándar SQL-92 es general y muy amplio.El ANSI SQL sufrió varias revisiones y agregados a lo largo del tiempo:

Año Nombre Alias Comentarios

1986 SQL-86 SQL-87 Primera publicación hecha por ANSI. Confirmada por ISO en 1987.

1989 SQL-89 Revisión menor.

1992 SQL-92 SQL2 Revisión mayor.

1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para relaciones jerárquicas), triggers y algunascaracterísticas orientadas a objetos.

2003 SQL:2003 Introduce algunas características de XML, cambios en las funciones, estandarización del objeto sequence y de lascolumnas autonumericas. (Ver Eisenberg et al.: SQL:2003 Has Been Published [1].)

2006 SQL:2006 ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Definemaneras importar y guardar datos XML en una base de datos SQL, manipulándolos dentro de la base de datos ypublicando el XML y los datos SQL convencionales en forma XML. Además, proporciona facilidades que permitena las aplicaciones integrar dentro de su código SQL el uso de XQuery, lenguaje de consulta XML publicado por elW3C (World Wide Web Consortium) para acceso concurrente a datos ordinarios SQL y documentos XML.

Page 35: Manual SQL por Wikipedia

SQL 33

2008 SQL:2008 Permite el uso de la cláusula ORDER BY fuera de las definiciones de los cursores. Incluye los disparadores del tipoINSTEAD OF. Añade la sentencia TRUNCATE. (Ver [2].)

Características generales del SQLEl SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionalespermitiendo gran variedad de operaciones en éstos últimos.Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base teórica y suorientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad encodificación y la orientación a objetos. De esta forma una sola sentencia puede equivaler a uno o más programas quese utilizarían en un lenguaje de bajo nivel orientado a registros.

OptimizaciónComo ya se dijo arriba, y suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es unlenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentenciano establece explícitamente un orden de ejecución.El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que sehace necesario que éste lleve a cabo una optimización antes de su ejecución. Muchas veces, el uso de índices acelerauna instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo del uso de la aplicación, sepriorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente encada motor de base de datos y depende de muchos factores.Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases dedatos difusas, usando la lógica difusa. Este lenguaje ha sido implementado a nivel experimental y está evolucionandorápidamente.

Lenguaje de definición de datos (DDL)El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de lamodificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE,ALTER, DROP y TRUNCATE.

CREATEEste comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función,procedimiento o cualquier otro objeto que el motor de la base de datos soporte.

Ejemplo (crear una tabla)

CREATE TABLE 'TABLA_NOMBRE' (ejemplo)

'CAMPO_1' INT,

'CAMPO_2' STRING

Ejemplo (crear una función)

CREATE OR REPLACE FUNCTION 'NOMBRE FUNCION'('PARAMETROS')

RETURNS 'TIPO RETORNO' AS

$BODY$

begin

'INSTRUCCIÓN SQL'

Page 36: Manual SQL por Wikipedia

SQL 34

--por Ejemplo:

DELETE FROM con_empleado WHERE id_empleado = 'ANY' (ids);

end;

$BODY$

LANGUAGE 'plpgsql';

ALTEREste comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificarel tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.

Ejemplo (agregar columna a una tabla)

ALTER TABLE 'TABLA_NOMBRE' (

ADD NUEVO_CAMPO INT UNSIGNED meel

)

DROPEste comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función,procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentenciaALTER.

Ejemplo

ALTER TABLE ''TABLA_NOMBRE''

(

DROP COLUMN ''CAMPO_NOMBRE1''

)

TRUNCATEEste comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrartodo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es queTRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusulaWHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es enrealidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecutaninguna transacción.

Ejemplo

TRUNCATE TABLE ''TABLA_NOMBRE1''

Lenguaje de manipulación de datos DML(Data Manipulation Language)

DefiniciónUn lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un lenguajeproporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas deconsulta o manipulación de los datos, organizados por el modelo de datos adecuado.El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en unabase de datos relacional.

Page 37: Manual SQL por Wikipedia

SQL 35

INSERTUna sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

Forma básica

INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES

(''valor1'', [''valor2,...''])

Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le será asignado el valorpor omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas lasrestricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila yse devuelve un error.

Ejemplo

INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto

Jeldrez', 4886850);

Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:

INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...''])

Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'):

INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 4886850);

Formas avanzadas

Inserciones en múltiples filas

Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar múltiples filas a la vez,con una sola sentencia SQL:

INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])

VALUES (''valor1a'', [''valor1b,...'']), (''value2a'',

[''value2b,...'']),...

Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2.Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla 'agenda_telefonica'):

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'),

('Alejandro Sosa', '4556550');

Que podía haber sido realizado por las sentencias

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');

INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');

Notar que las sentencias separadas pueden tener semántica diferente (especialmente con respecto a los triggers), ypuede tener diferente rendimiento que la sentencia de inserción múltiple.Para insertar varias filas en MS SQL puede utilizar esa construcción:

INSERT INTO phone_book

SELECT 'John Doe', '555-1212'

UNION ALL

SELECT 'Peter Doe', '555-2323';

Page 38: Manual SQL por Wikipedia

SQL 36

Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar SQL (SQL: 2003), debido ala cláusula subselect incompleta.Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de solo una simple fila:

INSERT INTO phone_book

SELECT 'John Doe', '555-1212' FROM DUAL

UNION ALL

SELECT 'Peter Doe','555-2323' FROM DUAL

Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o como se muestra arriba(no aplica en Oracle):

INSERT INTO phone_book

SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)

UNION ALL

SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)

Copia de filas de otras tablas

Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarladirectamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún procesamientointermedio en la aplicación cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECTpuede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta.Lógicamente, el SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo se da a continuación.

INSERT INTO phone_book2

SELECT *

FROM phone_book

WHERE name IN ('John Doe', 'Peter Doe')

Una variación es necesaria cuando algunos de los datos de la tabla fuente se está insertando en la nueva tabla, perono todo el registro. (O cuando los esquemas de las tablas no son iguales.)

INSERT INTO phone_book2 ( [name], [phoneNumber] )

SELECT [name], [phoneNumber]

FROM phone_book

WHERE name IN ('John Doe', 'Peter Doe')

El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de latabla donde los datos son insertados.

Page 39: Manual SQL por Wikipedia

SQL 37

UPDATEUna sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en unatabla.

Forma básica

UPDATE ''tabla''

SET ''columna1'' = ''valor1'' ,''columna2'' = ''valor2'',...

WHERE ''columnaN = ''valorN''

Ejemplo

UPDATE My_table SET field1 = 'updated value' WHERE field2 = 'N';

DELETEUna sentencia DELETE de SQL borra uno o más registros existentes en una tabla,

Forma básica

DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''

Ejemplo

DELETE FROM My_table WHERE field2 = 'N';

Recuperación de claveLos diseñadores de base de datos que usan una clave suplente como la clave principal para cada tabla, se ejecutará enel ocasional escenario en el que es necesario recuperar automáticamente la base de datos, generando una claveprimaria de una sentencia SQL INSERT para su uso en otras sentencias SQL. La mayoría de los sistemas nopermiten sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar una solución entales escenarios.Implementaciones comunes incluyen:• Utilizando un procedimiento almacenado especifico de base de datos que genera la clave suplente, realice la

operación INSERT, y finalmente devuelve la clave generada.• Utilizando una sentencia SELECT específica de base de datos, sobre una tabla temporal que contiene la última

fila insertada. DB2 implementa esta característica de la siguiente manera:

SELECT *

FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal

Jeldrez','0426.817.10.30' ) ) AS t

• Utilizando una sentencia SELECT después de la sentencia INSERT con función específica de base de datos, quedevuelve la clave primaria generada por el registro insertado más recientemente.

• Utilizando una combinación única de elementos del original SQL INSERT en una posterior sentencia SELECT.• Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT.• Utilizando la función de PHP mysql_insert_id() de MySQL después de la sentencia INSERT.• Utilizando un INSERT con la cláusula RETURNING para Oracle, que sólo se puede utilizar dentro de un

PL/SQL bloque, en el caso de PostgreSQL se puede usar también tanto con SQL como con PL/SQL.

INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' )

RETURNING phone_book_id INTO v_pb_id

Page 40: Manual SQL por Wikipedia

SQL 38

• En el caso de MS SQL se puede utilizar la siguiente instrucción:

Set NoCount On;

INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' );

Select @@Identity as ID

DisparadoresLos disparadores, también conocidos como desencadenantes (triggers en inglés) son definidos sobre la tabla en laque opera la sentencia INSERT, los desencadenantes son evaluados en el contexto de la operación. DesencadenantesBEFORE INSERT permiten la modificación de los valores que se insertará en la tabla. Desencadenantes AFTERINSERT no puede modificar los datos de ahora en adelante, pero se puede utilizar para iniciar acciones en otrastablas, por ejemplo para aplicar mecanismos de auditoría.

Sistemas de gestión de base de datosLos sistemas de gestión de base de datos con soporte SQL más utilizados son, por orden alfabético:• DB2• Firebird• Informix• Interbase• MySQL• Oracle• PostgreSQL• Pervasive• SQLite• SQL Server• Sybase ASE• VoltDB [3]

Véase también• SQL injection• FSQL• AQL• Modelo de base de datos

Referencias[1] http:/ / www. acm. org/ sigmod/ record/ issues/ 0403/ index. html#standards[2] http:/ / iablog. sybase. com/ paulley/ 2008/ 07/ sql2008-now-an-approved-iso-international-standard/[3] http:/ / VoltDB

Page 41: Manual SQL por Wikipedia

MySQL 39

MySQL

dsaMySQL

Instalador de MySql Server 5.0 Desarrollador

Sun Microsystems (hasta febrero de 2008 MySQLAB)

www.mysql.com [1]

Información general

Última versión estable 5.1.482 de junio de 2010

Género RDBMS

Escrito en C, C++

Sistema operativo Multiplataforma

Licencia GPL o Uso comercial [2]

En español ?

MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones deinstalaciones.[3] MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de OracleCorporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresasque quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permitaeste uso. Está desarrollado en su mayor parte en ANSI C.Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyrightdel código está en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee elcopyright de la mayor parte del código.Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licenciasprivativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundoque colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.

Page 42: Manual SQL por Wikipedia

MySQL 40

Historia del proyectoSQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por IBM, el cual fuepresentado a ANSI y desde entonces ha sido considerado como un estándar para las bases de datos relacionales.Desde 1986, el estándar SQL ha aparecido en diferentes versiones como por ejemplo: SQL:92, SQL:99, SQL:2003.MySQL es una idea originaria de la empresa opensource MySQL AB establecida inicialmente en Suecia en 1995 ycuyos fundadores son David Axmark, Allan Larsson, y Michael "Monty" Widenius. El objetivo que persigue estaempresa consiste en que MySQL cumpla el estándar SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad.Michael "Monty" Widenius en la década de los 90 trató de usar mSQL para conectar las tablas usando rutinas de bajonivel ISAM, sin embargo, mSQL no era rápido y flexible para sus necesidades. Esto lo llevó a crear una API SQLdenominada MySQL para bases de datos muy similar a la de mSQL pero más portable.El nombre de MySQL procede de la combinación de My, hija del cofundador Michael "Monty" Widenius, con elacrónimo SQL (según la documentación de la última versión en inglés [4] ). Por otra parte, el directorio base ymuchas de las bibliotecas usadas por los desarrolladores tenían el prefijo My.El nombre del delfín de MySQL es Sakila y fue seleccionado por los fundadores de MySQL AB en el concurso“Name the Dolphin”. Este nombre fue enviado por Ambrose Twebaze, un desarrollador de software de código abiertoafricano, derivado del idioma SiSwate, el idioma local de Swazilandia y corresponde al nombre de una ciudad enArusha, Tanzania, cerca de Uganda la ciudad origen de Ambrose.

Lenguajes de programaciónExisten varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las basesde datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con unaimplementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac y Linux),(x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe una interfazODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte ODBC comunicarse conlas bases de datos MySQL. También se puede acceder desde el sistema SAP, lenguaje ABAP.

Aplicaciones

Toma de pantalla programa de Monitoreo Mtop.

MySQL es muy utilizado en aplicaciones web, como Drupal ophpBB, en plataformas(Linux/Windows-Apache-MySQL-PHP/Perl/Python), y porherramientas de seguimiento de errores como Bugzilla. Supopularidad como aplicación web está muy ligada a PHP, que amenudo aparece en combinación con MySQL. MySQL es unabase de datos muy rápida en la lectura cuando utiliza el motor notransaccional MyISAM, pero puede provocar problemas deintegridad en entornos de alta concurrencia en la modificación. Enaplicaciones web hay baja concurrencia en la modificación dedatos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo deaplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante adelantar monitoreos sobre eldesempeño para detectar y corregir errores tanto de SQL como de programacion. [5]

Page 43: Manual SQL por Wikipedia

MySQL 41

Versiones de MySQL

[6] [7] [8] [9] [10] [11]

Especificaciones

PlataformasMySQL funciona sobre múltiples plataformas, incluyendo:• AIX• BSD• FreeBSD• HP-UX• GNU/Linux• Mac OS X• NetBSD• Novell Netware• OpenBSD• OS/2 Warp• QNX• SGI IRIX• Solaris• SunOS• SCO OpenServer• SCO UnixWare• Tru64• eBD• Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7 y Windows

Server (2000, 2003 y 2008).• OpenVMS[12]

Page 44: Manual SQL por Wikipedia

MySQL 42

Características de la versión 5.0.22• Un amplio subconjunto de ANSI SQL 99, y varias extensiones.• Soporte a multiplataforma.• Procedimientos almacenados• Disparadores (triggers).• Cursores• Vistas actualizables.• Soporte a VARCHAR• INFORMATION_SCHEMA• Modo Strict• Soporte X/Open XA de transacciones distribuidas; transacción en dos fases como parte de esto, utilizando el

motor InnoDB de Oracle.• Motores de almacenamiento independientes (MyISAM para lecturas rápidas, InnoDB para transacciones e

integridad referencial).• Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster; puntos de recuperación (savepoints)

con InnoDB.• Soporte para SSL.• Query caching• Sub-SELECTs (o SELECTs anidados).• Réplica con un maestro por esclavo, varios esclavos por maestro, sin soporte automático para múltiples maestros

por esclavo.• indexing y búsqueda de campos de texto completos usando el motor de almacenamiento MyISAM.• Embedded database library• Soporte completo para Unicode.• Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster.• Shared-nothing clustering through MySQL Cluster.

Características adicionales• Usa GNU Automake, Autoconf, y Libtool para portabilidad• Uso de multihilos mediante hilos del kernel.• Usa tablas en disco b-tree para búsquedas rápidas con compresión de índice• Tablas hash en memoria temporales• El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una

herramienta GPL• Completo soporte para operadores y funciones en cláusulas select y where.• Completo soporte para cláusulas group by y order by, soporte de funciones de agrupación• Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante verificación basada en el host y el

tráfico de contraseñas está cifrado al conectarse a un servidor.• Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50 millones de registros.• Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir desde 1 hasta 16

columnas o partes de columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).• Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas

Windows se pueden conectar usando named pipes y en sistemas Unix usando ficheros socket Unix.• En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando memoria compartida.• MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con el código fuente de la

distribución de MySQL.

Page 45: Manual SQL por Wikipedia

MySQL 43

Características (versión 4.0)Inicialmente, MySQL carecía de elementos considerados esenciales en las bases de datos relacionales, tales comointegridad referencial y transacciones. A pesar de ello, atrajo a los desarrolladores de páginas web con contenidodinámico, justamente por su simplicidad.Poco a poco los elementos de los que carecía MySQL están siendo incorporados tanto por desarrollos internos, comopor desarrolladores de software libre. Entre las características disponibles en las últimas versiones se puede destacar:• Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.• Disponibilidad en gran cantidad de plataformas y sistemas.• Diferentes opciones de almacenamiento según si se desea velocidad en las operaciones o el mayor número de

operaciones disponibles.• Transacciones y claves foráneas.• Conectividad segura.• Replicación.• Búsqueda e indexación de campos de texto.MySQL es un sistema de administración de bases de datos. Una base de datos es una colección estructurada de tablasque contienen datos. Esta puede ser desde una simple lista de compras a una galería de pinturas o el vasto volumende información en una red corporativa. Para agregar, acceder a y procesar datos guardados en un computador, ustednecesita un administrador como MySQL Server. Dado que los computadores son muy buenos manejando grandescantidades de información, los administradores de bases de datos juegan un papel central en computación, comoaplicaciones independientes o como parte de otras aplicaciones.MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos entablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Lastablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.MySQL es software de fuente abierta. Fuente abierta significa que es posible para cualquier persona usarlo ymodificarlo. Cualquier persona puede bajar el código fuente de MySQL y usarlo sin pagar. Cualquier interesadopuede estudiar el código fuente y ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public License)para definir que puede hacer y que no puede hacer con el software en diferentes situaciones. Si usted no se ajusta alGPL o requiere introducir código MySQL en aplicaciones comerciales, usted puede comprar una versión comerciallicenciada.

Mejoras futurasEl mapa de ruta de MySQL 5.1 [13] indica soporte para:• Particionado de la base de datos.• Backup en línea para todos los motores de almacenamiento.• Replicación segura• Restricciones a nivel de columna.• Planificación de eventos.• Funciones XML

Page 46: Manual SQL por Wikipedia

MySQL 44

Características distintivasLas siguientes características son implementadas únicamente por MySQL:• Múltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster,

Federated, Archive, CSV, Blackhole y Example en 5.x), permitiendo al usuario escoger la que sea más adecuadapara cada tabla de la base de datos.

• Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el númerode transacciones por segundo.

Tipos de compilación del servidorHay tres tipos de compilación del servidor MySQL:• Estándar: Los binarios estándar de MySQL son los recomendados para la mayoría de los usuarios, e incluyen el

motor de almacenamiento InnoDB.• Max (No se trata de MaxDB, que es una cooperación con SAP): Los binarios incluyen características adicionales

que no han sido lo bastante probadas o que normalmente no son necesarias.• MySQL-Debug: Son binarios que han sido compilados con información de depuración extra. No debe ser usada

en sistemas en producción porque el código de depuración puede reducir el rendimiento.

Especificaciones del código fuenteMySQL está escrito en una mezcla de C y C++. Hay un documento que describe algunas de sus estructuras internasen http:/ / dev. mysql. com/ doc/ internals/ en/ (en inglés).

Desarrollo del proyectoEl desarrollo de MySQL se fundamenta en el trabajo de los desarrolladores contratados por la empresa MySQL ABquienes se encargan de dar soporte a los socios comerciales y usuarios de la comunidad MySQL y dar solución a losproblemas encontrados por los usuarios. Los usuarios o miembros de la comunidad MySQL pueden reportar bugsrevisando el manual en línea [14] que contiene las soluciones a problemas encontrados; el historial de cambios [15];la base de datos bugs [16] que contiene bugs reportados y solucionados y en las listas de correo MySQL [17].A través de las listas de correo los usuarios pueden enviar preguntas y éstas serán contestadas por desarrolladoresbrindándoles soporte.

Otras funcionalidades de las listas de correo• Anuncios: informan sobre nuevas versiones de MySQL y programas relacionados.• MySQL: lista principal de discusión de MySQL.• Bugs: permite a la gente buscar y arreglar bugs.• Temas internos: para gente que trabaja con el código de MySQL. Es el fórum para discutir sobre el desarrollo de

MySQL.• MySQLdoc: para gente que trabaja en documentación.• Pruebas de rendimiento: para gente interesada en temas de rendimiento no sólo de MySQL, sino de otros motores

de bases de datos.• Empaquetadores: para discusiones sobre empaquetamiento y distribución de MySQL.• Java: discusiones sobre MySQL Server y Java.Otras listas de correo son: MyODBC, Herramientas GUI, Cluster, Dotnet, PlusPlus y Perl.Adicional a las listas de correo, se encuentra el soporte de IRC de la comunidad MySQL. Además, hay soporte a través de foros [18] agrupados en categorías tales como: Migración, Uso de MySQL, Conectores MySQL,

Page 47: Manual SQL por Wikipedia

MySQL 45

Tecnología MySQL y Negocios.

Estructuras organizativas/asociativas o de decisiónLa dirección y el patrocinio de los proyectos MySQL están a cargo de la empresa MySQL AB quien posee elcopyrigth del código fuente MySQL, su logo y marca registrada. MySQL, Inc. y MySQL GmbH son ejemplos deempresas subsidiarias de MySQL AB. Están establecidas en los Estados Unidos y Alemania respectivamente.MySQL AB, cuenta con más de 200 empleados en más de 20 países y funcionan bajo la estrategia de teletrabajo.

En enero del 2008 Sun Microsystems anuncia su compra.En abril del 2009 Oracle anunció la compra de Sun Microsystems[19]

Industria relacionadaLa industria radica en la venta de productos software y de algunos servicios relacionados a numerosas empresas queutilizan estos productos.MySQL AB clasifica los productos así:• MySQL Enterprise: incluye MySQL Enterprise Server , Monitoreo de la red MySQL, servicios de consulta y

soporte de producción MySQL.• MySQL Cluster• MySQL Embedded Database.• MySQL Drivers: para JDBC, ODBC y .Net• MySQL Tools: MySQL Administrator, MySQL Query Browser, and the MySQL Migration Toolkit.• MaxDB: MaxDB es una base de datos de código abierto certificada para SAP/R3.Los ingresos de esta empresa por la venta de licencias privativas de sus productos y los servicios suma los U$12millones.

MySQL en cifras• Según las cifras del fabricante, existirían más de seis millones de copias de MySQL funcionando en la actualidad,

lo que supera la base instalada de cualquier otra herramienta de bases de datos.• El tráfico del sitio web de MySQL AB superó en 2004 al del sitio de IBM.

LicenciaLa licencia GNU GPL de MySQL obliga a que la distribución de cualquier producto derivado (aplicación) se hagabajo esa misma licencia. Si un desarrollador desea incorporar MySQL en su producto pero desea distribuirlo bajootra licencia que no sea la GNU GPL, puede adquirir una licencia comercial de MySQL que le permite hacerjustamente eso.

Estado actualLa serie en desarrollo de MySQL Server actualmente, es la 5.1 a la cual se añaden nuevas características en relacióna la serie 5.0. La serie de producción actual de MySQL es 5.0, cuya penúltima versión estable es la 5.0.26 lanzada enoctubre de 2006. Actualmente, se puede descargar la serie 5.0.27. La serie de producción anterior fue la 4.1, cuyaversión estable es 4.1.7 lanzada en octubre de 2004. A estas versiones de producción sólo se arreglan problemas, esdecir, ya no se añaden nuevas características. Y a las versiones anteriores solamente se les corrigen bugs críticos.

Page 48: Manual SQL por Wikipedia

MySQL 46

Usuarios destacados

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías,prensa diaria o páginas de Internet fidedignas.Puedes añadirlas así o avisar al autor principal del artículo [20] en su página de discusión pegando: {{subst:Aviso referencias|MySQL}}~~~~

• Amazon.com• Cox Communications - La cuarta televisión por cable más importante de EEUU, tienen más de 3.600 tablas y

aproximadamente dos millones de inserciones cada hora.• Craigslist• CNET Networks• Digg - Sitio de noticias.• Flickr, usa MySQL para gestionar millones de fotos y usuarios.• Google - Para el motor de búsqueda de la aplicación AdWords.• Joomla!, con millones de usuarios.• phpBB, Uno de los más famosos sitios de foros, con miles de instalaciones y con millones de usuarios.• LiveJournal - Cerca de 300 millones de páginas servidas cada día.[21]

• NASA• NetQOS, usa MySQL para la gestión de algunas de las redes más grandes del mundo como las de Chevron,

American Express y Boeing.• Nokia, usa un cluster MySQL para mantener información en tiempo real sobre usuarios de redes de móviles.• Omniture• Sabre, y su sistema de reserva de viajes Travelocity.• Slashdot - con cerca de 50 millones de páginas servidas [22] cada día.• Wikipedia, sirve más de 200 millones de consultas y 1,2 millones de actualizaciones cada día, con picos de

11.000 consultas por segundo.• WordPress, con cientos de blogs alojados en él.• Yahoo! - para muchas aplicaciones críticas.

Tools• Database Master - MySQL Manager [23]

Referencias[1] http:/ / www. mysql. com[2] http:/ / www. mysql. com/ company/ legal/ licensing/ commercial-license. html[3] MySQL :: Dispelling the Myths (http:/ / dev. mysql. com/ tech-resources/ articles/ dispelling-the-myths. html)[4] MySQL 5.5 Manual: History of MySQL (http:/ / dev. mysql. com/ doc/ refman/ 5. 5/ en/ history. html)[5] mtop: monitoreo de carga en MySQL (http:/ / tecnocacharrero. blogspot. com/ 2009/ 10/ mtop-monitoreo-de-carga-en-mysql. html)[6] « B.3. Changes in Release 3.23.x (Lifecycle Support Ended) (http:/ / dev. mysql. com/ doc/ refman/ 4. 1/ en/ news-3-23-x. html)». Oracle.

Consultado el 24-08-2010.[7] « B.2. Changes in Release 4.0.x (Lifecycle Support Ended) (http:/ / dev. mysql. com/ doc/ refman/ 4. 1/ en/ news-4-0-x. html)». Oracle.

Consultado el 24-08-2010.[8] « B.1. Changes in Release 4.1.x (Lifecycle Support Ended) (http:/ / dev. mysql. com/ doc/ refman/ 4. 1/ en/ news-4-1-x. html)». Oracle.

Consultado el 24-08-2010.[9] « C.1. Changes in Release 5.0.x (Production) (http:/ / dev. mysql. com/ doc/ refman/ 5. 0/ en/ news-5-0-x. html#news-5-0-x)». Oracle.

Consultado el 24-08-2010.[10] « C.1. Changes in Release 5.1.x (Production) (http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ news-5-1-x. html#news-5-1-x)». Oracle.

Consultado el 24-08-2010.

Page 49: Manual SQL por Wikipedia

MySQL 47

[11] « C.1. Changes in Release 5.5.x (Development) (http:/ / dev. mysql. com/ doc/ refman/ 5. 5/ en/ news-5-5-x. html#news-5-5-x)». Oracle.Consultado el 24-08-2010.

[12] (http:/ / www. pi-net. dyndns. org/ anonymous/ kits/ )[13] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ roadmap. html[14] http:/ / dev. MySQL. com/ doc/[15] http:/ / dev. MySQL. com/ doc/ MySQL/ en/ News. html[16] http:/ / bugs. MySQL. com/[17] http:/ / lists. MySQL. com/[18] http:/ / forums. MySQL. com[19] http:/ / www. elpais. com/ articulo/ internet/ Oracle/ adquiere/ Sun/ Microsystems/ 5710/ millones/ elpeputec/ 20090420elpepunet_3/ Tes[20] http:/ / en. wikipedia. org/ wiki/ Mysql?action=history[21] Alexa Internet - Website Information (http:/ / www. alexa. com/ data/ details/ traffic_details?& compare_sites=& y=p& q=&

url=livejournal. com)[22] http:/ / www. alexa. com/ data/ details/ traffic_details?& compare_sites=& y=p& q=& url=slashdot. org[23] http:/ / www. nucleonsoftware. com

Véase también• PostgreSQL Otra base de datos basada en software libre.• PHP Lenguaje en web comúnmente usado con MySQL.• Base de datos• Bonsai cvs• Appserv• Firebird SQL (http:/ / www. firebirdsql. org) sistema de administración de base de datos relacional de código

abierto y multiplataforma.

Enlaces externos• Wikimedia Commons alberga contenido multimedia sobre MySQL. Commons• Sitio web oficial de MySQL (http:/ / www. mysql. com) (en inglés)• MySQL Developer Zone (http:/ / dev. mysql. com) (en inglés)• Misqli (http:/ / es. php. net/ mysqli) - Extensión de MySQL para PHP (en inglés y otros idiomas)• Benetl (http:/ / www. benetl. net) - ETL utilizando MySQL (en inglés)• Crear una base de datos MySQL (http:/ / am-gc. blogspot. com/ 2010/ 07/ crear-una-base-de-datos-mysql. html) -

Tutorial en el que se explica cómo crear una base de datos mediante MySQL Workbench.

Page 50: Manual SQL por Wikipedia

Oracle 48

Oracle

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías,prensa diaria o páginas de Internet fidedignas.Puedes añadirlas así o avisar al autor principal del artículo [1] en su página de discusión pegando: {{subst:Aviso referencias|Oracle}}~~~~

Oracle Database

Desarrollador

Oracle Corporationwww.oracle.com [2]

Información general

Última versión estable 11g Release 2:11.2.0.101/09/2009

Género RDBMS

Sistema operativo Multiplataforma

Licencia Privativa

En español ?

Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational DataBase Management System), desarrollado por Oracle Corporation.Se considera a Oracle como uno de los sistemas de bases de datos más completos,[cita requerida] destacando:• soporte de transacciones,• estabilidad,• escalabilidad y• Soporte multiplataforma.Su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre lacompetencia del Microsoft SQL Server de Microsoft y de la oferta de otros RDBMS con licencia libre comoPostgreSQL, MySql o Firebird. Las últimas versiones de Oracle han sido certificadas para poder trabajar bajoGNU/Linux.

HistoriaOracle surge en 1977 bajo el nombre de Software Development Laboratories (SDL), luego en 1979 SDL cambia sunombre por Relational Software, Inc. (RSI). La fundación de Software Development Laboratories (SDL) fuemotivada principalmente a partir de un estudio sobre los .SGBD (Sistemas Gestores de Base de Datos) de GeorgeKoch. Computer World definió este estudio como uno de los más completos jamás escritos sobre bases de datos.Este artículo incluía una comparativa de productos que erigía a Relational Software como el más completo desde elpunto de vista técnico. Esto se debía a que usaba la filosofía de las bases de datos relacionales, algo que por aquellaépoca era todavía desconocido.En la actualidad, Oracle (Nasdaq: ORCL) todavía encabeza la lista. La tecnología Oracle se encuentra prácticamenteen todas las industrias alrededor del mundo y en las oficinas de 98 de las 100 empresas Fortune 100. Oracle es laprimera compañía de software que desarrolla e implementa software para empresas 100 por ciento activado porInternet a través de toda su línea de productos: base de datos, aplicaciones comerciales y herramientas de desarrollo

Page 51: Manual SQL por Wikipedia

Oracle 49

de aplicaciones y soporte de decisiones. Oracle es el proveedor mundial líder de software para administración deinformación, y la segunda empresa de software.Oracle a partir de la versión 10g Release 2, cuenta con 6 ediciones:• Oracle Database Enterprise Edition (EE).• Oracle Database Standard Edition (SE).• Oracle Database Standard Edition One (SE1).• Oracle Database Express Edition (XE).• Oracle Database Personal Edition (PE).• Oracle Database Lite Edition (LE).La única edición gratuita es la Express Edition, que es compatible con las demás ediciones de Oracle Database10gR2 y Oracle Database 11g. Recientemente la empresa oracle adquirio a Sun microsystems

Enlaces externos• Wikimedia Commons alberga contenido multimedia sobre Oracle. Commons• Oracle Corporation [3] (inglés)• Oracle España [4]

• Documentacion y Tips Oracle en español [5]

• Comunidad de profesionales Oracle hispanoparlantes [6]

• Wiki con Documentación en Castellano De Oracle [7]

• Todo sobre Oracle RAC [8] (español)• Documentación en Castellano para Administrar Oracle 9i/10g [9]

Referencias[1] http:/ / en. wikipedia. org/ wiki/ Oracle?action=history[2] http:/ / www. oracle. com/[3] http:/ / www. oracle. com[4] http:/ / www. oracle. com/ global/ es[5] http:/ / www. zonaoracle. com[6] http:/ / comunidadoraclehispana. ning. com[7] http:/ / www. wikioracle. es[8] http:/ / oracleracnotes. wordpress. com[9] http:/ / cursos. atica. um. es/ cursosdba/ dba10g1. php

Page 52: Manual SQL por Wikipedia

PostgreSQL 50

PostgreSQL

PostgreSQL

Desarrollador

PostgreSQL Global Development Groupwww.postgresql.org [1]

Información general

Última versión estable 9.020 de septiembre de 2010

Género RDBMS

Sistema operativo Multiplataforma

Licencia BSD

En español

PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos y libre, publicado bajo lalicencia BSD.Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/opersona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista,libre y/o apoyados por organizaciones comerciales. Dicha comunidad es denominada el PGDG (PostgreSQL GlobalDevelopment Group).

Nombre del productoEl uso de caracteres en mayúscula en el nombre PostgreSQL puede confundir a algunas personas a primera vista. Lasdistintas pronunciaciones de "SQL" pueden llevar a confusión. Los desarrolladores de PostgreSQL lo pronuncian/poːst ɡɹɛs kjuː ɛl/;. Es también común oír abreviadamente como simplemente "Postgres", el que fue su nombreoriginal. Debido a su soporte del estándar SQL entre la mayor parte de bases de datos relacionales, la comunidadconsideró cambiar el nombre al anterior Postgres. Sin embargo, el PostgreSQL Core Team anunció en 2007 que elproducto seguiría llamándose PostgreSQL. El nombre hace referencia a los orígenes del proyecto como la base dedatos "post-Ingres", y los autores originales también desarrollaron la base de datos Ingres.

Page 53: Manual SQL por Wikipedia

PostgreSQL 51

HistoriaPostgreSQL ha tenido una larga evolución, la cual se inicia en 1982 con el proyecto Ingres en la Universidad deBerkeley. Este proyecto, liderado por Michael Stonebraker, fue uno de los primeros intentos en implementar unmotor de base de datos relacional. Después de haber trabajado un largo tiempo en Ingres y de haber tenido unaexperiencia comercial con él mismo, Michael decidió volver a la Universidad en 1985 para trabajar en un nuevoproyecto sobre la experiencia de Ingres, dicho proyecto fue llamado post-ingres o simplemente POSTGRES.El proyecto post-ingres pretendía resolver los problemas con el modelo de base de datos relacional que habían sidoaclarados a comienzos de los años 1980. El principal de estos problemas era la incapacidad del modelo relacional decomprender "tipos", es decir, combinaciones de datos simples que conforman una única unidad. Actualmente estosson llamados objetos. Se esforzaron en introducir la menor cantidad posible de funcionalidades para completar elsoporte de tipos. Estas funcionalidades incluían la habilidad de definir tipos, pero también la habilidad de describirrelaciones - las cuales hasta ese momento eran ampliamente utilizadas pero mantenidas completamente por elusuario. En Postgres la base de datos «comprendía» las relaciones y podía obtener información de tablas relacionadasutilizando reglas. Postgres usó muchas ideas de Ingres pero no su código.La siguiente lista muestra los hitos más importantes en la vida del proyecto Postgres.• 1986: se publicaron varios papers que describían las bases del sistema.• 1988: ya se contaba con una versión utilizable.• 1989: el grupo publicaba la versión 1 para una pequeña comunidad de usuarios.• 1990: se publicaba la versión 2 la cual tenía prácticamente reescrito el sistema de reglas.• 1991: publicación de la versión 3, esta añadía la capacidad de múltiples motores de almacenamiento.• 1993: crecimiento importante de la comunidad de usuarios, la cual demandaba más características.• 1994: después de la publicación de la versión 4, el proyecto terminó y el grupo se disolvió.Después de que el proyecto POSTGRES terminara, dos graduados de la universidad, Andrew Yu y Jolly Chen,comenzaron a trabajar sobre el código de POSTGRES, esto fue posible dado que POSTGRES estaba licenciado bajola BSD, y lo primero que hicieron fue añadir soporte para el lenguaje SQL a POSTGRES, dado que anteriormentecontaba con un intérprete del lenguaje de consultas QUEL (basado en Ingres), creando así el sistema al cualdenominaron Postgres95.Para el año 1996 se unieron al proyecto personas ajenas a la Universidad como Marc Fournier de Hub.OrgNetworking Services, Bruce Momjian y Vadim B. Mikheev quienes proporcionaron el primer servidor de desarrollono universitario para el esfuerzo de desarrollo de código abierto y comenzaron a trabajar para estabilizar el código dePostgres95.En el año 1996 decidieron cambiar el nombre de Postgres95 de tal modo que refleje la característica del lenguajeSQL y lo terminaron llamando PostgreSQL, cuya primera versión de código abierto fue lanzada el 1 de agosto de1996. La primera versión formal de PostgreSQL (6.0) fue liberada en enero de 1997. Desde entonces, muchosdesarrolladores entusiastas de los motores de base de datos se unieron al proyecto, coordinaron vía Internet y entretodos comenzaron a incorporar muchas características al motor.Aunque la licencia permitía la comercialización de PostgreSQL, el código no se desarrolló en principio con finescomerciales, algo sorprendente considerando las ventajas que PostgreSQL ofrecía. La principal derivación se originócuando Paula Hawthtorn (un miembro del equipo original de Ingres que se pasó a Postgres) y Michael Stonebrakerconformaron Illustra Information Technologies para comercializar Postgres.En 2000, ex inversionistas de Red Hat crearon la empresa Great Bridge para comercializar PostgreSQL y competircontra proveedores comerciales de bases de datos. Great Bridge auspició a varios desarrolladores de PostgreSQL ydonó recursos de vuelta a la comunidad, pero a fines de 2001 cerró debido a la dura competencia de compañías comoRed Hat y pobres condiciones del mercado.

Page 54: Manual SQL por Wikipedia

PostgreSQL 52

En 2001, Command Prompt, Inc. lanzó Mammonth PostgreSQL, la más antigua distribución comercial dePostgreSQL. Continúa brindando soporte a la comunidad PostgreSQL a través del auspicio de desarrolladores yproyectos, incluyendo PL/Perl, PL/php y el alojamiento de proyectos de comunidades como PostgreSQL BuildFarm.En enero de 2005, PostgreSQL recibió apoyo del proveedor de base de datos Pervasive Software, conocido por suproducto Btrieve que se utilizaba en la plataforma Novell Netware. Pervasive anunció soporte comercial yparticipación comunitaria y logró algo de éxito. Sin embargo, en julio de 2006 dejó el mercado de soporte dePostgreSQL.A mediados de 2005 otras dos compañías anunciaron planes para comercializar PostgreSQL con énfasis en nichosseparados de mercados. EnterpriseDB añadió funcionalidades que le permitían a las aplicaciones escritas paratrabajar con Oracle ser más fáciles de ejecutar con PostgreSQL. Greenplum contribuyó mejoras directamenteorientadas a aplicaciones de Data Warehouse e Inteligencia de negocios, incluyendo el proyecto BizGres.En octubre de 2005, John Loiacono, vicepresidente ejecutivo de software en Sun Microsystems comentó: "Noestamos yendo tras el OEM de Microsoft pero estamos viendo a PostgreSQL ahora", aunque no se dieronespecificaciones en ese momento. Para noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) incluía PostgreSQL.En agosto de 2007 EnterpriseDB anunció el Postgres Resource Center y EnterpriseDB Postgres, diseñados para seruna completamente configurada distribución de PostgreSQL incluyendo muchos módulos contribuidos y agregados.EnterpriseDB Postgres fue renombrado Postgres Plus en marzo de 2008.El proyecto PostgreSQL continúa haciendo lanzamientos principales anualmente y lanzamientos menores dereparación de bugs, todos disponibles bajo la licencia BSD, y basados en contribuciones de proveedores comerciales,empresas aportantes y programadores de código abierto mayormente.

CaracterísticasAlgunas de sus principales características son, entre otras:

Alta concurrenciaMediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQLpermite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos.Cada usuario obtiene una visión consistente de lo último a lo que se le hizo commit. Esta estrategia es superior al usode bloqueos por tabla o por filas común en otras bases, eliminando la necesidad del uso de bloqueos explícitos.

Amplia variedad de tipos nativosPostgreSQL provee nativamente soporte para:• Números de precisión arbitraria.• Texto de largo ilimitado.• Figuras geométricas (con una varie• Direcciones IP (IPv4 e IPv6).• Bloques de direcciones estilo CIDR.• Direcciones MAC.• Arrays.Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexablesgracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por elproyecto PostGIS.

Page 55: Manual SQL por Wikipedia

PostgreSQL 53

Otras características• Claves ajenas también denominadas Llaves ajenas o Claves Foráneas (foreign keys).• Disparadores (triggers): Un disparador o trigger se define como una acción específica que se realiza de acuerdo a

un evento, cuando éste ocurra dentro de la base de datos. En PostgreSQL esto significa la ejecución de unprocedimiento almacenado basado en una determinada acción sobre una tabla específica. Ahora todos losdisparadores se definen por seis características:• El nombre del disparador o trigger• El momento en que el disparador debe arrancar• El evento del disparador deberá activarse sobre...• La tabla donde el disparador se activará• La frecuencia de la ejecución• La función que podría ser llamada

Entonces combinando estas seis características, PostgreSQL le permitirá crear una amplia funcionalidad a través desu sistema de activación de disparadores (triggers).• Vistas.• Integridad transaccional.• Herencia de tablas.• Tipos de datos y operaciones geométricas.• Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un sistema distribuido formado por

varios recursos (p.ej, una base de datos PostgreSQL, otra Oracle, una cola de mensajes IBM MQ JMS y un ERPSAP) gestionado por un servidor de aplicaciones donde el éxito ("commit") de la transacción goblal es elresultado del éxito de las transacciones locales. Más información en inglés en http:/ / www. theserverside. com/discussions/ thread. tss?thread_id=21385#95297 y en http:/ / java. sun. com/ javaee/ technologies/ jta/ index. jsp.

FuncionesBloques de código que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con la potencia que cadauno de ellos da, desde las operaciones básicas de programación, tales como bifurcaciones y bucles, hasta lascomplejidades de la programación orientada a objetos o la programación funcional.Los disparadores (triggers en inglés) son funciones enlazadas a operaciones sobre los datos.Algunos de los lenguajes que se pueden usar son los siguientes:• Un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle).• C.• C++.• Java PL/Java web [2].• PL/Perl.• plPHP [3].• PL/Python [4].• PL/Ruby [5].• PL/sh [6].• PL/Tcl [7].• PL/Scheme [8].• Lenguaje para aplicaciones estadísticas R por medio de PL/R [9].PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como un conjunto de valores quepueden ser tratados igual a una fila retornada por una consulta (query en inglés).

Page 56: Manual SQL por Wikipedia

PostgreSQL 54

Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o con los derechos de unusuario previamente definido. El concepto de funciones, en otros DBMS, son muchas veces referidas como"procedimientos almacenados" (stored procedures en inglés).

Productos alrededor de PostgreSQLEl PGDG solo desarrolla el Motor de Datos y un número pequeño de utilidades, para potenciar el trabajo conPostgreSQL suele ser necesario añadir utilidades externas creadas especialmente para este motor, algunas de estasherramientas son:

Alternativas ComercialesGracias a su licencia BSD, se permite la utilización del código para ser comercializado. Uno de los casos ejemplo esla de Enterprise DB (Postgresql Plus), la cual incluye varios agregados y una interfaz de desarrollo basada en Java.Entre otras empresas que utilizan Postgresql para comercializar se encuentra CyberTech (alemania), con su productoCyberCluster.

GISPostGIS

Extensión que añade soporte de objetos geográficos a PostgreSQL y permite realizar análisis medianteconsultas SQL espaciales o mediante conexión a aplicaciones GIS (Sistema de Información Geográfica).

ReplicaciónPgCluster

Replicación multi maestro.Slony-I

Replicación maestro esclavo.PyReplica

Replicación maestro esclavo y multi maestro asincrónica.

Herramientas de administraciónPgAdmin3

Entorno de escritorio visual.PgAccess

Entorno de escritorio visual.PhpPgAdmin

Entorno web.psql

Cliente de consola.Database Master [23]

Entorno de escritorio visual.

Page 57: Manual SQL por Wikipedia

PostgreSQL 55

Búsqueda de textoFull text search

Incluido en el núcleo a partir de la versión 8.3.Via Tsearch2 [10] y OpenFTS para versiones anteriores a la 8.3.

XMLXML/XSLT soporte

Via XPath extensiones en la sección contrib [11].

Usuarios destacados• .org, .info, .mobi y .aero registros de dominios por Afilias.[12]

• La American Chemical Society.• BASF.• IMDb.• Skype.• TiVo.• Penny Arcade.• Sony Online.[13]

• U.S. Departamento de Trabajo.• USPS.• VeriSign.• Pictiger.com• Wisconsin Circuit Court Access con 6 * 180GB DBs replicados en tiempo real.• OpenACS y .LRN.• INEGI.

PremiosPostgreSQL ha recibido los siguientes reconocimientos:[14]

• 1999 LinuxWorld Editor's Choice Award for Best Database• 2000 Linux Journal Editors' Choice Awards for Best Database• 2002 Linux New Media Editors Choice Award for Best Database• 2003 Linux Journal Editors' Choice Awards for Best Database• 2004 Linux New Media Award For Best Database• 2004 Linux Journal Editors' Choice Awards for Best Database• 2004 ArsTechnica Best Server Application Award• 2005 Linux Journal Editors' Choice Awards for Best Database• 2006 Linux Journal Editors' Choice Awards for Best Database• 2008 Developer.com Product of the Year, Database Tool

Page 58: Manual SQL por Wikipedia

PostgreSQL 56

Referencias[1] http:/ / www. postgresql. org/[2] http:/ / gborg. postgresql. org/ project/ pljava/ projdisplay. php[3] http:/ / plphp. commandprompt. com/[4] http:/ / www. postgresql. org/ docs/ current/ interactive/ plpython. html[5] http:/ / raa. ruby-lang. org/ project/ pl-ruby[6] http:/ / plsh. projects. postgresql. org/[7] http:/ / www. postgresql. org/ docs/ current/ interactive/ pltcl. html[8] http:/ / plscheme. projects. postgresql. org/[9] http:/ / www. joeconway. com/ plr/[10] http:/ / www. sai. msu. su/ ~megera/ postgres/ gist/ tsearch/ V2/[11] http:/ / www. throwingbeans. org/ postgresql_and_xml. html[12] PostgreSQL affiliates.ORG domain (http:/ / www. computerworld. com. au/ index. php?id=760310963)[13] Sony Online opts for open-source database over Oracle (http:/ / www. computerworld. com/ databasetopics/ data/ software/ story/

0,10801,109722,00. html)[14] « PostgreSQL, Award Winning Software (http:/ / www. postgresql. org/ about/ awards)». postgresql.org (19-01-2008). Consultado el

31-01-2008.

Enlaces externos• Wikimedia Commons alberga contenido multimedia sobre PostgreSQL. Commons• Asistencia técnica profesional para PostgreSQL (http:/ / www. postgresql. org/ support/ professional_support)• Sitio web oficial de PostgreSQL (http:/ / www. postgresql. org)• Guía de administración básica de PostgreSQL bajo Linux (http:/ / wiki. woop. es/ PostgreSQL)• Base de datos basada en PostgreSQL (http:/ / www. pervasivepostgres. com/ )• PostgreSQL-es.org (http:/ / www. postgresql-es. org/ ) - Portal en español sobre PostgreSQL• Comunidad de usuarios y sitio de PostgreSQL de Argentina (http:/ / www. arpug. com. ar)• Comunidad de usuarios y sitio de PostgreSQL de Perú (http:/ / www. postgresql. org. pe/ )• Comunidad de usuarios de PostgreSQL de Chile (http:/ / www. postgresql. cl/ )• Cliente escrito en PHP (http:/ / phppgadmin. sourceforge. net/ )

Page 59: Manual SQL por Wikipedia

Firebird 57

FirebirdPara el navegador Mozilla Firebird, vea Mozilla Firefox

Firebird

Logo de Firebird Desarrollador

Firebird Project [1]

www.firebirdsql.org [2]

Información general

Última versión estable 2.1.308 de septiembre de 2009

Género RDBMS

Sistema operativo Multiplataforma

Licencia IPL [3], IDPL [4]

En español

Firebird es un sistema de administración de base de datos relacional (o RDBMS) (Lenguaje consultas: SQL) decódigo abierto, basado en la versión 6 de Interbase, cuyo código fue liberado por Borland en 2000. Su código fuereescrito de C a C++. El proyecto se desarrolla activamente, el 18 de abril de 2008 fue liberada la versión 2.1 y el 26de diciembre de 2009 fue liberada la versión 2.5.0 RC1.

FirebirdSQL FundationLos objetivos de la Fundación FirebirdSQL son:

• Apoyar y lograr el avance del manejador de base de datos relacional Firebird• Proveer los mecanismos e infraestructura no comerciales para aceptar y administrar los fondos recaudados, e

invertir tales fondos para promover el esfuerzo del desarrollo de esta base de datos• Fomentar la cooperación y la afiliación de individuos, organizaciones sin fines de lucro y compañías

comerciales involucradas o que estén planeando estar involucradas en el desarrollo, apoyo y promoción de losproyectos de software de Firebird y sus productos y actividades asociadas.

HistoriaA finales de la década de 1990, Borland decidió liberar el código de Interbase. Diversos integrantes de la plantillacrearon una nueva empresa denominada IBPhoenix, y junto a otros desarrolladores independientes, crearon el forkahora conocido como Firebird. Más tarde, Borland decidiría volver a privatizar Interbase y comercializar suslicencias. Sin embargo, Firebird sigue siendo un proyecto de código abierto bajo una licencia similar a la MPL(Mozilla Public License).

Page 60: Manual SQL por Wikipedia

Firebird 58

Características• Es multiplataforma, y actualmente puede ejecutarse en los sistemas operativos: Linux, HP-UX, FreeBSD, Mac

OS, Solaris y Microsoft Windows.• Ejecutable pequeño, con requerimientos de hardware bajos.• Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros (embedded).• Soporte de transacciones ACID y claves foráneas.• Es medianamente escalable.• Buena seguridad basada en usuarios/roles.• Diferentes arquitecturas, entre ellas el Servidor Embebido[5] (embedded server) que permite ejecutar aplicaciones

monousuario en ordenadores sin instalar el software Firebird.• Bases de datos de sólo lectura, para aplicaciones que corran desde dispositivos sin capacidad de escritura, como

cd-roms.• Existencia de controladores ODBC, OLEDB, JDBC, PHP, Perl, .net, etc.• Requisitos de administración bajos, siendo considerada como una base de datos libre de mantenimiento, al

margen de la realización de copias de seguridad.• Pleno soporte del estándar SQL-92, tanto de sintaxis como de tipos de datos.• Completo lenguaje para la escritura de disparadores y procedimientos almacenados denominado PSQL.• Capacidad de almacenar elementos BLOB (Binary Large OBjects).• Soporte de User-Defined Functions (UDFs).• Versión autoejecutable, sin instalación, excelente para la creación de catálogos en CD-Rom y para crear versiones

de evaluación de algunas aplicaciones.

Tipos de servidorExisten dos tipos de servidor Firebird para ser instalados: Classic y Super server. Si bien tienen varias diferenciasmenores entre sí, la principal consiste en que el super server maneja hilos de ejecución individuales para cadaconexión. Por lo tanto para un número reducido de conexiones el recomendado sería el classic porque consumirámenor cantidad de recursos.En caso de arquitecturas SMP, se debe utilizar el servidor classic porque el Supersever no tiene soporte para estetipo de arquitectura.Los propios desarrolladores de Firebird recomiendan lo siguiente a la hora de decidirse por uno de estos servidores:

• En plataformas Windows seleccionar el Superserver.• En Linux simplemente elegir cualquiera, según las conexiones estimadas. En la mayoría de las situaciones no

se notará diferencias en la ejecución.Podría considerarse un tercer tipo, el Embedded. Éste consiste en una única bibliotéca de enlace dinámico DLL (deunos 2 MB de tamaño) que contiene todo el servidor. De esta forma se puede tener un DBMS completo disponible ydistribuíble junto con aplicaciones de usuario sin requerir que este se instale por separado.

Choque de nombres con Mozilla FirefoxEn abril de 2003, la Fundación Mozilla decidió renombrar su navegador web de Phoenix a Firebird. Esta decisióncausó gran preocupación en lo que se refería al proyecto para bases de datos Firebird, debido a que se asumía que losusuarios se confundirían entre la base de datos y el navegador web porque estos llevarían el mismo nombre. Ladisputa continuó hasta que los desarrolladores de Mozilla firmaron una constancia dejando en claro que el nombreFirebird era en realidad Mozilla Firebird. La constancia también dejaba en claro que el nombre Mozilla Firebird erael nombre código del proyecto. El 9 de febrero del 2004, Mozilla renombró a su navegador como Mozilla Firefox,para así evitar cualquier tipo de confusión.

Page 61: Manual SQL por Wikipedia

Firebird 59

MetasDebido a que el proyecto original no aprovecha adecuadamente las máquinas con varios procesadores o SMP, seespera que después de la estabilización de la versión 2 se integre con el proyecto Vulcan (un brazo de desarrollonacido de firebird), añadiendo soporte para esta característica, lanzando así la versión de Firebird 3.0.

Véase también• Portal:Software libre. Contenido relacionado con Software libre.• Vulcan

Referéncias[1] http:/ / www. firebirdsql. org[2] http:/ / www. firebirdsql. org/[3] http:/ / www. firebirdsql. org/ index. php?op=doc& id=ipl[4] http:/ / www. firebirdsql. org/ index. php?op=doc& id=idpl[5] La palabra embebido se utiliza en este caso para denotar que un servidor está encapsulado, vea la cuarta acepción de la definición que nos da

la Real Academia Española de la Lengua del verbo embeber: http:/ / buscon. rae. es/ draeI/ SrvltConsulta?TIPO_BUS=3& LEMA=embeber

Tools• Database Master - FireBird Management Software (http:/ / www. nucleonsoftware. com)

Enlaces externos• Página web oficial (http:/ / www. firebirdsql. org/ )• FirebirdSQL Foundation (http:/ / www. firebirdsql. org/ index. php?op=ffoundation& id=main_es)• Página no oficial en español (http:/ / www. firebird. com. mx)• Página no oficial en inglés (http:/ / www. ibphoenix. com)• Foro de firebird del clubdelphi (http:/ / www. clubdelphi. com/ foros/ forumdisplay. php?f=19) en español• Sitio Chileno dedicado a Firebird (http:/ / www. firebird. cl) en español- Chile(.cl)• Cómo instalar firebird exitosamente en debian (http:/ / jachguate. wordpress. com/ 2007/ 12/ 07/

instalar-firebird-debian/ )• Sitio con artículos sobre Firebird (En español) (http:/ / jhonny. clubdelphi. com/ category/ firebird/ )• Manual de Firebird (en español): (http:/ / infoback. com. ar/ buhardilla/ firebird/ firebird. htm) Manual bastante

completo acerca de Firebird en la lengua de Cervantes.• Revista Síntesis (En español): (http:/ / www. grupoalbor. com/ foro/ index. php/ board,16. 0. html) Enlace a los 20

números de la revista Síntesis (desde Feb-2001 a Jun-2006). Contienen muchos artículos acerca de programacióny manejo de bases de datos. Los números 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 17 y 18 contienen artículosrelacionados, directa o indirectamente, con Interbase (hermana gemela de Firebird) que supuestamente pueden seraplicables casi al 100% a Firebird. También en los números 3, 4, 5, 7, 8, 17 y 18 hablan de técnicas para utilizar elentorno de programación Delphi con Interbase.

• La potencia de los ClientDataSet (En español): (http:/ / delphiallimite. blogspot. com/ search/ label/ componentes)5 artículos sobre la programación de los componentes IBX de Delphi para acceder a Firebird. También incluyeotros artículos sobre Delphi.

• Conoce Firebird en 2 minutos (En español): (http:/ / www. firebirdnews. org/ docs/ fb2min_es. html) Informaciónsobre Firebird y muchos enlaces que simplifican mucho la búsqueda de información, utilidades, manuales, etc.Parte de los enlaces son a páginas web en inglés.

• Página web con interesantes tutoriales avanzados, en formato pdf (http:/ / www. intitec. com/ documentos. htm)

Page 62: Manual SQL por Wikipedia

Microsoft SQL Server 60

Microsoft SQL Server

Microsoft SQL Server

Desarrollador

Microsoftwww.microsoft.com/sql/ [1]

Información general

Última versión estable 2008(10.00.1600.22)2 de Agosto de 2008

Género RDBMS

Sistema operativo Microsoft Windows

Licencia Microsoft EULA

En español ?

Microsoft SQL Server es un sistema para la gestión de bases de datos producido por Microsoft basado en el modelorelacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye la alternativade Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle o PostgreSQL o MySQL.

Características de Microsoft SQL Server

Historia de versiones

Versión Año Nombre de la versión Nombre clave

1.0(OS/2)

1989 SQL Server 1.0 SQL

4.21(WinNT)

1993 SQL Server 4.21 SEQUEL

6.0 1995 SQL Server 6.0 SQL95

6.5 1996 SQL Server 6.5 Hydra

7.0 1998 SQL Server 7.0 Sphinx

- 1999 SQL Server 7.0OLAP Tools

Plato

8.0 2000 SQL Server 2000 Shiloh

8.0 2003 SQL Server 200064-bit Edition

Liberty

9.0 2005 SQL Server 2005 Yukon

10.0 2008 SQL Server 2008 Katmai

10.5 2010 SQL Server 2008 R2 Kilimanjaro

• Soporte de transacciones.• Escalabilidad, estabilidad y seguridad.• Soporta procedimientos almacenados.

Page 63: Manual SQL por Wikipedia

Microsoft SQL Server 61

• Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DMLgráficamente.

• Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y los terminales oclientes de la red sólo acceden a la información.

• Además permite administrar información de otros servidores de datos.Este sistema incluye una versión reducida, llamada MSDE con el mismo motor de base de datos pero orientado aproyectos más pequeños, que en sus versiónes 2005 y 2008 pasa a ser el SQL Express Edition, que se distribuye enforma gratuita.Es común desarrollar completos proyectos complementando Microsoft SQL Server y Microsoft Access a través delos llamados ADP (Access Data Project). De esta forma se completa la base de datos (Microsoft SQL Server), con elentorno de desarrollo (VBA Access), a través de la implementación de aplicaciones de dos capas mediante el uso deformularios Windows.En el manejo de SQL mediante líneas de comando se utiliza el SQLCMDPara el desarrollo de aplicaciones más complejas (tres o más capas), Microsoft SQL Server incluye interfaces deacceso para varias plataformas de desarrollo, entre ellas .NET, pero el servidor sólo está disponible para SistemasOperativos Windows.

Lo nuevo de SQL Server 2008La nueva base de datos contiene mayor seguridad, integración con PowerShell, remueve la configuración del áreaexpuesta (consola para configurar seguridad), cifrado transparente de datos, auditoría de datos, compresión de datos,tiene correctores de sintaxis del lenguaje Transact-SQL e IntelliSense (una carácteristica del visual studio quepermite a la base de datos sugerir objetos existentes mientras uno escribe la mitad de la palabra). Así mismo incluyenuevos tipos de datos y funciones. Entre ellos, datos espaciales, nuevos datos de tiempo (datetime2 yDatetimeoffset), tipos de datos jerárquicos.

Programación

T-SQLT-SQL (Transact-SQL) es el principal medio de programación y administración de SQL Server. Expone las palabrasclave para las operaciones que pueden realizarse en SQL Server, incluyendo creación y modificación de esquemas dela base de datos, introducir y editar datos en la base de datos, así como supervisión y gestión del propio servidor. Lasaplicaciones cliente, ya sea que consuman datos o administren el servidor, aprovechan la funcionalidad de SQLServer mediante el envío de consultas de T-SQL y declaraciones que son procesadas por el servidor y los resultados(o errores) regresan a la aplicación cliente. SQL Server permite que sean administrados mediante T-SQL. Para esto,expone tablas de sólo lectura con estadísticas del servidor. La funcionalidad para la administración se expone através de procedimientos almacenados definidos por el sistema que se pueden invocar desde las consultas de T-SQLpara realizar la operación de administración. También es posible crear servidores vinculados (Linked Servers)mediante T-SQL. Los servidores vinculados permiten el funcionamiento entre múltiples servidores con unaconsulta..

Page 64: Manual SQL por Wikipedia

Microsoft SQL Server 62

Cliente Nativo de SQLCliente Nativo de SQL es la biblioteca de acceso a datos para los clientes de Microsoft SQL Server versión 2005 enadelante. Implementa nativamente soporte para las características de SQL Server, incluyendo la ejecución de lasecuencia de datos tabular, soporte para bases de datos en espejo de SQL Server, soporte completo para todos lostipos de datos compatibles con SQL Server, conjuntos de operaciones asincrónas, las notificaciones de consulta,soporte para cifrado, así como recibir varios conjuntos de resultados en una sola sesión de base de datos. ClienteNativo de SQL se utiliza como extensión de SQL Server plug-ins para otras tecnologías de acceso de datos,incluyendo ADO u OLE DB. Cliente Nativo de SQL puede también usarse directamente, pasando por alto las capasde acceso de datos genéricos.

Desventajas• MSSQL usa Address Windowing Extensión (AWE) para hacer el direccionamiento de 64-bit. Esto le impide usar

la administración dinámica de memoria y sólo le permite alojar un máximo de 64GB de memoria compartida.• MSSQL no maneja compresión de datos (en SQL Server 2005 y 2000, solamente la versión 2008 Enterprise

Edition incluye esta característica), por lo que ocupa mucho espacio en disco.• MSSQL está atado a la plataforma del sistema operativo sobre la cual se instala.

Véase también• base de datos relacional• sistema de gestión de base de datos

• Oracle• Sybase ASE• PostgreSQL• Interbase• Firebird• MySQL

Enlaces externos• Página web de Microsoft SQL Server [2]

• Factsheet for SQL Server developers [3] (PDF)• Libros en pantalla [4]

• Lo nuevo de SQL Server 2008 [5]

• La revista de base de datos database journal (en inglés) [6]

• Sistema para crear aplicaciones profesionales con MS SQL SERVER. [7]

Page 65: Manual SQL por Wikipedia

Microsoft SQL Server 63

Referencias[1] http:/ / www. microsoft. com/ sql/[2] http:/ / www. microsoft. com/ spain/ sql/ default. mspx[3] http:/ / www. dotnet4all. com/ snippets/ 2008/ 04/ factsheet-for-sql-server-developers. html[4] http:/ / msdn. microsoft. com/ en-us/ library/ ms130214. aspx[5] http:/ / elpaladintecnologico. blogspot. com/ 2009/ 02/ blog-post. html[6] http:/ / www. databasejournal. com/ features/ article. php/ 3593466/ MS-SQL-Series. htm[7] http:/ / www. softclarity. com. ar/ Builder/ indexFla. html

InterBaseInterbase es un Sistema de Administración y gestion de Base de Datos Relacionales (RDBMS) desarrollado ycomercializado por la compañía Borland Software Corporation y actualmente desarrollado por su ex-filial CodeGear.Interbase se destaca de otros DBMS's por su bajo consumo de recursos, su casi nula necesidad de administración ysu arquitectura multi-generacional. InterBase corre en plataformas Linux, Microsoft Windows y Solaris.

TecnologíaInterbase es un RDBMS que acepta el estándar SQL-92 y soporta varias interfaces de acceso como JDBC, ODBC yADO.NET. Sin embargo, ciertas características técnicas lo distinguen de otros productos.

Bajo consumo de recursosUna instalación completa del servidor de Interbase 7 requiere aproximadamente 40Mb en disco. Esto essignificativamente mas pequeño que la instalación del cliente de muchos servidores de base de datos de otrascompañías. El servidor usa muy poca memoria mientras está ocioso. Una instalación mínima de un cliente InterBaserequiere aproximadamente 400Kb de espacio en disco.

Administración mínimaLos servidores Interbase normalmente no requieren de administradores a tiempo completo.

Arquitectura multi-generacional

Control de concurrencia

Considere una simple aplicación bancaria en la que dos usuarios tienen acceso al dinero depositado en una cuentadada. Juan lee la cuenta y encuentra que hay depositado en ella 1000 dólares, entonces saca 500 para él. Pedro lee lamisma cuenta antes de que Juan la haya cambiado, él ve 1000 dólares, y saca 800 para su uso. Está de más decir quecualquier sistema de base de datos que permita el acceso a múltiples usuarios, necesita algún tipo de sistema quesolucione este tipo de problemas.Las técnicas usadas para resolver este y otros problemas por el estilo son conocidos en la industria de las bases dedatos como control de concurrencia.Los productos tradicionales utilizan trancas las cuales conocen cuando una transacción en particular va a modificar un registro dado. Una vez que se establece una tranca, ninguna otra transacción puede leer o modificar el dato hasta que se quite la tranca. La tranca puede bloquear un registro, una página (un conjunto de registros almacenados juntos en un mismo disco) de registros, o incluso todos los registros que necesite una transacción dada, dependiendo en la granularidad de la tranca elegida. La granularidad de una tranca se maneja entre un buen desempeño y la precisión (bloqueando toda una página de que sea actualizada, puede llevar a que se bloqueen algunos registros que otras transacciones querían actualizar y que sin embargo no van a ser utilizados por la transacción que bloqueó la página,

Page 66: Manual SQL por Wikipedia

InterBase 64

pero el desempeño será mucho mejor al logrado con trancas al nivel de registros).Las trancas se transforman en un problema mayor cuando se combinan con otra característica común a todos lossistemas, el aislamiento de transacciones. Esto ocurre debido a que las transacciones normalmente realizan tantolectura como escritura (en este ejemplo, para leer el valor de la cuenta y luego cambiarlo. Para poder mostrar unavista aislada de los datos, toda la transacción, incluyendo los registros leídos pero nunca escritos, debe ser trancadaen muchos servidores de base de datos).

Recuperación

Interbase también utiliza su arquitectura multi-generacional para implementar la recuperación frente a fallas(rollback). La mayoría de los DBMS's utilizan logs para realizar esta operación, lo que puede tomar mucho tiempo eincluso necesitar de intervención manual. En cambio, la recuperación en Interbase es casi instantánea y nunca falla.

Desventajas

Ciertas operaciones son más difíciles de implementar en una arquitectura multi-generacional, y por lo tanto seejecutan más lentas en comparación a otros implementaciones tradicionales. Un ejemplo es la operación de SQLCOUNT. Aún cuando este disponible un indicie de la/las columnas incluidas en el COUNT, todos los registrosdeben ser visitados para comprobar si son visibles para la transacción en ejecución.

Historia

ComienzosJim Starkey trabajaba en DEC en su producto “Datatrive network database” cuando tuvo la idea de un sistema quemanejara cambios hechos concurrentemente por varios usuarios. La idea simplificaba dramáticamente los problemasexistentes del control de concurrencia utilizando trancas (locking), los cuales representaban un serio problema paralos nuevos sistemas de base de datos relacionales que se estaban desarrollando en ese momento. Entonces comenzó atrabajar en el sistema en DEC, pero en ese momento DEC comenzaba el desarrollo de una base de datos relacionalque resultó en el producto Rdb/VMS. Cuando se enteraron de su proyecto se desató un gran problema, y Starkeyeventualmente decidió desistir.Starkey se enteró que el proveedor de plataformas locales Apollo Computer buscaba un base de datos para susmáquinas Unix, y accedían a solventar su desarrollo. Con su apoyo, Starkey formó Groton Database Systems(Groton, Massachusetts era el lugar donde se encontraban) en 1984 y comenzó a trabajar en lo que eventualmentesería lanzado como Interbase en 1986. Apollo sufrió un inconveniente corporativo y decidió dejar el negocio delsoftware, pero en ese tiempo el producto ya estaba generando dinero.

El camino hacia BorlandEntre 1986 y 1991 el producto fue gradualmente vendido a Ashton-Tate, creadores del famoso dBASE, quienes enese entonces se encontraban comprando varias compañías de base de datos con el fin de ampliar su catálogo. Lacompañía cayó rápidamente y Borland la compró en 1991, adquiriendo Interbase como parte del trato.

Código libreA principios del año 2000, la compañía Borland anunció que el código de Interbase sería liberado (código libre) en laversión 6.0 y comenzó las negociaciones para que una empresa separada se encargara del nuevo producto. Cuandolos responsables de esta nueva empresa y Borland no llegaron a un acuerdo de separación, Interbase permaneciócomo un producto de Borland y el código fuente de Interbase 6 se liberó bajo una variante de la “Mozilla PublicLicense” a mediados del 2000.

Page 67: Manual SQL por Wikipedia

InterBase 65

Con la división de Interbase en Borland, la compañía liberó una versión propietaria de Interbase 6 y luego 6.5.Borland liberó varias actualizaciones para la versión libre antes de anunciar que ya no participaría activamente en eldesarrollo de este proyecto. De aquí nació una nueva rama de desarrollo libre basada en el código abierto deInterbase 6 conocida como Firebird, que aún se encuentra en desarrollo activo.

Últimos lanzamientosA finales de 2002, Borland lanzó InterBase versión 7, incluyendo soporte para SMP, soporte mejorado paramonitorear y controlar los servidores, y más. Borland lanzó la versión 7.1 en junio de 2003, 7.5 en diciembre de2004 y 7.5.1 el 1 de junio de 2005. Posteriormente fue el lanzamiento de InterBase 2007 (septiembre de 2006),siendo la última versión Interbase 2009 (junio de 2008).

Véase también• DBMS Firebird

Enlaces externos• Sitio oficial de Interbase [1]

Referencias[1] http:/ / www. borland. com/ interbase/

Page 68: Manual SQL por Wikipedia

66

Otros

Software libre

Mapa conceptual del software libre.

El software libre (en inglés freesoftware, esta denominación tambiénse confunde a veces con gratis por laambigüedad del término en el idiomainglés) es la denominación delsoftware que respeta la libertad de losusuarios sobre su producto adquirido y,por tanto, una vez obtenido puede serusado, copiado, estudiado, cambiado yredistribuido libremente. Según la FreeSoftware Foundation, el software librese refiere a la libertad de los usuariospara ejecutar, copiar, distribuir,estudiar, modificar el software ydistribuirlo modificado.

El software libre suele estar disponiblegratuitamente, o al precio de costo de la distribución a través de otros medios; sin embargo no es obligatorio que seaasí, por lo tanto no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que,conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el"software gratis" o "gratuito" incluye en ocasiones el código fuente; no obstante, este tipo de software no es libre enel mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución dedichas versiones modificadas del programa.

Tampoco debe confundirse software libre con "software de dominio público". Éste último es aquel software que norequiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos porigual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este softwaresería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desdela muerte de este, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, yano es del dominio público.

Page 69: Manual SQL por Wikipedia

Software libre 67

Historia

Richard Stallman, creador del concepto de software libre y fundadorde la Free Software Foundation.

Entre los años 1960 y 1970, el software no eraconsiderado un producto sino un añadido que losvendedores de las grandes computadoras de la época(las mainframes) aportaban a sus clientes para que éstospudieran usarlos. En dicha cultura, era común que losprogramadores y desarrolladores de softwarecompartieran libremente sus programas unos con otros.Este comportamiento era particularmente habitual enalgunos de los mayores grupos de usuarios de la época,como DECUS (grupo de usuarios de computadorasDEC). A finales de la década de 1970, las compañíasiniciaron el hábito de imponer restricciones a losusuarios, con el uso de acuerdos de licencia.

En 1971, cuando la informática todavía no habíasufrido su gran boom, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban ycompartían el software sin ningún tipo de restricciones.

Con la llegada de los años 1980 la situación empezó a cambiar. Las computadoras más modernas comenzaban autilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedíanrealizar modificaciones a dicho software.

En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer eradarlo a conocer a la empresa desarrolladora para que ésta lo solucionara. Aunque el programador estuviesecapacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía quemodificase el software.El mismo Richard Stallman cuenta que por aquellos años, en el laboratorio donde trabajaba, habían recibido unaimpresora donada por una empresa externa. El dispositivo, que era utilizado en red por todos los trabajadores,parecía no funcionar a la perfección, dado que cada cierto tiempo el papel se atascaba. Como agravante, no segeneraba ningún aviso que se enviase por red e informase a los usuarios de la situación.La pérdida de tiempo era constante, ya que en ocasiones, los trabajadores enviaban por red sus trabajos a imprimir yal ir a buscarlos se encontraban la impresora atascada y una cola enorme de trabajos pendientes. Richard Stallmandecidió arreglar el problema, e implementar el envío de un aviso por red cuando la impresora se bloqueara. Para ellonecesitaba tener acceso al código fuente de los controladores de la impresora. Pidió a la empresa propietaria de laimpresora lo que necesitaba, comentando, sin pedir nada a cambio, qué era lo que pretendía realizar. La empresa senegó a entregarle el código fuente. En ese preciso instante, Stallman se vio en una encrucijada: debía elegir entreaceptar el nuevo software propietario firmando acuerdos de no revelación y acabar desarrollando más softwarepropietario con licencias restrictivas, que a su vez deberían ser más adelante aceptadas por sus propios colegas.Con este antecedente, en 1984, Richard Stallman comenzó a trabajar en el proyecto GNU, y un año más tarde fundóla Free Software Foundation (FSF). Stallman introdujo la definición de software libre y el concepto de "copyleft",que desarrolló para otorgar libertad a los usuarios y para restringir las posibilidades de apropiación del software.[1]

Page 70: Manual SQL por Wikipedia

Software libre 68

Libertades del software libreDe acuerdo con tal definición, el software es "libre" garantiza las siguientes libertades:[2]

Libertad Descripción

0 la libertad de usar el programa, con cualquier propósito.

1 la libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a tusnecesidades.

2 la libertad de distribuir copias del programa, con lo cual puedes ayudar a tu prójimo.

3 la libertad de mejorar el programa y hacer públicas esas mejoras a los demás, de modo quetoda la comunidad se beneficie.

Las libertades 1 y 3 requieren acceso al código fuente porque estudiar y modificar software sin su código fuente es muy poco viable.

Ciertos teóricos usan este cuarto punto (libertad 3) para justificar parcialmente las limitaciones impuestas por lalicencia GNU GPL frente a otras licencias de software libre (ver Licencias GPL). Sin embargo el sentido original esmás libre, abierto y menos restrictivo que el que le otorga la propia situación de incompatibilidad, que podría serresuelta en la próxima versión 3.0 de la licencia GNU GPL, causa en estos momentos graves perjuicios a lacomunidad de programadores de software libre, que muchas veces no pueden reutilizar o mezclar códigos de doslicencias distintas, pese a que las libertades teóricamente lo deberían permitir.En el sitio web oficial de Open Source Initiative está la lista completa de las licencias de software libre actualmenteaprobadas y tenidas como tales.[3]

El término software no libre se emplea para referirse al software distribuido bajo una licencia de software másrestrictiva que no garantiza estas cuatro libertades. Las leyes de la propiedad intelectual reservan la mayoría de losderechos de modificación, duplicación y redistribución para el dueño del copyright; el software dispuesto bajo unalicencia de software libre rescinde específicamente la mayoría de estos derechos reservados.La definición de software libre no contempla el asunto del precio; un eslogan frecuentemente usado es "libre comoen libertad, no como en cerveza gratis" o en inglés "Free as in freedom, not as in free beer" (aludiendo a laambigüedad del término inglés "free"), y es habitual ver a la venta CD de software libre como distribuciones Linux.Sin embargo, en esta situación, el comprador del CD tiene el derecho de copiarlo y redistribuirlo. El software gratispuede incluir restricciones que no se adaptan a la definición de software libre —por ejemplo, puede no incluir elcódigo fuente, puede prohibir explícitamente a los distribuidores recibir una compensación a cambio, etc—.Para evitar la confusión, algunas personas utilizan los términos "libre" (software libre) y "gratis" (software gratis)para evitar la ambigüedad de la palabra inglesa "free". Sin embargo, estos términos alternativos son usadosúnicamente dentro del movimiento del software libre, aunque están extendiéndose lentamente hacia el resto delmundo. Otros defienden el uso del término open source software (software de código abierto). La principaldiferencia entre los términos "open source" y "free software" es que éste último tiene en cuenta los aspectos éticos yfilosóficos de la libertad, mientras que el "open source" se basa únicamente en los aspectos técnicos.En un intento por unir los mencionados términos que se refieren a conceptos semejantes, se está extendiendo el usode la palabra "FLOSS" con el significado de free/libre and open source software e, indirectamente, también a lacomunidad que lo produce y apoya.

Page 71: Manual SQL por Wikipedia

Software libre 69

Tipos de licenciasUna licencia es aquella autorización formal con carácter contractual que un autor de un software da a un interesadopara ejercer "actos de explotación legales". Pueden existir tantas licencias como acuerdos concretos se den entre elautor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o gruposde licencias:

Licencias GPLUna de las más utilizadas es la Licencia Pública General de GNU (GNU GPL). El autor conserva los derechos deautor (copyright), y permite la redistribución y modificación bajo términos diseñados para asegurarse de que todaslas versiones modificadas del software permanecen bajo los términos más restrictivos de la propia GNU GPL. Estohace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL.Es decir, la licencia GNU GPL posibilita la modificación y redistribución del software, pero únicamente bajo esamisma licencia. Y añade que si se reutiliza en un mismo programa código "A" licenciado bajo licencia GNU GPL ycódigo "B" licenciado bajo otro tipo de licencia libre, el código final "C", independientemente de la cantidad ycalidad de cada uno de los códigos "A" y "B", debe estar bajo la licencia GNU GPL.En la práctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden sermezcladas con código licenciado bajo GNU GPL (y que inevitablemente desaparecerán en el proceso, al ser elcódigo resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que nocontemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con código gobernadopor la licencia GNU GPL.En el sitio web oficial de GNU hay una lista de licencias que cumplen las condiciones impuestas por la GNU GPL yotras que no.[4]

Aproximadamente el 60% del software licenciado como software libre emplea una licencia GPL.

Licencias AGPLLa Licencia Pública General de Affero (en inglés Affero General Public License, también Affero GPL o AGPL)es una licencia copyleft derivada de la Licencia Pública General de GNU diseñada específicamente para asegurar lacooperación con la comunidad en el caso de software que corra en servidores de red.La Affero GPL es íntegramente una GNU GPL con una cláusula nueva que añade la obligación de distribuir elsoftware si éste se ejecuta para ofrecer servicios a través de una red de ordenadores.La Free Software Foundation recomienda que el uso de la GNU AGPLv3 sea considerado para cualquier softwareque usualmente corra sobre una red.[5]

Licencias estilo BSDLlamadas así porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. Elautor, bajo tales licencias, mantiene la protección de copyright únicamente para la renuncia de garantía y pararequerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución ymodificación, incluso si dichos trabajos tienen propietario. Son muy permisivas, tanto que son fácilmente absorbidasal ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licenciaasegura “verdadero” software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, yque puede decidir incluso redistribuirlo como no libre. Otras opiniones están orientadas a destacar que este tipo delicencia no contribuye al desarrollo de más software libre (normalmente utilizando la siguiente analogía: "unalicencia BSD es más libre que una GPL si y sólo si se opina también que un país que permita la esclavitud es máslibre que otro que no la permite").

Page 72: Manual SQL por Wikipedia

Software libre 70

Licencias estilo MPL y derivadasEsta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que empleó NetscapeCommunications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para elmundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano entodo tipo de sistemas operativos. La MPL es Software Libre y promueve eficazmente la colaboración evitando elefecto "viral" de la GPL (si usas código licenciado GPL, tu desarrollo final tiene que estar licenciado GPL). Desdeun punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gentese cierra en banda ante el uso de dicho código. No obstante la MPL no es tan excesivamente permisiva como laslicencias tipo BSD. Estas licencias son denominadas de copyleft débil. La NPL (luego la MPL) fue la primeralicencia nueva después de muchos años, que se encargaba de algunos puntos que no fueron tenidos en cuenta por laslicencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licenciaestilo BSD, pero perfeccionada.

CopyleftHay que hacer constar que el titular de los derechos de autor (copyright) de un software bajo licencia copyleft puedetambién realizar una versión modificada bajo su copyright original, y venderla bajo cualquier licencia que desee,además de distribuir la versión original como software libre. Esta técnica ha sido usada como un modelo de negociopor una serie de empresas que realizan software libre (por ejemplo MySQL); esta práctica no restringe ninguno delos derechos otorgados a los usuarios de la versión copyleft. También podría retirar todas las licencias de softwarelibre anteriormente otorgadas, pero esto obligaría a una indemnización a los titulares de las licencias en uso. EnEspaña, toda obra derivada está tan protegida como una original, siempre que la obra derivada parta de unaautorización contractual con el autor. En el caso genérico de que el autor retire las licencias "copyleft", no afectaríade ningún modo a los productos derivados anteriores a esa retirada, ya que no tiene efecto retroactivo. En términoslegales, el autor no tiene derecho a retirar el permiso de una licencia en vigencia. Si así sucediera, el conflicto entrelas partes se resolvería en un pleito convencional.

Comparación con el software de código abierto

Mapa conceptual del software libre y de código abierto.

Page 73: Manual SQL por Wikipedia

Software libre 71

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías,prensa diaria o páginas de Internet fidedignas.Puedes añadirlas así o avisar al autor principal del artículo [6] en su página de discusión pegando: {{subst:Aviso referencias|Softwarelibre}} ~~~~

Aunque en la práctica el software de código abierto y el software libre comparten muchas de sus licencias, la FreeSoftware Foundation opina que el movimiento del software de código abierto es filosóficamente diferente delmovimiento del software libre. Apareció en 1998 con un grupo de personas, entre los que cabe destacar a Eric S.Raymond y Bruce Perens, que formaron la Open Source Initiative (OSI). Ellos buscaban darle mayor relevancia a losbeneficios prácticos del compartir el código fuente, e interesar a las principales casas de software y otras empresas dela industria de la alta tecnología en el concepto. Por otro lado, la Free Software Foundation y Richard Stallmanprefieren plantear el asunto en términos éticos empleando el término "software libre".Los defensores del término "código abierto", en inglés open source, afirman que éste evita la ambigüedad deltérmino en ese idioma que es free en free software. El término "código abierto" fue acuñado por Christine Petersondel think tank Foresight Institute, y se registró para actuar como marca registrada el término en inglés para losproductos de software libre.Mucha gente reconoce el beneficio cualitativo del proceso de desarrollo de software cuando los desarrolladorespueden usar, modificar y redistribuir el código fuente de un programa. (Véase también La Catedral y el Bazar). Elmovimiento del software libre hace especial énfasis en los aspectos morales o éticos del software, viendo laexcelencia técnica como un producto secundario deseable de su estándar ético. El movimiento de código abierto vela excelencia técnica como el objetivo prioritario, siendo la compartición del código fuente un medio para dicho fin.Por dicho motivo, la FSF se distancia tanto del movimiento de código abierto como del término "Código Abierto"(en inglés Open Source).Puesto que la OSI sólo aprueba las licencias que se ajustan a la Open Source Definition (definición de códigoabierto), la mayoría de la gente lo interpreta como un esquema de distribución, e intercambia libremente "códigoabierto" con "software libre". Aun cuando existen importantes diferencias filosóficas entre ambos términos,especialmente en términos de las motivaciones para el desarrollo y el uso de tal software, raramente suelen tenerimpacto en el proceso de colaboración.Aunque el término "código abierto" elimina la ambigüedad de libertad frente a precio (en el caso del inglés),introduce una nueva: entre los programas que se ajustan a la definición de código abierto, que dan a los usuarios lalibertad de mejorarlos, y los programas que simplemente tiene el código fuente disponible, posiblemente con fuertesrestricciones sobre el uso de dicho código fuente. Mucha gente cree que cualquier software que tenga el códigofuente disponible es de código abierto, puesto que lo pueden manipular (un ejemplo de este tipo de software sería elpopular paquete de software gratuito Graphviz, inicialmente no libre pero que incluía el código fuente, aunque luegoAT&T le cambió la licencia). Sin embargo, mucho de este software no da a sus usuarios la libertad de distribuir susmodificaciones, restringe el uso comercial, o en general restringe los derechos de los usuarios.

Page 74: Manual SQL por Wikipedia

Software libre 72

Implicaciones económico-políticasUna vez que un producto de software libre ha empezado a circular, rápidamente está disponible a un costo muy bajo.Al mismo tiempo, su utilidad no decrece. El software, en general, podría ser considerado un bien de uso inagotable,tomando en cuenta que su costo marginal es pequeñísimo y que no es un bien sujeto a rivalidad (la posesión del bienpor un agente económico no impide que otro lo posea).Puesto que el software libre permite el libre uso, modificación y redistribución, a menudo encuentra un hogar entreusuarios para los cuales el coste del software no libre es a veces prohibitivo, o como alternativa a la piratería.También es sencillo modificarlo localmente, lo que permite que sean posibles los esfuerzos de traducción a idiomasque no son necesariamente rentables comercialmente.La mayoría del software libre se produce por equipos internacionales que cooperan a través de la libre asociación.Los equipos están típicamente compuestos por individuos con una amplia variedad de motivaciones, y puedenprovenir tanto del sector privado, del sector voluntario o del sector público. Existen muchas posturas acerca de larelación entre el software libre y el actual sistema político-económico:• Algunos consideran el software libre como un competidor contra el centralismo en empresas y gobiernos, una

forma de orden espontáneo o de anarquismo práctico.[7]

• Algunos consideran el software libre como una forma de trabajo colaborativo en un modelo de mercado, tal comose había planteado el cooperativismo.

• Algunos comparan el software libre a una economía del regalo, donde el valor de una persona está basado en loque ésta da a los demás, sin que incurra valor monetario formal de por medio.

• Grupos como Oekonux e Hipatia consideran que todo debería producirse de esta forma y que este modelo deproducción no se limita a reemplazar el modelo no libre de desarrollo del software. La cooperación basada en lalibre asociación puede usarse y se usa para otros propósitos (tales como escribir enciclopedias, por ejemplo).

• Hay proyectos de desarrollo con impulso gubernamental que utilizan software libre, así como en proyectos devoluntariado en países del tercer mundo.

Las implicaciones políticas y económicas del software libre, o su afinidad con el antiautoritarismo, es discutida.Mientras para unos estas implicaciones son notorias y representan un factor importante a tomarse en cuenta, paraotros si bien podría existir una leve relación, no tiene suficiente relevancia.

Modelo de negocioEl negocio detrás del software libre se caracteriza por la oferta de servicios adicionales al software como: lapersonalización y/o instalación del mismo, soporte técnico, donaciones, patrocinios; en contraposición al modelo denegocio basado en licencias predominante en el software de código cerrado.[8]

Seguridad relativaExiste una cierta controversia sobre la seguridad del software libre frente al software no libre (siendo uno de losmayores asuntos la seguridad por oscuridad). Un método usado de forma habitual para determinar la seguridadrelativa de los productos es determinar cuántos fallos de seguridad no parcheados existen en cada uno de losproductos involucrados. Por lo general los usuarios de este método recomiendan que cuando un producto noproporcione un método de parchear los fallos de seguridad, no se use dicho producto, al menos hasta que no estédisponible un arreglo.

Page 75: Manual SQL por Wikipedia

Software libre 73

Software libre en la administración públicaExiste una serie de países en los cuales, sus administraciones públicas, han mostrado apoyo al software libre, seamigrando total o parcialmente sus servidores y sistemas de escritorio, sea subvencionándolo. Como ejemplos de ellose tiene a Alemania,[9] [10] Argentina,[11] Brasil,[12] [13] Cuba,[14] Chile,[15] China,[16] Ecuador[17] España,[18]

Francia,[19] México,[20] República Dominicana[21] y Venezuela.[22]

Además de lo anterior, la Administración Publica tiene una cierta función de escaparate y/o guía de la industria quela hace tener un gran impacto, que debería dirigirse a la creación de un tejido tecnológico generador de riquezanacional. Ésta puede crearse fomentando empresas, cuyo negocio sea en parte el desarrollo de nuevo software librepara la administración, el mantenimiento y la adaptación del existente asimismo auditar el software existente.Actualmente (2009) el Centro Nacional de Referencia de Aplicación de las TIC basadas en Fuentes Abiertas(CENATIC), ha elaborado un informe junto a la Universidad Rey Juan Carlos (Grupo GsyC/LibreSoft) y TelefónicaI+D, con el fin de analizar el estado en que se encuentra el proceso de implantación del software de fuentes abiertasen la Administración Pública española.

Motivaciones del software libre• La motivación ética, abanderada por la Free Software Foundation, heredera de la cultura hacker, y partidaria del

apelativo libre, que argumenta que el software es conocimiento y debe poderse difundir sin trabas. Su ocultaciónes una actitud antisocial y la posibilidad de modificar programas es una forma de libertad de expresión.

• La motivación pragmática, abanderada por la Open Source Initiative y partidaria del apelativo abierto, queargumenta ventajas técnicas y económicas, con respecto a evitar una tragedia de los anticomunes mejorando losincentivos.

Aparte de estas dos grandes motivaciones, la gente que trabaja en software libre suele hacerlo por muchas otrasrazones, que van desde la diversión a la mera retribución económica, que es posible debido a modelos de negociosustentables.[23]

Ventajas del software libre

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías,prensa diaria o páginas de Internet fidedignas.Puedes añadirlas así o avisar al autor principal del artículo [6] en su página de discusión pegando: {{subst:Aviso referencias|Softwarelibre}} ~~~~

• Bajo costo de adquisición: Se trata de un software económico ya que permite un ahorro de grandes cantidades enla adquisición de las licencias.

• Innovación tecnológica: Esto se debe a que cada usuario puede aportar sus conocimientos y su experiencia y asídecidir de manera conjunta hacia donde se debe dirigir la evolución y el desarrollo del software. Este es un granavance en la tecnología mundial.

• Independencia del proveedor: Al disponer del código fuente, se garantiza una independencia del proveedor quehace que cada empresa o particular pueda seguir contribuyendo al desarrollo y los servicios del software.

• Escrutinio público: Esto hace que la corrección de errores y la mejora del producto se lleven a cabo de manerarápida y eficaz por cada uno de los usuarios que lleguen a utilizar el producto.

• Adaptación del software: Esta cualidad resulta de gran utilidad para empresas e industrias específicas quenecesitan un software personalizado para realizar un trabajo específico y con el software libre se puede realizar ycon costes mucho más razonables.

• Lenguas: Aunque el software se cree y salga al mercado en una sola lengua, el hecho de ser software libre facilita en gran medida su traducción y localización para que usuarios de diferentes partes del mundo puedan aprovechar

Page 76: Manual SQL por Wikipedia

Software libre 74

estos beneficios.

Impacto del software libre

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías,prensa diaria o páginas de Internet fidedignas.Puedes añadirlas así o avisar al autor principal del artículo [6] en su página de discusión pegando: {{subst:Aviso referencias|Softwarelibre}} ~~~~

Los impactos del software libre, y las principales nuevas perspectivas que permite, son los siguientes:• Aprovechamiento más adecuado de los recursos: Muchas aplicaciones utilizadas o promovidas por las

administraciones públicas son también utilizadas por otros sectores de la sociedad.• Fomento de la industria local: Una de las mayores ventajas del software libre es la posibilidad de desarrollar

industria local de software.• Independencia del proveedor: Es obvio que una organización preferirá depender de un mercado en régimen de

competencia que de un solo proveedor que puede imponer las condiciones en que proporciona su producto.• Adaptación a las necesidades exactas: En el caso del software libre, la adaptación puede hacerse con mucha

mayor facilidad, y lo que es más importante, sirviéndose de un mercado con competencia, si hace faltacontratarla.

• Escrutinio público de seguridad: Para una administración pública poder garantizar que sus sistemas informáticoshacen sólo lo que está previsto que hagan es un requisito fundamental y, en muchos estados, un requisito legal.

• Disponibilidad a largo plazo: Muchos datos que manejan las administraciones y los programas que sirven paracalcularlos han de estar disponibles dentro de decenas de años.

Algunos estudios apuntan al software libre como un factor clave para aumentar la competitividad en la UniónEuropea.[24]

Regulación

EspañaLa Orden EDU/2341/2009, de 27 de agosto, por la que se crea el Centro Nacional de Desarrollo Curricular enSistemas no Propietarios, tiene como finalidad el diseño, el desarrollo y la promoción de contenidos educativosdigitales para colectivos educativos específicos, en el ámbito de las Tecnologías de la Información y laComunicación, que se centra en promocionar y aplicar estrategias dirigidas a poner a disposición de los centrosescolares recursos y contenidos digitales de calidad, desarrollados en software libre.

Referencias[1] Ahmet Öztürk (July 2002). « Free Software (http:/ / cisn. metu. edu. tr/ 2002-6/ free. php)» (en inglés). Computing & Information Services

Newsletter, Metu Computer Center, Türkçe.[2] Free Software Foundation (9 de diciembre de 2010). « La Definición de Software Libre (http:/ / www. gnu. org/ philosophy/ free-sw. es.

html)». Consultado el 14 de diciembre de 2010.[3] Open Source Initiative. « OSI licenses (http:/ / www. opensource. org/ licenses)» (en inglés).[4] Free Software Foundation, Inc.. « Licencias (http:/ / www. gnu. org/ licenses/ licenses. es. html)».[5] Lista de licencias libres en el sitio de la FSF (http:/ / www. fsf. org/ licensing/ licenses/ index_html): “We recommend that developers

consider using the GNU AGPL for any software which will commonly be run over a network”.[6] http:/ / en. wikipedia. org/ wiki/ Software_libre?action=history[7] Eben Moglen. « Anarchism Triumphant: Free Software and the Death of Copyright (Anarquismo triunfante: el software libre y la muerte de

los derechos de autor) (http:/ / emoglen. law. columbia. edu/ publications/ anarchism. html)» (en inglés).[8] « ¿Cómo genera dinero el software libre? - Guias en MilBits (http:/ / www. milbits. com/ 4253/ como-genera-dinero-el-software-libre. html)».

Page 77: Manual SQL por Wikipedia

Software libre 75

[9] « DE: Foreign ministry: 'Cost of Open Source desktop maintenance is by far the lowest' — (http:/ / www. osor. eu/ news/de-foreign-ministry-cost-of-open-source-desktop-maintenance-is-by-far-the-lowest)».

[10] « DiarioTi: Diario Tecnologías de la Información (http:/ / diarioti. com/ gate/ n. php?id=16446)».[11] « Argentina eliminará la obligación estatal de usar Windows y recomendará Linux (http:/ / www. laflecha. net/ canales/ softlibre/

200403022)».[12] « El gobierno de Lula levanta la bandera del 'software' libre · ELPAÍS.com (http:/ / www. elpais. com/ articulo/ internet/ gobierno/ Lula/

levanta/ bandera/ software/ libre/ elpeputec/ 20040626elpepunet_2/ Tes)».[13] « Intel y Novell aplauden el avance de Linux en Brasil · ELPAÍS.com (http:/ / www. elpais. com/ articulo/ internet/ Intel/ Novell/ aplauden/

avance/ Linux/ Brasil/ elpeputec/ 20050517elpepunet_5/ Tes)».[14] « Cuba abandona Windows y se pasa a Linux · ELPAÍS.com (http:/ / www. elpais. com/ articulo/ internet/ Cuba/ abandona/ Windows/ pasa/

Linux/ elpeputec/ 20050517elpepunet_10/ Tes)».[15] « Regulador e IBM promueven Linux en el Gobierno, Chile, Tecnologías de Info., noticias (http:/ / www. bnamericas. com/ news/

tecnologia/ Regulador_e_IBM_promueven_Linux_en_el_Gobierno)».[16] « China Earthquake Administration Chooses Linux - ChinaTechNews.com - The Technology Source for the Latest Chinese News on

Internet, Computers, Digital, Science, Electronics, La... (http:/ / www. chinatechnews. com/ 2006/ 06/ 06/3954-china-earthquake-administration-chooses-linux)».

[17] « Implementación del Software libre en la Administración Pública Central del Ecuador (http:/ / www. informatica. gov. ec/ index. php/software-libre/ estrategia-de-migracion/ implementacion-apc)».

[18] « Extremadura usará 'software' 'libre en los 10.000 ordenadores de la administración · ELPAÍS.com (http:/ / www. elpais. com/ articulo/internet/ Extremadura/ usara/ software/ libre/ 10000/ ordenadores/ administracion/ elpportec/ 20060803elpepunet_5/ Tes)».

[19] « French police: we saved millions of euros by adopting Ubuntu - Ars Technica (http:/ / arstechnica. com/ open-source/ news/ 2009/ 03/french-police-saves-millions-of-euros-by-adopting-ubuntu. ars)».

[20] « Michoacán ahorra muchos millones con software libre - El Universal - Finanzas (http:/ / www2. eluniversal. com. mx/ pls/ impreso/noticia. html?id_nota=50094& tabla=finanzas)».

[21] « El Estado Dominicano se evitaría invertir los US$600 millones en el Gobierno Electrónico :: CLAVE digital móvil (http:/ / www.clavedigital. com/ App_Pages/ Portada/ titulares. aspx?id_articulo=6123)».

[22] Gobierno de Venezuela. « Apoyo del Gobierno Venezolano al Software Libre (http:/ / www. gobiernoenlinea. ve/ docMgr/ sharedfiles/Decreto3390. pdf)».

[23] Gonzáles Barahona Jesús, Seoane Pascual Joaquín, Robles Gregorio (2003). Introducción al software libre. Barcelona: Eurekamedia.[24] FLOSSImpact (http:/ / www. flossimpact. eu)

Enlaces externos• Wikimedia Commons alberga contenido multimedia sobre Software libre. Commons• Wikisource contiene obras originales de o sobre Software libre.Wikisource• Wikinoticias tiene noticias relacionadas con Software libre.Wikinoticias

• Wikiversidad alberga proyectos de aprendizaje sobre Software libre.Wikiversidad• Definición de Open Source (http:/ / www. opensource. org)(en inglés)• Categorías de software libre y no libre (http:/ / www. gnu. org/ philosophy/ categories. es. html)• Licencias de software libre (EN) (http:/ / www. gnu. org/ licenses/ license-list. html)• Free Software Foundation (http:/ / www. fsf. org/ ) (en inglés)• Free Software Foundation (http:/ / www. fsfla. org) (para Latinoamérica en español)• Estudio sobre la valoración del software libre en la sociedad (http:/ / www. portalprogramas. com/ software-libre/

informe)• Guía Práctica sobre Software Libre, su selección y aplicación local en América Latina y el Caribe, una

publicación de UNESCO (http:/ / portal. unesco. org/ ci/ fr/ ev. php-URL_ID=26399&URL_DO=DO_PRINTPAGE& URL_SECTION=201. html)

• Calendario Hispano de Eventos Abiertos (http:/ / www. libroblanco. com/ calendario) (para Latinoamérica enespañol)

• Centro Nacional de Referencia de Aplicación de las TIC basadas en Fuentes Abiertas (http:/ / www. cenatic. es/ )(para España es español)

Page 78: Manual SQL por Wikipedia

Normalización de bases de datos 76

Normalización de bases de datos

Definición general

Figura 1.0: Trabajo (Código, Nombre, Posición, Salario), donde Código es la ClavePrimaria.

El modelo entidad relación se basacomo un sitio web en red aprobado porla IEEE. Originalmente era unconcepto para estudiantes de laUniversidad Harvard, pero actualmenteestá abierto a cualquier persona quetenga un proyecto de base de datosabierto (SQL, MySQL, Oracle).

Se rige por las 3 Formas Normales.• Primera forma normal:Debe ser una base de datos real, que represente un objeto del mundo y contener tablas basadas en el modeloentidad-relación.• Segunda forma normal:Debe cumplir la primera forma normal y además hacer referencia con una llave foránea.• Tercera forma normal: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 elnombre o su dirección.

Dependencia funcional transitiva

Dependencia funcional transitiva.

Sean X, Y, Z tres atributos (o grupos deatributos) de la misma entidad. Si Ydepende funcionalmente de X y Z de Y,pero X no depende funcionalmente deY, se dice entonces que Z dependetransitivamente de X. Simbólicamentesería:

X Y Z entonces X ZFechaDeNacimiento Edad

Edad Conducir

FechaDeNacimiento Edad Conducir

Entonces tenemos que FechaDeNacimiento determina a Edad y la Edad determina a Conducir, indirectamentepodemos saber a través de FechaDeNacimiento a Conducir (En muchos países, una persona necesita ser mayor decierta edad para poder conducir un automóvil, por eso se utiliza este ejemplo).

Page 79: Manual SQL por Wikipedia

Normalización de bases de datos 77

Propiedades deducidas

Unión

y entonces

Pseudo-transitiva

y entonces

Descomposición

y está incluido en entonces

ClavesUna clave primaria es aquella columna (pueden ser también dos columnas o más) que identifica únicamente a esafila. La clave primaria es un identificador que va a ser único para cada fila. Se acostumbra a poner la clave primariacomo la primera columna de la tabla pero esto no tiene que ser necesario, si no es más una conveniencia. Muchasveces 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, lasdemá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énpuede identificar de forma única a una fila dentro de una tabla. Ejemplo: Si en una tabla clientes definimos elnúmero de documento (id_cliente) como clave primaria, el número de seguro social de ese cliente podría ser unaclave alternativa. En este caso no se usó como clave primaria porque es posible que no se conozca ese dato en todoslos clientes.Una clave compuesta es una clave que está compuesta por más de una columna.

Formas NormalesLas formas normales son aplicadas a las tablas de una base de datos. Decir que una base de datos está en la formanormal 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 basesde 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 son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.• La tabla contiene una clave primaria.• La clave primaria no contiene atributos nulos.• No debe de existir variación en el número de columnas.• Los Campos no clave deben identificarse por la clave (Dependencia Funcional)Una tupla no puede tener múltiples valores en cada columna. Los datos son atómicos. (Si a cada valor de X lepertenece un valor de Y y viceversa)Esta forma normal elimina los valores repetidos dentro de una BD

Page 80: Manual SQL por Wikipedia

Normalización de bases de datos 78

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 ningunaclave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. (Todos losatributos 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 dependenciacompletamente funcional. Una dependencia funcional es completamente funcional si al eliminar losatributos A de X significa que la dependencia no es mantenida, esto es que . Unadependencia funcional es una dependencia parcial si hay algunos atributos que pueden sereliminados de X y la dependencia todavía se mantiene, esto es .Por ejemplo {DNI, ID_PROYECTO} HORAS_TRABAJO (con el DNI de un empleado y el ID de un proyectosabemos cuántas horas de trabajo por semana trabaja un empleado en dicho proyecto) es completamente dependientedado 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 atributosque no son clave.Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es unadependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde semantiene 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 lasdependencias SSN→DNUMBER y DNUMBER→DMGRSSN son mantenidas, y DNUMBER no es un subconjuntode la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER esindeseable 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 dependenciafuncional , se cumple al menos una de las siguientes condiciones:1. es superllave o clave.2. es atributo primo de ; esto es, si es miembro de alguna clave 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 clavecandidata. Deberá registrarse de forma anillada ante la presencia de un intervalo seguido de una formalizacionperpetua, 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 está en FNBC, si y sólo si, para toda dependencia funcional válida en , se cumple que1. es superllave o clave.De esta forma, todo esquema que cumple FNBC, está además en 3FN; sin embargo, no todo esquema quecumple con 3FN, está en FNBC.

Page 81: Manual SQL por Wikipedia

Normalización de bases de datos 79

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.

Diagrama deinclusión de todas

las formas normales.

Quinta Forma Normal (5FN)

Una tabla se encuentra en 5FN si:• La tabla está en 4FN• No existen relaciones de dependencias no triviales que no siguen los criterios de las claves.

Una tabla que se encuentra en la 4FN se dice que está en la 5FN si, y sólo si, cada relaciónde dependencia se encuentra definida por las claves candidatas.

Reglas de CoddCodd se percató de que existían bases de datos en el mercado las cuales decían ser relacionales, pero lo único quehací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 informaciónToda 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 delas bases de datos. Las tablas que contienen tal información constituyen el Diccionario de Datos. Esto significa quetodo 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 deuna manera: con valores en tablas. Por tanto los metadatos (diccionario, catálogo) se representan exactamente igualque 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 garantizadoCada ítem de datos debe ser lógicamente accesible al ejecutar una búsqueda que combine el nombre de la tabla, suclave 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 columnarequerida, deberá encontrarse uno y solamente un valor. Por esta razón la definición de claves primarias para todaslas tablas es prácticamente obligatoria.

Page 82: Manual SQL por Wikipedia

Normalización de bases de datos 80

Regla No. 3 - Tratamiento sistemático de los valores nulosLa información inaplicable o faltante 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 enel lugar de columnas cuyos valores sean desconocidos.

Regla No. 4 - La regla de la descripción de la base de datosLa descripción de la base de datos es almacenada de la misma manera que los datos ordinarios, esto es, en tablas ycolumnas, y debe ser accesible a los usuarios autorizados.La información de tablas, vistas, permisos de acceso de usuarios autorizados, etc, debe ser almacenada exactamentede la misma manera: En tablas. Estas tablas deben ser accesibles igual que todas las tablas, a través de sentencias deSQL (o similar).

Regla No. 5 - La regla del sub-lenguaje IntegralDebe 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 paraadministrar completamente la base de datos.

Regla No. 6 - La regla de la actualización de vistasTodas 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 vistascomplejas.

Regla No. 7 - La regla de insertar y actualizarLa capacidad de manejar una base de datos con operandos simples aplica no sólo para la recuperación o consultade 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 eINSERT en SQL) deben estar disponibles y operables, independientemente del tipo de relaciones y restricciones quehaya entre las tablas.

Regla No. 8 - La regla de independencia físicaEl acceso de usuarios a la base de datos a través de terminales o programas de aplicación, debe permanecerconsistente lógicamente cuando quiera que haya cambios en los datos almacenados, o sean cambiados los métodosde acceso a los datos.El comportamiento de los programas de aplicación y de la actividad de usuarios vía terminales debería ser predeciblebasados 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.

Page 83: Manual SQL por Wikipedia

Normalización de bases de datos 81

Regla No. 9 - La regla de independencia lógicaLos programas de aplicación y las actividades de acceso por terminal deben permanecer lógicamente inalteradascuando 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 debenser independientes de la estructura lógica, por lo tanto los cambios en la estructura lógica no deben alterar omodificar estos programas de aplicación.

Regla No. 10 - La regla de la independencia de la integridadTodas las restricciones de integridad deben ser definibles en los datos, y almacenables en el catalogo, no en elprograma de aplicación.

Las reglas de integridad

1. Ningún componente de una clave primaria puede tener valores en blanco o nulos (ésta es la norma básica deintegridad).

2. Para cada valor de clave foránea deberá existir un valor de clave primaria concordante. La combinación de estasreglas aseguran que haya integridad referencial.

Regla No. 11 - La regla de la distribuciónEl sistema debe poseer un lenguaje de datos que pueda soportar que la base de datos esté distribuida físicamente endistintos 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 datoscorriendo en una mezcla de distintas máquinas y distintos sistemas operativos y que esté conectada por una variedadde 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ónSi el sistema tiene lenguajes de bajo nivel, estos lenguajes de ninguna manera pueden ser usados para violar laintegridad 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 haceposible 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 of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387 (http:/ /

www. acm. org/ classics/ nov95/ toc. html)[2] Fundamentals of DATABASE SYSTEMS Addison Wesley;, ISBN-10: 0321122267, ISBN-13: 978-0321122261,

• E.F.Codd (junio de 1970). "A Relational Model of Data for Large Shared Databanks". Communications of theACM.

• C.J.Date (1994). "An Introduction to Database Systems". Addison-Wesley.

Page 85: Manual SQL por Wikipedia

Fuentes y contribuyentes del artículo 83

Fuentes y contribuyentes del artículoBase de datos  Fuente: http://es.wikipedia.org/w/index.php?oldid=43526490  Contribuyentes: .Sergio, 3coma14, Achicoria, AdeVega, Airunp, Aleator, Alexav8, Alhen, Alphabravotango,Andreasmperu, Angus, Armando-Martin, Armin76, Arrt-932, Ascánder, Baiji, Baldur71, Biasoli, Bigsus, BlackBeast, BuenaGente, Carrillo1, Cesar4545, ChaTo, Chanchicto, Cinabrium, ClaudioElias, 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, Foundling, FrancoGG, Furti, Gaabriieelaa, Gabriel Acquistapace, Gacq, GermanX, Gizmo II, Globalphilosophy, Gonis, Grivadeneira,HUEVOCHIPS, Hispa, Humbefa, Humberto, Irbian, JMPerez, Jesuja, Jgalgarra, Jkbw, Jonik, JorgeGG, Jsanchezes, Jugones55, Klondike, Kokoo, Lazamazu, Leonardo, Levhita, LourdesCardenal, 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, Tirithel,Tomatejc, Tostadora, Wesisnay, Xenoforme, Xpel1, Yamaneko, Yrithinnd, ZackBsAs, Zanorte, Zuirdj, conversion script, 777 ediciones anónimas

Dato  Fuente: http://es.wikipedia.org/w/index.php?oldid=43548228  Contribuyentes: AchedDamiman, Airunp, Alejandro bera, Aleposta, Alexquendi, Alhen, Alphabravotango, Ana wiki, Antur,Açigni-Lovrij, Biasoli, Bigsus, CED, Cookie, Correogsk, Damifb, David0811, Dferg, Dianai, Diegusjaimes, Digigalos, Egaida, Emijrp, Farisori, Filipo, Gusgus, Hispa, Icvav, Interwiki,Javierito92, Jesuja, JorgeGG, Jpodjarny, Klondike, KnightRider, Laura Fiorucci, Leugim1972, Locutus Borg, Maldoror, Manwë, Matdrodes, Moriel, Mr. Benq, Nicop, PACO, Pilaf, PoLuX124,Porao, RoyFocker, SUL, Sauron, Siabef, Taichi, Tano4595, Tirithel, Vitamine, Wiki Wikardo, Wilfredor, 217 ediciones anónimas

Base de datos relacional  Fuente: http://es.wikipedia.org/w/index.php?oldid=43539361  Contribuyentes: Alhen, Aloriel, Annihilator SP, Aurionfox, Caligari, Developer, Dferg, Diegusjaimes,Dodo, Dreitmen, Elabra sanchez, Elalecampeon, Elsenyor, Gao.mza, GermanX, Gonzalogc, Guevonaso, Humbefa, Isha, Jesuja, Juan Cabral, Jynus, LU2JGP, Lancaster, Laura Fiorucci,Leonel.canton, Leugim1972, Lungo, Matdrodes, Mixtli5, Nicop, RoyFocker, Rrupo, SPZ, Str0b0s, Superzerocool, Tirithel, Tomatejc, VARGUX, Vitorres, Zendel, 196 ediciones anónimas

Sistema administrador de bases de datos relacionales  Fuente: http://es.wikipedia.org/w/index.php?oldid=36719197  Contribuyentes: Airunp, BlackBeast, Blue, Carmin, Diegusjaimes,DixonD, Dodo, Elwikipedista, Gacpro, GermanX, Happygolucky, Isha, JMPerez, Jecanre, Josemiguel93, Lgm7, Matdrodes, Mushii, Ortisa, Rastrojo, Richy, Taichi, Tano4595, Tecnicoespaniol,Unf, Walter closser, Xavigivax, Yrithinnd, 115 ediciones anónimas

Sistema de gestión de bases de datos  Fuente: http://es.wikipedia.org/w/index.php?oldid=43181911  Contribuyentes: 4lex, Banfield, Biasoli, Diegusjaimes, Dodo, Eligna, Humbefa,Leugim1972, Nioger, Olivares86, Poco a poco, Riviera, Robertorp, Savh, Super braulio, Tirithel, 72 ediciones anónimas

Clave primaria  Fuente: http://es.wikipedia.org/w/index.php?oldid=42002455  Contribuyentes: Dusan, Hssoprano, Ignacioerrico, Leugim1972, Murphy era un optimista, Oxartum, 29 edicionesanónimas

Clave foránea  Fuente: http://es.wikipedia.org/w/index.php?oldid=39633427  Contribuyentes: Caroliina.peque.18, Dferg, Felipealvarez, GermanX, Jynus, Manuelt15, Mindmatrix, Muro deAguas, Nfcanessa, Smrolando, 12 ediciones anónimas

Columna (base de datos)  Fuente: http://es.wikipedia.org/w/index.php?oldid=43287251  Contribuyentes: Asfarer, CommonsDelinker, Filipo, Gabriel Acquistapace, GermanX, Markoszarrate,Spa karmona, 9 ediciones anónimas

Registro (base de datos)  Fuente: http://es.wikipedia.org/w/index.php?oldid=43328522  Contribuyentes: Camilo, CommonsDelinker, Damifb, Diegusjaimes, Dodo, Draulius, Eligna, GermanX,Humberto, Jesuja, Jkbw, Lucien leGrey, Manuel Trujillo Berges, Matdrodes, Ortisa, Platonides, Rrupo, Super braulio, Tirithel, Uruk, 55 ediciones anónimas

Null (SQL)  Fuente: http://es.wikipedia.org/w/index.php?oldid=31943902  Contribuyentes: Julenarribas, Matdrodes, Matozqui, Platonides, Tirithel, 4 ediciones anónimas

Trigger (base de datos)  Fuente: http://es.wikipedia.org/w/index.php?oldid=42495087  Contribuyentes: Almorca, BetoCG, Chico512, Cookie, Daganu, Donpipo, GermanX, Hobbitts, Jesuja,Jorge c2010, Libertad y Saber, LordT, Matdrodes, Millars, Netito777, Oblongo, Pipepupo, PoLuX124, Siabef, Superzerocool, Taichi, Tirithel, Yrithinnd, 77 ediciones anónimas

Vista (base de datos)  Fuente: http://es.wikipedia.org/w/index.php?oldid=42248887  Contribuyentes: Barct, Dianai, GermanX, Jileon, Lobillo, Matdrodes, Nicop, Ortisa, Savh, Snakeyes,Udirnel, 20 ediciones anónimas

SQL  Fuente: http://es.wikipedia.org/w/index.php?oldid=43167884  Contribuyentes: -jem-, AdeVega, Airunp, Aitormoreno, Alexav8, Alhen, Alvaro qc, Andre Engels, Andreasmperu,AstroNomo, Bachi 2805, Balderai, Baldur71, Beto29, Biasoli, Calsbert, Cameri, Cinabrium, Clementito, Cobalttempest, Cosmico085, Cratón, Damifb, Diegazo, Diegusjaimes, Dnog, Dodo,Dorieo, Edub, Ejmeza, ElWiau, Eloy, Elwikipedista, ErKURITA, Fache, Farm74, FrancoGG, Gacpro, Gcsantiago, GermanX, Grimpi, Gurgut, Götz, Hoo man, Hotpadrino, Hprmedina, Humbefa,Icvav, Ingenioso Hidalgo, Isha, J.delanoy, JMPerez, Jac, Javierito92, Jesusosm, Jkbw, Jmmuguerza, Jmrubira, Johnbojaen, Jorge c2010, JorgeGG, Joseaperez, Jotagarzon, Jsanchev, Jstitch,Juancmartinezh, Juanenriquez, Juank8041, Jugones55, Juliandt, Jvlivs, Kaser, Laura Fiorucci, LordT, Lourdes Cardenal, Lucien leGrey, Magomaitin, Mahadeva, Mansoncc, Marcelomasci,Matdrodes, MatiasAB, McMalamute, Moriel, Muro de Aguas, Murphy era un optimista, Mushii, Mutari, Nelson.cruz, Netito777, No sé qué nick poner, Ofigue, Oscar ., PACO, Pan con queso,Pieter, Pipepupo, PoLuX124, Porao, Qu3tzalc0atl5, Queninosta, R0MAN0, Racso, Resped, Rgfernandez, Roberpl, Rodrigouf, Rokemaster, Rosette, RoyFocker, Rrupo, Sabbut, Sanbec, Santiz,Siabef, Subienkov, Superzerocool, Technopat, Template namespace initialisation script, Tirithel, Tomatejc, Triku, Ty25, Valyag, Vanbasten 23, Warlockzero, Wilfredor, WingMaster, Yrithinnd,Zam, Ñuño Martínez, 523 ediciones anónimas

MySQL  Fuente: http://es.wikipedia.org/w/index.php?oldid=43550743  Contribuyentes: 3coma14, Abakus, Abece, Akkan, Amgc56, Amitie 10g, Andreasmperu, Angel GN, Angel.F, Aparejador,Artistadelpecado, Ascánder, Avh, Biasoli, BlackBeast, Camoralesm, Catalania, Ciges, Cookie, Cratón, DYN DaTa, Damifb, Dark512, Death Master, Dferg, Diegusjaimes, Dodo, Dzegarra, E bmoya, Edub, Elwikipedista, Epsilom, Er Komandante, Ezarate, Fidelmoquegua, Frontelo, Frutoseco, Furti, Gabriel Acquistapace, Gacq, Gbarrer, GermanX, Götz, Hashar, Hispa, Hobbitts, Huds,Humberto, Icvav, Ignacio Icke, Ing amc, Isha, Ivancp, JAEAndTheBooks, JEDIKNIGHT1970, Jaimate, Jane Doe, Jarfil, Javierito92, Jesuja, Jisanche, JorgeGG, Josell2, Jucapac, Knocte, Levhita,Locovich, Logoff, LordTomas, Lrojasm, M S, Macar, Mafores, Maldoror, Maleiva, Mandramas, ManoloKosh, Martingala, Matdrodes, Monta990, Monty oso, Mortadelo2005, Muro de Aguas,Murphy era un optimista, Nihilo, Niqueco, OMenda, PabloStraub, PasabaPorAqui, Pipepupo, Platonides, Ppfk, Programador, Raiden32, Raysonho, Rbuj, RoyFocker, Rsg, Rutrus, Shaggy boy,SpeedyGonzalez, Spirit-Black-Wikipedista, Stuz ocuB, Sumolari, Superzerocool, Tano4595, Taty2007, Terko, Texai, Tomatejc, Tony Rotondas, Txuspe, Ty25, Unf, VARGUX, Valyag,Vitamine, Vitorres, Wilfredor, Wilinckx, Will vm, Willigulip, Xexito, Yachar, Zanaqo, Zufs, Ál, 345 ediciones anónimas

Oracle  Fuente: http://es.wikipedia.org/w/index.php?oldid=43520637  Contribuyentes: .Sergio, Acifuentes, Aibdescalzo, Alexon Cevallos, Alhen, Alonsojpd, Belgrano, BlackBeast, Cinabrium,Comae, Cratón, Crt, DYN DaTa, Dangertn, Dodo, El Megaloco, Enen, Eorbegozo, Esguibez, Frontelo, GermanX, Greek, ILoveSugar, Isra00, Jachguate, JorgeGG, Kabri, KnightRider, Kved,Laura Fiorucci, Locovich, LordT, Lp-spain, Lucien leGrey, Mactropia, Maricela4, Martingala, Matdrodes, McMalamute, Mig21bp, Murphy era un optimista, Mushii, Máximo de Montemar,Omella, Patomera, Patriciocs, PoLuX124, Queninosta, Rastrojo, SUL, Sergioperea, Snakeyes, Superzerocool, Taragui, Template namespace initialisation script, User888, User998, Warp,Wricardoh, Zanaqo, Zanorte, 141 ediciones anónimas

PostgreSQL  Fuente: http://es.wikipedia.org/w/index.php?oldid=43556329  Contribuyentes: Aadrover, Aruelo, ArwinJ, Avh, Biasoli, Carcediano, Casivaagustin, Chiunti, Comae, Danthux,Daschapa, Dhidalgo, Diegusjaimes, Dodo, Dogor, Earizon, Elwikipedista, Emijrp, Er Komandante, Fanattiq, Gabrielperez, Gcsantiago, GermanX, Globalpegasus, Gronky, Jane Doe, Jsanchezes,Macumbero86, Matdrodes, Miguelo on the road, Moleculax, Mstreet linux, Niqueco, Pacofelc, Pilaf, PoLuX124, Ralfm, Reingart, Robregonm, Rybueno, Sanbec, Shooke, Tavopc, Toad32767,Tolano, Tony Rotondas, VARGUX, Vitorres, Vszjvll, Wastingmytime, Wikante, Willigulip, 140 ediciones anónimas

Firebird  Fuente: http://es.wikipedia.org/w/index.php?oldid=37159450  Contribuyentes: Agua, Akkan, Armin76, Artistadelpecado, Ascánder, Axxgreazz, Azcu-Almada, Bedwyr, Cgarciagl,Chico512, Clementito, Comae, Demetrio, Dianai, Farisori, Fernando Estel, GermanX, Gothmog, Gronky, Hari Seldon, Ivanics, Jachguate, JosePichardo, KnightRider, Matdrodes, Mushii,Niuweme, Pilaf, Pipepupo, Psanz, Pybalo, Sergiosh, Txo, Un Mercenario, Vitorres, Xavigivax, Ysidoro, 65 ediciones anónimas

Microsoft SQL Server  Fuente: http://es.wikipedia.org/w/index.php?oldid=43415049  Contribuyentes: Acbernal, Alexav8, Anam11, Artistadelpecado, Buzzedw, Calbimonte.daniel, Cheesy,Cinabrium, Cojin, Cookie, DYN DaTa, Danielba894, Dbmaster125, Death Master, Diegusjaimes, Dodo, Dreitmen, Elen6m, Eval2de, Fanattiq, Ferenckv, Fremen, GeoAvila, GermanX,Gotencool, Hobbitts, Hprmedina, Ialad, Javierito92, Jhoropopo, Jjdelperal, Joseneno, Juank8041, Juliosm, Jynus, LastCyborg, M S, Madrimx, Magister Mathematicae, Maldoror, Marim3e,Matdrodes, Monta990, Montgomery, Muro de Aguas, Oscar ., Pandres95, Piero71, Retama, Roberzen, RoyFocker, SergiRiego, Sergioperea, Shooke, Sir Magician, Superzerocool, Symonblade,VARGUX, Vitorres, Wilfredor, Xavi2m, Xosema, 131 ediciones anónimas

InterBase  Fuente: http://es.wikipedia.org/w/index.php?oldid=41428451  Contribuyentes: Adrruiz, Azcu-Almada, Jjdelperal, Jynus, ManoloKosh, Mstreet linux, Tomatejc, Ysidoro, 12 edicionesanónimas

Page 86: Manual SQL por Wikipedia

Fuentes y contribuyentes del artículo 84

Software libre  Fuente: http://es.wikipedia.org/w/index.php?oldid=43544524  Contribuyentes: -jem-, .Sergio, 4lex, Aibdescalzo, Airunp, AlGarcia, AlbertoDV, Aleposta, Alexav8, Alhen,Almorca, Alstradiaan, Amadís, Angel GN, Annagul, Antiafd1, Antur, Aparejador, Arcibel, Arrobando, Artra, Ascánder, Asoliverez, Axxgreazz, Ayudoentodo 1, Bafomet, Baiji, Barbanegra,Bcoto, Beto29, Biasoli, BlackBeast, Bombadil1986, C'est moi, Caiser, Cal Jac02, Camarlengo, Camontuyu, Camr, Caritademenu, CarlosRuiz, Carlosbz27, Chechurisk, Ciencia Al Poder,Cinabrium, Clapp, ClaraDelRey, Clizarraga, Cmontero, ColdWind, Comae, CommonsDelinker, Coms23, Csoliverez, Ctrl Z, Cypress213, Cyxmedia, Dalton2, DamianFinol, Damifb, Danoex,Darolu, David0811, Delatorre, Demiannnn, Der Kreole, Dferg, Diegusjaimes, Dodo, Dreitmen, Drini2, Dv ESP, Ecemaml, Edub, Ejmeza, El Pantera, Elabra sanchez, Electrodan, Elnegrojose,Elsenyor, Elwikipedista, Enramos, Enric Naval, Equi, Eveliux, FAR, Fcldlibre, Fedaro, Fedeanton, FedericoMP, Flazcano, Fonsi80, Foundling, Frutoseco, Gabriel Acquistapace, Gacq, Gaiusiulius caesar, Gengiskanhg, Gerkijel, GermanX, Gonchibolso12, Greyes, Gronky, Gustavo.ovalle, HUB, Hack-Master, Hdanniel, Heavy, Hispa, Homo logos, House, Humberto, IVANSAUCEDO, Iarenaza, Ikonlabs, Insulae, Iranzop, Isela cv, Jamkaster, Jarke, JavierCantero, Javierito92, Jchildrens86, Jcsans, Jgb, Jjvaca, Jkbw, JorgeGG, JosebaAbaitua, Josell2, Josx, JoséDaniel, Jrbiolinux, Jstitch, Juanje, Juantomas, Julie, Jynus, Kaka poop, Kalessin, Kansai, Kavor, Keppler es, Kronoss, Kved, Laocratis, Lasneyx, Laura Fiorucci, Leandropadula, Leonardo,Leonardocaballero, Leonking, Lepoilu8, Leugim1972, Levhita, Libero, Libertad y Saber, Lmaguina, Locos epraix, LordT, Lucien leGrey, LyingB, Mac, Macruza, Magister Mathematicae,ManuelGR, Marcela Cabrera Ruiz, Mario modesto, Marioxcc, Martini 001, Matdrodes, Mcanto, Meltryth, Mescalier, Mgarciasolipa, Mikefarrel, Montgomery, Morenisco, Moriel,Mortadelo2005, Mr. Memo Cham, Muro de Aguas, Mutari, Negro4000, Nessye, Netito777, Nicoguaro, Nicop, Nihilo, Ninovolador, Nolan, Nopetro, Openmexico, Ortisa, PabloCastellano,Pacovila, Paintman, Patriciadedo, Phirosiberia, PoLuX124, Poccms, Poco a poco, Popopopo4443, Prometheus, Queninosta, R1chard, Ramiropol, Retama, Rimac, Roberpl, Roberto.estrella,Ronaldfpb, Rosarino, RoyFocker, Rsg, Rumpelstiltskin, Sanbec, Santiperez, Sauron, Savh, Seanver, Sebelk, Ser Ant, Sergio Yinyang, Shekatsu8er, ShinodaLop, Shooke, Slerena, Snakeyes,Srengel, Super braulio, Superzerocool, Surfaz, Tano4595, Telma, Tirithel, Tlahtopil, Toniher, Tosin2627, Trebol6, Triku, Ugly, VARGUX, Valadrem, Varano, Veon, Vic Fede, Vitamine,Vitorres, Wikipaco, Wilfredor, Worldman, Xatufan, Xavidp, Xavigivax, Xenoforme, Yakoo, Yesenia anai, Youssefsan, Yrithinnd, ZrzlKing, conversion script, Ál, 723 ediciones anónimas

Normalización de bases de datos  Fuente: http://es.wikipedia.org/w/index.php?oldid=43545239  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, Snakeyes, Spirit-Black-Wikipedista, Super braulio, Taichi, Tirithel, Tostadora, Truor, Tyrannosaurusreflex, U.gonzalez, Valyag,Verajm, Vitorres, Walter closser, Xatufan, Yeza, 692 ediciones anónimas

Page 87: Manual SQL por Wikipedia

Fuentes de imagen, Licencias y contribuyentes 85

Fuentes de imagen, Licencias y contribuyentesArchivo:OOo-2.0-Base-ca.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:OOo-2.0-Base-ca.png  Licencia: GNU Lesser General Public License  Contribuyentes: German,IradigalescImage:ProcesamientoDatos.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:ProcesamientoDatos.png  Licencia: Public Domain  Contribuyentes: Muro de Aguas, Porao,Rocket000Archivo:Emp Tables (Database).PNG  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Emp_Tables_(Database).PNG  Licencia: Public Domain  Contribuyentes: User:JamesssssArchivo:Nullmassigno.jpg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Nullmassigno.jpg  Licencia: GNU Free Documentation License  Contribuyentes: Marcos AtozquiArchivo:Mysql.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Mysql.svg  Licencia: GNU General Public License  Contribuyentes: Frédéric BellaicheArchivo:Mysql9.JPG  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Mysql9.JPG  Licencia: Creative Commons Attribution-Sharealike 2.5  Contribuyentes: Ncsadmin, Raysonho, 1ediciones anónimasArchivo:Mtop.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Mtop.png  Licencia: Creative Commons Attribution-Sharealike 3.0  Contribuyentes: User:GbarrerImagen:Question book.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Question_book.svg  Licencia: GNU Free Documentation License  Contribuyentes: Diego Grez, Javierme,Loyna, Remember the dot, Victormoz, Wouterhagens, 5 ediciones anónimasArchivo:Commons-logo.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Commons-logo.svg  Licencia: logo  Contribuyentes: User:3247, User:GruntArchivo:Pg logo.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Pg_logo.png  Licencia: BSD  Contribuyentes: Jeff MacDonaldArchivo:Yes check.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Yes_check.svg  Licencia: Public Domain  Contribuyentes: User:Gmaxwell, User:WarXArchivo:Ds-firebird-logo.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Ds-firebird-logo.svg  Licencia: desconocido  Contribuyentes: Stefan Heymann for the Firebird ProjectArchivo:X mark.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:X_mark.svg  Licencia: GNU Free Documentation License  Contribuyentes: Abnormaal, DieBuche, Gmaxwell,Kilom691, Kwj2772, MGA73, Mardetanha, Penubag, Pseudomoi, WikipediaMaster, 1 ediciones anónimasImagen:Heckert GNU white.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Heckert_GNU_white.svg  Licencia: Free Art License  Contribuyentes: Aurelio A. Heckert<[email protected]>Archivo:Mapa conceptual del software libre.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Mapa_conceptual_del_software_libre.svg  Licencia: GNU Free DocumentationLicense  Contribuyentes: René MérouArchivo:Richard Matthew Stallman.jpeg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Richard_Matthew_Stallman.jpeg  Licencia: GNU Free Documentation License Contribuyentes: BrokenSegue, DCEvoCE, Dbenbenn, Durin, Emijrp, Guety, Niqueco, Porao, Sj, Solon, Ævar Arnfjörð Bjarmason, 2 ediciones anónimasArchivo:MapaConceptualFLOSS.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:MapaConceptualFLOSS.png  Licencia: Creative Commons Attribution 3.0  Contribuyentes:User:VARGUXArchivo:Wikisource-logo.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Wikisource-logo.svg  Licencia: logo  Contribuyentes: Nicholas MoreauArchivo:Wikinews-logo.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Wikinews-logo.svg  Licencia: logo  Contribuyentes: User:Simon, User:Time3000Imagen:Wikiversity-logo-Snorky.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Wikiversity-logo-Snorky.svg  Licencia: desconocido  Contribuyentes: -Archivo:TablaRelacional2.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:TablaRelacional2.png  Licencia: Creative Commons Attribution 3.0  Contribuyentes: User:EdtrujiArchivo:DependenciaFunional2.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:DependenciaFunional2.png  Licencia: GNU Free Documentation License  Contribuyentes:User:EdtrujiArchivo:FormasNormales.png  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:FormasNormales.png  Licencia: Public Domain  Contribuyentes: User:Diego diaz espinoza

Page 88: Manual SQL por Wikipedia

Licencia 86

LicenciaCreative Commons Attribution-Share Alike 3.0 Unportedhttp:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/