Vous êtes sur la page 1sur 6

TALLER DE BASE DE DATOS

ING INFORMTICA

UNIDAD 2

LENGUAJE DE DEFINICIN DE DATOS


Un lenguaje de definicin de datos (Data Definition Language, DDL por sus
siglas en ingls) es un lenguaje proporcionado por el sistema de gestin de
base de datos que permite a los usuarios de la misma llevar a cabo las
tareas de definicin de las estructuras que almacenarn los datos as como
de los procedimientos o funciones que permitan consultarlos.
El lenguaje de programacin SQL, el ms difundido entre los gestores de
bases de datos, admite las siguientes sentencias de definicin: CREATE,
DROP y ALTER, cada una de las cuales se puede aplicar a las tablas, vistas,
procedimientos almacenados y triggers de la base de datos.
Otras que se incluyen dentro del DDL, pero que su existencia depende de la
implementacin del estndar SQL que lleve a cabo el gestor de base de
datos son GRANT y REVOKE, los cuales sirven para otorgar permisos o
quitarlos, ya sea a usuarios especficos o a un rol creado dentro de la base
de datos.
Una vez finalizado el diseo de una base de datos y escogido un SGBD para
su implementacin, el primer paso consiste en especificar el esquema
conceptual y el esquema interno de la base de datos, y la correspondencia
entre ambos. En muchos SGBD no se mantiene una separacin estricta de
niveles, por lo que el administrador de la base de datos y los diseadores
utilizan el mismo lenguaje para definir ambos esquemas, es el lenguaje de
definicin de datos (LDD). El SGBD posee un compilador de LDD cuya
funcin consiste en procesar las sentencias del lenguaje para identificar las
descripciones de los distintos elementos de los esquemas y almacenar la
descripcin del esquema en el catlogo o diccionario de datos.

2.1 CREACIN DE 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
terminologa usada en SQL no se alude a las relaciones, del mismo modo
que no se usa el trmino atributo, pero s la palabra columna, y no se habla
de tupla, sino de lnea. A continuacin se usarn indistintamente ambas
terminologas, por lo que tabla estar en lugar de relacin, columna en el de
atributo y lnea en el de tupla, y viceversa. Antes de poder proceder a la
creacin 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.
Para crear una base de datos por ejemplo en Mysql debes de utilizar la
instruccin CREATE DATABASE nombre_base_datos que es similar en los
otros manejadores de bases de datos
Prcticamente, la creacin de la base de datos consiste en la creacin de las
tablas que la componen. En realidad, antes de poder proceder a la creacin
Pgina 1 de 6

TALLER DE BASE DE DATOS


ING INFORMTICA
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 estndar para crear los espacios separados de nombres
consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho
sistema no se usa pero cada DBMS prev un procedimiento propietario para
crear una base de datos. Normalmente, se ampla el lenguaje SQL
introduciendo una instruccin no prevista en el estndar: "CREATE
DATABASE".
La sintaxis empleada por PostgreSQL, pero
difundidas, es la siguiente:

tambin por las DBMS ms

CREATE DATABASE nombre_base de datos

2.2 CREACIN DE TABLAS


En general, la mayora de las bases de datos poseen potentes editores de
bases que permiten la creacin rpida y sencilla de cualquier tipo de tabla
con cualquier tipo de formato.
Sin embargo, una vez la base de datos est alojada en el servidor, puede
darse el caso de que queramos introducir una nueva tabla ya sea con
carcter temporal (para gestionar un carrito de compra por ejemplo) o bien
permanente por necesidades concretas de nuestra aplicacin.
En estos casos, podemos, a partir de una sentencia SQL, crear la tabla con
el formato que deseemos lo cual nos puede ahorrar ms de un quebradero
de cabeza.
Este tipo de sentencias son especialmente tiles para bases de datos como
Mysql, las cuales trabajan directamente con comandos SQL y no por medio
de editores.
Para crear una tabla debemos especificar diversos datos: El nombre que le
queremos asignar, los nombres de los campos y sus caractersticas.
Adems, puede ser necesario especificar cules de estos campos van a ser
ndices y de qu tipo van a serlo.La sintaxis de creacin puede variar
ligeramente de una base de datos a otra ya que los tipos de campo aceptados
no estn completamente estandarizados.
Tras la creacin de la base de datos el siguiente paso que se debe realizar
es la creacin de la tabla, o tablas, que almacenarn la informacin. Los
datos de los clientes, de los pedidos, de los socios, etc.
Esta informacin ser la que gestionen todos los dems objetos de la base
de datos (consultas, formularios, etc.), por lo que es muy importante
planificar bien la estructura que van a tener los datos (como van a estar
dispuestos en la tabla, de que naturaleza o tipo va a ser cada uno, en que
orden estarn colocados, etc), con el fin de poder dar respuesta a todas
las cuestiones que se puedan plantear sobre el manejo de dicha
informacin.
Pgina 2 de 6

