lunes, 8 de febrero de 2010

domingo, 7 de febrero de 2010

conceptos basicos de sql y tipos de datos

Crear la base de datos

Una base de datos en un sistema relacional está compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. En la terminología usada en SQL no se alude a las relaciones, del mismo modo que no se usa el término atributo, pero sí la palabra columna, y no se habla de tupla, sino de línea. A continuación se usarán indistintamente ambas terminologías, por lo que tabla estará en lugar de relación, columna en el de atributo y línea en el de tupla, y viceversa.
Prácticamente, la creación de la base de datos consiste en la creación de las tablas que la componen. En realidad, antes de poder proceder a la creación de las tablas, normalmente hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas. De esta manera, para una DBMS se pueden gestionar diferentes bases de datos independientes al mismo tiempo sin que se den conflictos con los nombres que se usan en cada una de ellas. El sistema previsto por el estándar para crear los espacios separados de nombres consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho sistema no se usa (o por lo menos no con los fines y el significado previstos por el estándar), pero cada DBMS prevé un procedimiento propietario para crear una base de datos. Normalmente, se amplía el lenguaje SQL introduciendo una instrucción no prevista en el estándar: "CREATE DATABASE".
La sintaxis empleada por PostgreSQL, pero también por las DBMS más difundidas, es la siguiente:

CREATE DATABASE nombre_base de datos

Con PostgreSQL está a disposición una orden invocable por shell Unix (o por shell del sistema usado), que ejecuta la misma operación:

createdb nombre_base de datos

Para crear nuestra base de datos bibliográfica, usaremos pues la orden:

createdb biblio

Una vez creada la base de datos, se pueden crear las tablas que la componen. La instrucción SQL propuesta para este fin es:

CREATE TABLE nombre_tabla (
nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ]
[ , nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ] ... ]
[ , [ vínculo_de tabla] ... ] )


nombre_columna: es el nombre de la columna que compone la tabla. Sería mejor no exagerar con la longitud de los identificadores de columna, puesto que SQL Entry Level prevé nombres con no más de 18 caracteres. Consúltese, de todos modos, la documentación de la base de datos específica. Los nombres tienen que comenzar con un carácter alfabético.

tipo_columna: es la indicación del tipo de dato que la columna podrá contener. Los principales tipos previstos por el estándar SQL son:

  • CHARACTER(n)
    Una cadena de longitud fija con exactamente n caracteres. CHARACTER se puede abreviar con CHAR

  • CHARACTER VARYING(n)
    Una cadena de longitud variable con un máximo de n caracteres. CHARACTER VARYING se puede abreviar con VARCHAR o CHAR VARYING.

  • INTEGER
    Un número estero con signo. Se puede abreviar con INT. La precisión, es decir el tamaño del número entero que se puede memorizar en una columna de este tipo, depende de la implementación de la DBMS en cuestión.

  • SMALLINT
    Un número entero con signo y una precisión que no sea superior a INTEGER.

  • FLOAT(p)
    Un número con coma móvil y una precisión p. El valor máximo de p depende de la implementación de la DBMS. Se puede usar FLOAT sin indicar la precisión, empleando, por tanto, la precisión por defecto, también ésta dependiente de la implementación. REAL y DOUBLE PRECISION son sinónimo para un FLOAT con precisión concreta. También en este caso, las precisiones dependen de la implementación, siempre que la precisión del primero no sea superior a la del segundo.

  • DECIMAL(p,q)
    Un número con coma fija de por lo menos p cifras y signo, con q cifras después de la coma. DEC es la abreviatura de DECIMAL. DECIMAL(p) es una abreviatura de DECIMAL(p,0). El valor máximo de p depende de la implementación.

  • INTERVAL
    Un periodo de tiempo (años, meses, días, horas, minutos, segundos y fracciones de segundo).

  • DATE, TIME y TIMESTAMP
    Un instante temporal preciso. DATE permite indicar el año, el mes y el día. Con TIME se pueden especificar la hora, los minutos y los segundos. TIMESTAMP es la combinación de los dos anteriores. Los segundos son un número con coma, lo que permite especificar también fracciones de segundo.

