Sunteți pe pagina 1din 16

Material de

Unidad 2. Lenguajes de definicin de


datos (DDL)

13

Contenido
Pag.
Unidad 2.

Lenguajes de Definicin

de Datos
2.1

Creacin de bases de

datos en MySQL
2.2

Creacin de tablas

2.2.1

Integridad

2.2.2

Integridad referencial
declarativa

2.3

Creacin de ndices

11

Ejercicios

14

13

2.1

Creacin de bases de

14

datos en MySQL
2.2
2.2.2

Creacin de tablas
Integridad referencial
declarativa

2.3

14

15

Creacin de ndices

15

Referencias consultadas

16

UNIDAD II.-LENGUAJE DE DEFINICIN


DE DATOS (DDL).
13

2.1. Creacin de bases de datos en MySQL


Existe un lenguaje llamado Lenguaje Estructurado de Consultas que es la base de todo
manejador de base de datos, aunque muchas bases de datos pueden ser creado fcilmente
gracias a la interfaz grafica de los lenguajes arriba mencionado deberas de conocer la
forma de hacerlo con el lenguaje estructurado de consultas.
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.
Y comprobar su creacin mediante el uso del comando USE.
Sintaxis : USE nombre_base_datos.
En MySQL es fcil trabajar si adems de este trabajas con JDBC en java.

2.2. Creacin de tablas


Introduccin
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, de las pelculas, de los artculos).
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.
Por esto, para disear una tabla, es preciso valorar todos los objetos de la base de datos en
su conjunto: Que informacin vamos a utilizar mas, que consultas vamos a realizar sobre

13

esos datos con frecuencia, de que forma nos gustara ver salir los datos de las tablas por
impresora (informes), como desearamos acceder a los datos por pantalla, bajo que
distribucin y diseo. Esas reflexiones previas son fundamentales a la hora de planificar y
disear los contenidos de nuestra base de datos y desde luego para el correcto y ptimo
diseo de nuestras tablas, es decir de las estructuras bsicas de informacin en cualquier
sistema de gestin de bases de datos. La informacin no se guarda en los formularios, ni en
las consultas, ni en los informes. La informacin se guarda en esas estructuras ordenadas
llamadas TABLAS.
De todo lo anterior se deduce que un paso previo e importante antes de crear una base de
datos es el ANLISIS de la misma con el fin de establecer la estructura ms adecuada.
Conocida la gran importancia de las tablas, los pasos a seguir en la creacin de una tabla
son:
Primero 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. Para MySQL usaremos
la sentencia Create table
A continuacin se explica la sintaxis de esta sentencia y se darn algunos ejemplos:

Sintaxis
Create Table nombre_tabla
(
nombre_campo_1 tipo_1
nombre_campo_2 tipo_2
nombre_campo_n tipo_n
Key(campo_x,...)
)

13

Pongamos ahora como ejemplo la creacin de una tabla llamada escuela :


Create table escuela
(
nombre var char(20),
carrera varchar(20),
sexo char(1),
nacimiento DATE )
)
En este caso creamos los campos varchar los cuales son considerados de tipo carcter de
una longitud especificada por el nmero entre parntesis.
El campo nacimiento es almacenado con formato de fecha (DATE) para permitir su
correcta explotacin a partir de las funciones previstas a tal efecto.
Del mismo modo podramos crear la tabla de artculos con una sentencia como sta:
Create Table articulos
(
articulo int(4),
titulo varchar(50),
autor varchar(25),
editorial varchar(25),
)

En este caso puede verse que los campos alfanumricos son introducidos de la misma
forma que los numricos. Volvemos a recordar que en tablas que tienen campos comunes es
de vital importancia definir estos campos de la misma forma para el buen funcionamiento
de la base.
El nombre de un campo puede tener hasta 64 caracteres de longitud, espacios en blanco
incluidos aunque se recomiendan nombres representativos, cortos, y sin espacios ni
caracteres especiales. Por ejemplo: CODIGO, NOMBRE, NOM, NUMCLI (nmero de

13

cliente), DESCRI, NPCON (nombre de la persona de contacto en la empresa), EDAD,


SALDO, y asi segn el tipo de tabla que se necesite.

2.2.1. Integridad
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.
MySQL 5.0 soporta cinco tipos de tablas: MyISAM, ISAM, HEAP, BDB (Base de datos
Berkeley), e InnoDB. BDB e InnoDB son ambas tipos de tablas transaccionales. Adems de
poder trabajar con transacciones en MySQL, las tablas del tipo InnoDB tambin tienen
soporte para la definicin de claves forneas, por lo que se nos permite definir reglas o
restricciones

que

