Documente Academic
Documente Profesional
Documente Cultură
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
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
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
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.
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.
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.
index_col_name:
13
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
13
REFERENCIAS CONSULTADAS
UNIDAD 2: LENGUAJE DE DEFINICIN DE
DATOS (DDL)
13