cláusula_defecto: indica el valor de defecto que tomará la columna si no se le asigna uno explícitamente en el momento en que se crea la línea. La sintaxis que hay que usar es la siguiente:

DEFAULT { valor | NULL }

donde valor es un valor válido para el tipo con el que la columna se ha definido.

vínculos_de_columna: son vínculos de integridad que se aplican a cada atributo concreto. Son:

  • NOT NULL, que indica que la columna no puede tomar el valor NULL.
  • PRIMARY KEY, que indica que la columna es la llave primaria de la tabla.
  • una definición de referencia con la que se indica que la columna es una llave externa hacia la tabla y los campos indicados en la definición. La sintaxis es la siguiente:

    REFERENCES nombre_tabla [ ( columna1 [ , columna2 ... ] ) ]
    [ ON DELETE { CASCADE | SET DEFAULT | SET NULL } ]
    [ ON UPDATE { CASCADE | SET DEFAULT | SET NULL } ]


    Las cláusulas ON DELETE y ON UPDATE indican qué acción hay que ejecutar en el caso en que una tupla en la tabla referenciada sea eliminada o actualizada. De hecho, en dichos casos en la columna referenciante (que es la que se está definiendo) podría haber valores inconsistentes. Las acciones pueden ser:

    • CASCADE: eliminar la tupla que contiene la columna referenciante (en el caso de ON DELETE) o también actualizar la columna referenciante (en el caso de ON UPDATE).
    • SET DEFAULT: asignar a la columna referenziante su valor de defecto.
    • SET NULL: asignar a la columna referenciante el valor NULL.

  • un control de valor, con el que se permite o no asignar un valor a la columna en función del resultado de una expresión. La sintaxis que se usa es:

    CHECK (expresión_condicional)

    donde expresión_condicional es una expresión que ofrece verdadero o falso.
    Por ejemplo, si estamos definiendo la columna COLUMNA1, con el siguiente control:

    CHECK ( COLUMNA1 <>

    en dicha columna se podrán incluir sólo valores inferiores a 1000.

vínculo_de_tabla: son vínculos de integridad que se pueden referir a más columnas de la tabla. Son:

  • la definición de la llave primaria:

    PRIMARY KEY ( columna1 [ , columna2 ... ] ) Véase que en este caso, a diferencia de la definición de la llave primaria como vínculo de columna, ésta se puede formar con mas de un atributo.

  • las definiciones de las llaves externas:

    FOREIGN KEY ( columna1 [ , columna2 ... ] ) definiciones_de_referencia

    La definición_de_referencia tiene la misma sintaxis y significado que la que puede aparecer como vínculo de columna.

  • un control de valor, con la misma sintaxis y significado que el que se puede usar como vínculo de columna.

Para aclarar mejor el uso de la instrucción CREATE TABLE, veamos algunas órdenes que implementan la base de datos bibliográfica ejemplificada.

CREATE TABLE Publication (
ID INTEGER PRIMARY KEY,
type CHAR(18) NOT NULL
);


La instrucción anterior crea la tabla Publication, formada por las dos columna ID de tipo INTEGER, y type de tipo CHAR(18). ID es la llave primaria de la relación. En el atributo type hay un vínculo de no nulidad.

CREATE TABLE Book (
ID INTEGER PRIMARY KEY REFERENCES Publication(ID),
title VARCHAR(160) NOT NULL,
publisher INTEGER NOT NULL REFERENCES Publisher(ID),
volume VARCHAR(16),
series VARCHAR(160),
edition VARCHAR(16),
pub_month CHAR(3),
pub_year INTEGER NOT NULL,
note VARCHAR(255)
);


Crea la relación Book, formada por nueve atributos. La llave primaria es el atributo ID, que es también una llave externa hacia la relación Publication. Sobre los atributos title, publisher y pub_year hay vínculos de no nulidad. Además, el atributo publisher es una llave externa hacia la tabla Publisher.

CREATE TABLE Author (
publicationID INTEGER REFERENCES Publication(ID),
personID INTEGER REFERENCES Person(ID),
PRIMARY KEY (publicationID, personID)
);


Crea la relación Author, compuesta por dos atributos: publicationID y personID. La llave primaria en este caso está formada por la combinación de los dos atributos, como está indicado por el vínculo de tabla PRIMARY KEY. PublicationID es una llave externa hacia la relación Publication, mientras que personID lo es hacia la relación Person.

El archivo create_biblio.sql contiene todas las órdenes necesarias para crear la estructura de la base de datos bibliográfica ejemplificada.

NOTA SOBRE POSTGRESQL
En PotgreSQL, por lo menos hasta la versión 6.5.1, no se han implementado todavía los vínculos sobre las llaves externas. El parser acepta, de todos modos, las sintaxis SQL que le afectan, y por tanto los constructos FOREIGN KEY y REFERENCES no producen un error, sino sólo un warning.

leer mas

jueves, 28 de enero de 2010

martes, 26 de enero de 2010

modelo entidad realcion

http://es.wikipedia.org/wiki/Modelo_entidad_relacion

bases de datos conceptos

Base de Datos


Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.

Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática.

Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.

Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios países. Por ejemplo, en España los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD).