garanticen

la

integridad

referencial

de

los

registros.

A partir de la versin 4.0, MySQL ha agregado InnoDB a la lista de tipos de tablas


soportados en una instalacin tpica. En este artculo se asume que se cuenta ya con un
servidor MySQL con soporte para el tipo de tablas InnoDB. En nuestro caso haremos uso
de un servidor MySQL 4.013 ejecutndose en un sistema MS Windows.
Nota: para asegurarnos que tenemos soporte para el tipo de tablas InnoDB podemos
ejecutar la siguiente sentencia:

13

La variable ms importante es por supuesto have_innodb que tiene el valor YES.

2.2.2. Integridad referencial declarativa


Claves primarias:
Para entender lo que son las claves forneas, tal vez sea necesario entender primero lo que
son las claves primarias. Es un hecho que las claves juegan un papel muy importante no
slo en MySQL, sino en cualquier base de datos relacional. De manera simple, las claves
proporcionan una manera rpida y eficiente de buscar datos en una tabla, adems de que
permiten preservar la integridad de los datos. Una clave candidata es un campo, o una
combinacin de campos, que identifican de manera nica un registro de una tabla. stas no
pueden contener valores nulos, y su valor debe ser nico. Una clave primaria es una clave
13

candidata que ha sido diseada para identificar de manera nica a los registros de una tabla
a travs de toda la estructura de la base de datos. La seleccin de una clave primaria es muy
importante en el diseo de una base de datos, ya que es un elemento clave de los datos que
facilita la unin de tablas y el concepto total de una base de datos relacional. Las claves
primarias deben ser nicas y no nulas, de manera que garanticen que una fila de una tabla
pueda ser siempre referenciada a travs de su clave primaria. MySQL requiere que se
especifique NOT NULL para las columnas que se van a utilizar como claves primarias al
momento de crear una tabla.

Integridad referencial en MySQL

Para poder establecer una relacin entre dos tablas, es necesario asignar un campo en
comn a las dos tablas. Para este ejemplo, el campo id_cliente existe tanto en la tabla
cliente como en la tabla venta. La mayora de las veces, este campo en comn debe ser una
clave primaria en alguna de las tablas. Vamos a insertar algunos datos en estas tablas.
Podemos decir de manera simple que integridad referencial significa que cuando un registro
en una tabla haga referencia a un registro en otra tabla, el registro correspondiente debe
existir. Por ejemplo, consideremos la relacin entre una tabla cliente y una tabla venta.

13

Hay dos registros en la tabla cliente, pero existen 3 id_cliente distintos en la tabla venta.
Habamos dicho que las dos tablas se relacionan con el campo id_cliente, por lo tanto,
podemos decir que Juan Penas tiene una cantidad de 23, y Pepe el Toro 81, sin embargo, no
hay un nombre que se corresponda con el id_cliente 3.
Las relaciones de claves forneas se describen como relaciones padre/hijo (en nuestro
ejemplo, cliente es el padre y venta es el hijo), y se dice que un registro es hurfano cuando
su padre ya no existe.
Cuando en una base de datos se da una situacin como esta, se dice que se tiene una
integridad referencial pobre (pueden existir otra clase de problemas de integridad).
Generalmente esto va ligado a un mal diseo, y puede generar otro tipo de problemas en la
base de datos, por lo tanto debemos evitar esta situacin siempre que sea posible.
En el pasado, MySQL no se esforzaba en evitar este tipo de situaciones, y la
responsabilidad pasaba a la aplicacin. Para muchos desarrolladores, esta no era una
situacin del todo grata, y por lo tanto no se consideraba a MySQL para ser usado en
sistemas "serios". Por supuesto, esta fue una de las cosas ms solicitadas en las anteriores

13

versiones de MySQL; que se tuviera soporte para claves forneas, para que MySQL
mantenga la integridad referencial de los datos.
Una clave fornea es simplemente un campo en una tabla que se corresponde con la llave
primaria de otra tabla. Para este ejemplo, el campo id_cliente en la tabla venta es la clave
fornea. Ntese que este campo se corresponde con el campo id_cliente en la tabla cliente,
en dnde este campo es la clave primaria.
Las claves forneas tienen que ver precisamente con la integridad referencial, lo que
significa que si una clave fornea contiene un valor, ese valor se refiere a un registro
existente en la tabla relacionada.

2.3. Creacin de ndices


