Curso de Administracion de Bases de Datos Relacionales: 06 - Definiendo tipos de dato, creando bases de datos y tablas

Hola buenas tardes, sabiendo como conectarnos a nuestro servidor de bases de datos (sea local o remoto, un SGBD nos permite ambas cosas) ahora nos resta administrar ese servidor para que sea útil, ya he definido una carpeta en el repositorio de proyectos en python donde estará el modelo de la base de datos, es un script completo y ordenado para ejecutarlo una vez y que se genere tanto la base de datos como las tablas automáticamente, en esta entrada vamos a leer el script y entender un poco de SQL en lo que respecta al lenguaje de definición de datos(DDL).


La palabra reservada create, como su traducción nos hace suponer, funciona para crear cosas, la primera linea del script es la creación de la BD Universidad y hacer que el intérprete de código SQL la utilice, esto es muy importante, si no estamos en una base de datos elegida, podríamos estar alterando la base de datos por defecto, cometer errores en bases de datos es muy sencillo y resolverlos es muy complejo, ahora la siguiente será la base de una tabla, con el lenguaje SQL definimos que crearemos una tabla cuyo nombre será Personas, entre paréntesis colocamos todas las columnas que componen nuestra tabla, primero el nombre y luego el tipo de dato..



Si alguien ha programado sabrá que int es la palabra reservada para números enteros, colocamos el DNI solo numérico por que es mas eficiente para realizar consultas con datos calculables, es necesario que todas las bases de datos tengan una llave primaria que servirá de indice y será irrepetible, en este caso el DNI esta definido como llave primaria, en caso de que tengamos identificadores alfanuméricos, se recomienda eludirlos en la media de lo posible o inventarnos un carnet numérico para control dentro del sistema, la mayoría de universidades se inventan un carnet alfanumérico, esto no es muy eficiente pero si definimos indice fulltext a un dato que sea irrepetible, puede que los tiempos de respuesta sean casi tan eficientes como un indice numérico, esto debe ser siempre por obligaciones del negocio, nunca por iniciativa del DBA, sabemos que es mala idea, decimos que es mala idea, en las reuniones charlamos un rato intentando disuadir a la gente, pero al final hacemos caso cuando nos firman un descargo de responsabilidad o lo presentan por escrito, así cuesta menos que nos echen la culpa cuando en 5 años la base de datos sea muy lenta.

El tipo varchar es el tipo de datos preferido de los niños, por defecto se intenta que los espacios sean ajustados, si sabemos que un nombre no superará los 20 espacios, lo definimos varchar y en cuanto ese dato se llene, en disco duro solo se escribiran los datos, no los espacios en blanco, en otros tipos de dato si se ha definido de 20, se almacenará en disco duro un espacio de 20 que no se reduce, el tipo date(Año-Mes-Dia) almacena la fecha, también existe datetime(año - mes - dia hora:minuto:segundo), timestamp(AñoMesDiaHoraMinutoSegundo), time(Hora:Minuto:Segundo) y year(Año), cada uno de ellos útil para aprovechar el espacio lo más posible y almacenar solo lo que nos hace falta.

Un asunto importante a considerar es que los scripts se ejecutan una sola vez y de arriba a abajo, el orden en el que se definen las tablas relacionales debe ser colocando primero aquellas que no tengan dependencias y luego aquellas que requieran de otras tablas, si bien es cierto podríamos definir que un espacio sea vacío, a la hora de ver las dependencias entre ellas, si creamos junto a la tabla sus relaciones, necesitamos que las tablas primordiales y las mas independientes, estén finalizadas antes de definir las tablas que las utilizan, por eso el orden del script, lo siguiente es crear la tabla estado que solo tiene como llave primaria un entero y como estado un espacio de 20 caracteres.


La tabla de estudiantes se conecta por personas con una llave foranea que tiene como referencia al DNI de la persona, si no existe una persona con ese DNI, no es posible hacer al estudiante, también el estado es una llave foranea, lo mas interesante de esta tabla es el tipo de dato decimal que nos permite definir como será su forma, en este caso se permiten dos dígitos enteros y un dígito que lo fraccione.

Será definido de forma numérica toda columna que necesite o pueda ser usada para hacer cálculos, verán muchos int, por que es mas fácil ubicar esos datos si son enteros, no he necesitado otros tipos de dato para crear las tablas y es importante no utilizar una llave foránea de una tabla que todavía no existe, por lo demás el codigo del script se entiende fácilmente, solo estamos tomando la estructura que habíamos creado y colcandola en nuestro SGBD, se puede hacer de cualquier manera, escribiendo a mano el script por consola, se puede buscar el archivo y ejecutarlo de forma directa.

> mysql -u [usuario] -p < [direccion del script en el equipo].sql

opción 2

> mysql -u [usuario] -p
> source [direccion del script].sql

incluso podemos ejecutar cualquier script con solo darle al punto y buscar el scritpt

> . [script].sql

Hasta aquí esta maravillosa entrada donde aprendimos algunas nociones básicas de DDL, en la próxima voy a traer un script con datos de prueba para ver como debe hacerse el ingreso de forma ordenada y además aprenderemos a hacer consultas básicas.

Comentarios

Entradas populares de este blog

Hablemos de difamación, parafilias y denuncias bien hechas

Criticamos a pablito: "Atrapado en el cuerpo equivocado"

El fruto de una era: Antiintelectualismo moderno