Tipos de bases de datos

Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se este manejando, o la utilidad de la misma:

Según la variabilidad de los datos almacenados

Bases de datos estáticas

Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.

Bases de datos dinámicas

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

Según el contenido

Bases de datos bibliográficas

Solo contienen un surrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras.

Bases de datos de texto completo

Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas.

Directorios

Un ejemplo son las guías telefónicas en formato electrónico.

Bases de datos o "bibliotecas" de información química o biológica

Son bases de datos que almacenan diferentes tipos de información proveniente de la química, las ciencias de la vida o médicas. Se pueden considerar en varios subtipos:

  • Las que almacenan 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 datos

Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos.

Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos.

Algunos modelos con frecuencia utilizados en las bases de datos:

Bases de datos jerárquicas

Artículo principal: Base de datos jerárquica

Éstas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas.

Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento.

Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos.

Base de datos de red

Artículo principal: Base de datos de red

Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico).

Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.

Bases de datos transaccionales

Son bases de datos cuyo único fin es el envío y recepción de datos a grandes velocidades, estas bases son muy poco comunes y están dirigidas por lo general al entorno de análisis de calidad, datos de producción e industrial, es importante entender que su fin único es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto la redundancia y duplicación de información no es un problema como con las demás bases de datos, por lo general para poderlas aprovechar al máximo permiten algún tipo de conectividad a bases de datos relacionales.

Bases de datos relacionales

Artículo principal: Modelo relacional
Artículo principal: Base de datos relacional

Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que ésta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla).

En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la base de datos. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información.

El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.

Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce como normalización de una base de datos.

Durante los años 80 la aparición de dBASE produjo una revolución en los lenguajes de programación y sistemas de administración de datos. Aunque nunca debe olvidarse que dBase no utilizaba SQL como lenguaje base para su gestión.

Bases de datos multidimensionales

Artículo principal: Base de datos multidimensional

Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como creación de Cubos OLAP. Básicamente no se diferencian demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podría serlo también en una base de datos multidimensional), la diferencia está más bien a nivel conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan métricas que se desean estudiar.

Bases de datos orientadas a objetos

Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento).

Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos:

  • Encapsulació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 la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La implementación (o método) de la operación se especifica separadamente y puede modificarse sin afectar la interfaz. Los programas de aplicación de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarse independencia entre programas y operaciones.

SQL:2003, es el estándar de SQL92 ampliado, soporta los conceptos orientados a objetos y mantiene la compatibilidad con SQL92.

Bases de datos documentales

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

Bases de datos deductivas

Un sistema de base de datos deductiva, es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. Las bases de datos deductivas son también llamadas bases de datos lógicas, a raíz de que se basa en lógica matemática.

Gestión de bases de datos distribuida

La base de datos está almacenada en varias computadoras conectadas en red. Surgen debido a la existencia física de organismos descentralizados. Esto les da la capacidad de unir las bases de datos de cada localidad y acceder así a distintas universidades, sucursales de tiendas, etcétera.