Un ndice es una estructura interna que el sistema puede usar para encontrar 1 o mas
registros en una tabla de forma rpida.
Un ndice de Base de Datos se crea para una columna o grupo de columnas.
A un ndice se le asigna un nombre de acuerdo con las mismas reglas que se aplican para
los nombres de tablas.
Para crear un ndice se utiliza la sentencia de SQL CREATE INDEX.
Una vez que se ha creado el ndice, lo mantendr automticamente.
El sistema puede usar un ndice para aumentar la eficiencia cuando se esta accesando
directamente a un registro especificado.
La sintaxis de CREATE INDEX es:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type]
ON tbl_name (index_col_name,...)

index_col_name:
13

col_name [(length)] [ASC | DESC]


Normalmente, crea todos los ndices en una tabla cuando se crea la propia tabla con
CREATE TABLE.
Una lista de columnas de la forma (col1,col2,...) crea un ndice de mltiples columnas. Los
valores de ndice se forman al concatenar los valores de las columnas dadas.
Para columnas CHAR y VARCHAR, los ndices pueden crearse para que usen slo parte
de una columna, usando col_name(length) para indexar un prefijo consistente en los
primeros length caracteres de cada valor de la columna.
El comando mostrado aqu crea un ndice usando los primeros 10 caracteres de la columna
name:
CREATE INDEX part_of_name ON customer (name(10));
Como la mayora de nombres usualmente difieren en los primeros 10 caracteres, este ndice
no debera ser mucho ms lento que un ndice creado con la columna name entera.
Adems, usar columnas parcialmente para ndices puede hacer un fichero ndice mucho
menor, que puede ahorrar mucho espacio de disco y adems acelarar las operaciones
INSERT.
Los prefijos pueden tener una longitud de hasta 255 bytes. Para MySQL 5.0, pueden tener
una longitud de hasta 1000 bytes . Tenga en cuenta que los lmites de los prefijos se miden
en bytes, mientras que la longitud de prefijo en comandos CREATE INDEX se interpreta
como el nmero de caracteres. Tenga esto en cuenta cuando especifique una longitud de
prefijo para una columna que use un conjunto de caracteres de mltiples bytes.
En MySQL 5.0, algunos motores le permiten especificar un tipo de ndice cuando se crea
un ndice. La sintaxis para el especificador index_type es USING type_name.
Si especifica un tipo de ndice que no es legal para un motor de almacenamiento, pero hay
otro tipo de ndice disponible que puede usar el motor sin afectar los resultados de la
consulta, el motor usa el tipo disponible.

13

Los ndices se actualizan cada vez que se modifica la columna o columnas que utiliza. Por
ello no es aconsejable usar como ndices columnas en las que sern frecuentes operaciones
de escritura (INSERT, UPDATE, DELETE).
Tampoco tendra sentido crear ndices sobre columnas cuando cualquier SELECT sobre
ellos va a devolver una gran cantidad de resultados; por ejemplo una columna booleana que
admita los valores Y/N. En fin, tampoco es necesario usar ndices en tablas demasiado
pequeas, ya que en estos casos no hay ganancia de rapidez frente a una consulta normal.
Finalmente, los ndices ocupan espacio. A veces, incluso ms que la tabla de datos.

13

EJERCICIOS
UNIDAD 2: LENGUAJE DE DEFINICIN DE
DATOS (DDL)
TEMA 2.1. Creacin de bases de datos
Crear una base de datos en MySQL con los siguientes nombres:

Escuela
Empresa
Biblioteca
Inventario
Zoolgico

TEMA 2.2. Creacin de tablas


En las bases de datos hechas en el ejercicio anterior crear las siguientes tablas:

En la base de datos Escuela crear las siguientes tablas:


a. Alumnos
b. Maestros
c. Materia
En la base de datos Empresa crear las siguientes tablas:
a. Empleado
b. Rama de la empresa
c. rea de trabajo
13

En la base de datos Biblioteca crear las siguientes tablas:


a. Materia
b. Libro
c. Especialidad
En la base de datos Inventario crear las siguientes tablas:
a. Pedidos
b. Productos
c. Bodega
En la base de datos Zoolgico crear las siguientes tablas:
a. Animales
b. Comida
c. Turnos

TEMA 2.2.2. Integridad referencial declarativa


Elegir 2 de las bases anteriores y hacer que estn relacionadas de modo que se use la
integridad referencial declarativa.

TEMA 2.3. Creacin de ndices


Elegir 2 bases de datos diferentes del ejercicio 2.2.2 y agregarle un ndice a cada tabla. El
ndice debe tener un nombre coherente con la tabla y la base de datos ( ejemplo: base de
datos zoolgico, tabla animal, ndice: genero del animal

13

REFERENCIAS CONSULTADAS
UNIDAD 2: LENGUAJE DE DEFINICIN DE
DATOS (DDL)

13

S-ar putea să vă placă și