TALLER DE BASE DE DATOS

ING INFORMTICA

Para crear una tabla debemos especificar diversos datos: El nombre que le
queremos asignar, los nombres de los campos y sus caractersticas.
Adems, puede ser necesario especificar cules de estos campos van a ser
ndices y de qu tipo van a serlo.
La sintaxis de creacin puede variar ligeramente de una base de datos a

otra ya que los tipos de campo aceptados no estn completamente


estandarizados.
A continuacin os explicamos someramente la sintaxis de esta sentencia y
os proponemos una serie de ejemplos prcticos:
Sintaxis
Create Table nombre_tabla
(nombre_campo_1 tipo_1
nombre_campo_2 tipo_2
nombre_campo_n tipo_n
Key(campo_x,...)

2.2.1 INTEGRIDAD
El trmino integridad de datos se refiere a la correccin y completitud de los
datos en una base de datos. Cuando los contenidos se modifican con
sentencias INSERT, DELETE o UPDATE, la integridad de los datos
almacenados puede perderse de muchas maneras diferentes. Pueden
aadirse datos no vlidos a la base de datos, tales como un pedido que
especifica un producto no existente.
Pueden modificarse datos existentes tomando un valor incorrecto, como por
ejemplo si se reasigna un vendedor a una oficina no existente. Los cambios
en la base de datos pueden perderse debido a un error del sistema o a un
fallo en el suministro de energa. Los cambios pueden ser aplicados
parcialmente, como por ejemplo si se aade un pedido de un producto sin
ajustar la cantidad disponible para vender.
Una de las funciones importantes de un DBMS relacional es preservar la
integridad de sus datos almacenados en la mayor medida posible.

Tipos de restricciones de integridad


Datos Requeridos: establece que una columna tenga un valor no NULL. Se
define efectuando la declaracin de una columna es NOT NULL cuando la
tabla que contiene las columnas se crea por primera vez, como parte de la
sentencia CREATE TABLE.
Chequeo de Validez: cuando se crea una tabla cada columna tiene un
tipo de datos y el DBMS asegura que solamente los datos del tipo
especificado sean ingresados en la tabla.
Integridad de entidad: establece que la clave primaria de una tabla
debe tener un valor nico para cada fila de la tabla; si no, la base de
datos perder su integridad. Se especifica en la sentencia CREATE
TABLE. El DBMS comprueba automticamente la unicidad del valor de
la clave primaria con cada sentencia INSERT Y UPDATE. Un intento de
insertar o actualizar una fila con un valor de la clave primaria ya
Pgina 3 de 6

TALLER DE BASE DE DATOS


ING INFORMTICA
existente fallar.
Integridad referencial: asegura la integridad entre las claves ajenas y
primarias (relaciones padre/hijo). Existen cuatro actualizaciones de la
base de datos que pueden corromper la integridad referencial:
La insercin de una fila hijo se produce cuando no
coincide la clave ajena con la clave primaria del padre.

La actualizacin en la clave ajena de la fila hijo, donde se


produce una actualizacin en la clave ajena de la fila hijo
con una sentencia UPDATE y la misma no coincide con
ninguna clave primaria.
La supresin de una fila padre, con la que, si una fila
padre -que tiene uno o ms hijos- se suprime, las filas
hijos quedarn hurfanas.
La actualizacin de la clave primaria de una fila padre,
donde si en una fila padre, que tiene uno o ms hijos se
actualiza su clave primaria, las filas hijos quedarn
hurfanas.

2.2.2 INTEGRIDAD REFERENCIAL DECLARATIVA


La integridad de los datos es la propiedad que asegura que informacin
dada es correcta, al cumplir ciertas aserciones.
Las restricciones de integridad aseguran que la informacin contenida en
una base de datos es correcta.
Las restricciones de integridad son propiedades de la base de datos que se
deben satisfacer en cualquier momento.
Las restricciones de integridad aseguran que la informacin contenida en la
base de datos cumple ciertas restricciones para los diferentes estados.

La integridad referencial es una propiedad deseable en las bases de datos.


Gracias a la integridad referencial se garantiza que una entidad (fila o
registro) siempre se relaciona con otras entidades vlidas, es decir, que
existen en la base de datos. Implica que en todo momento dichos datos
sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones
mal resueltas.
Todas las bases de datos relacionales gozan de esta propiedad gracias a
que el software gestor de base de datos vela por su cumplimiento. En
cambio, las bases de datos jerrquicas requieren que los programadores se
aseguren de mantener tal propiedad en sus programas.

Pgina 4 de 6

TALLER DE BASE DE DATOS

ING INFORMTICA

Ejemplo:
Supongamos una base de datos con las entidades Persona y Factura. Toda
factura corresponde a una persona y solamente una. Implica que en todo
momento dichos datos sean correctos, sin repeticiones innecesarias, datos
perdidos y relaciones mal resueltas.
Supongamos que una persona se identifica por su atributo DNI (Documento
nacional de identidad). Tambin tendr otros atributos como el nombre y la
direccin. La entidad Factura debe tener un atributo DNI_cliente que
identifique a quin pertenece la factura.
Por sentido comn es evidente que todo valor de DNI_cliente debe
corresponder con algn valor existente del atributo DNI de la entidad
Persona. Esta es la idea intuitiva de la integridad referencial.
Existen tres tipos de integridad referencial:
Integridad referencial dbil: si en una tupla de R todos los valores de
los atributos de K tienen un valor que no es el nulo, entonces debe
existir una tupla en S que tome esos mismos valores en los atributos
de J;
Integridad referencial parcial: si en una tupla de R algn atributo de K
toma el valor nulo, entonces debe existir una tupla en S que tome en
los atributos de J los mismos valores que los atributos de K con valor
no nulo; y
Integridad referencial completa: en una tupla de R todos los atributos
de K deben tener el valor nulo o bien todos tienen un valor que no es
el nulo y entonces debe existir una tupla en S que tome en los
atributos de J los mismos valores que toman los de K.

2.2.3 CREACIN DE NDICES


Un ndice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una
o varias columnas de la tabla. En este grupo de datos aparece la relacin
entre el contenido y el nmero de fila donde est ubicado.
Los ndices -como los ndices de los libros- sirven para agilizar las consultas
a las tablas, evitando que mysql tenga que revisar todos los datos
disponibles para devolver el resultado.
Podemos crear el ndice a la vez que creamos la tabla, usando la palabra
INDEX seguida del nombre del ndice a crear y columnas a indexar (que
pueden ser varias):
INDEX nombre_indice (columna_indexada, columna_indexada2...)
La sintaxis es ligeramente distinta segun la clase de ndice:
PRIMARY KEY (nombre_columna_1 [,nombre_columna2...])
UNIQUE INDEX nombre_indice (columna_indexada1
[,columna_indexada2 ...])
INDEX nombre_index (columna_indexada1 [,columna_indexada2...])
Pgina 5 de 6

TALLER DE BASE DE DATOS


ING INFORMTICA
Podemos tambin aadirlos a una tabla despus de creada:
ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada);
Si queremos eliminar un ndice: ALTER TABLE tabla_nombre DROP INDEX
nombre_indice
Los index permiten mayor rpidez en la ejecucin de las consultas a la base
de datos tipo SELECT ... WHERE
La regla bsica es pues crear tus ndices sobre aquellas columnas que vayas
a usar con una clusula WHERE, y no crearlos con aquellas columnas que
vayan a ser objeto de un SELECT: SELECT texto from tabla_libros WHERE

autor = Vazquez; En este ejemplo, la de autor es una columna buena


candidata a un indice; la de texto, no.
Otra regla bsica es que son mejores candidatas a indexar aquellas
columnas que presentan muchos valores distintos, mientras que no son
buenas candidatas las que tienen muchos valores idnticos, como por
ejemplo sexo (masculino y femenino) porque cada consulta implicar
siempre recorrer prcticamente la mitad del ndice.
Tipos de ndice
En algunas bases de datos existen diferencias entre KEY e INDEX. No as en
MySQL donde son sinnimos.
Un ndice que s es especial es el llamado PRIMARY KEY. Se trata de un
ndice diseado para consultas especialmente rpidas. Todos sus campos
deben ser UNICOS y no admite NULL
Un indice UNIQUE es aquel que no permite almacenar dos valores iguales.
Los indices FULL TEXT permiten realizar bsquedas de palabras. Puedes
crear indices FULLTEXT sobre columnas tipo CHAR, VARCHAR o TEXT.

Pgina 6 de 6

Vous aimerez peut-être aussi