3- Uso de índices y relaciones de tablas Objetivos: Crear indicies y manejar la restricciones de estos Recursos: SQL SERVER 2012 Guías de práctica. Introducción: Para el manejo de bases de datos relacionales debo de manejar las restricciones necesarias para poder enlazar las tablas y ordenar los datos. INDICES (INDEX) Un índice es una estructura de disco asociada con una tabla o una vista que acelera la recuperación de filas de la tabla o de la vista. Un índice contiene claves generadas a partir de una o varias columnas de la tabla o la vista. Dichas claves están almacenadas en una estructura (árbol b) que permite que SQL Server busque de forma rápida y eficiente la fila o filas asociadas a los valores de cada clave. CLAVE PRIMARIA (PRIMARY KEY) La clave principal de una tabla relacional identifica de forma exclusiva cada registro de la tabla. Puede ser un atributo normal que se garantiza que sea único (como el número de Seguro Social en una mesa con no más de un registro por persona) o puede ser generado por el DBMS (como un identificador único global o GUID, en Microsoft SQL Server). Las claves principales pueden consistir en un solo atributo o atributos múltiples en combinación. CLAVE FORANEA (FOREING KEY) Una clave externa es un campo de una tabla relacional que coincide con la columna de clave principal de otra tabla. La clave externa se puede utilizar para las tablas de referencia. Para más información sobre este tema, lea Creación de claves externas. INICIO DE LA PRÁCTICA Empezaremos creando la base de datos “empresa1”, de la forma que ya aprendimos y a continuación crearemos la tabla “ubicacion” la cual según lo aprendido anteriormente la obtendría así Ahora vamos a crear un llave primaria, utilizando click derecho sobre el campo “idubicacion”, se nos desplegara un menú y seleccionamos “Set Primary Key”. Entonces aparecerá una llave a la par del campo “idubicacion” lo que significa es llave primaria (PK), la cual solo puede haber una en la tabla Como último paso vas hacer que el campo “idubicacion” sea auto numérico, ósea que pondrá números en correlativo automáticamente, para hacer esto, utilizaremos las opciones debajo del diseño de la tabla, ocuparemos la pestaña “Identity Specification”, exploraremos la opción y seleccionaremos “(is identity)” la cual por default esta en NO, la podremos en SI, usado la opción al final de la línea, una vez activado podremos poner con qué número empieza y los incrementos, las opciones por default en ambas son de 1. Ahora guardo la tabla con el nombre de “ubicación” y agrego 5 registros, los cuales deben ser nombre de ciudades, no necesita llenar el campo “idubicacion” él lo hará automáticamente.. Como siguiente paso creemos la tabla “pago”, realizando el mismo proceso, creando “idpago” como llave primaria, y haciendo que este campo sea auto numérico, y agregando los siguientes cuatro registro: contado, crédito, tarjeta crédito, consignación. Seguiremos creando la siguiente tabla que es “proveedor” según el diagrama, crearemos como llave primaria “idproveedor” y la haremos auto numérico, lo cual nos quedara así. CREACION DE INDICES Para poder hacer relaciones necesitamos crear llaves foráneas (FK), estas debe estar indexadas, para mejor control y uso, para esto daremos click sobre el campo “idubicacion” y seleccionaremos “Indices o Claves”. Al seleccionarlo los mostrara la siguiente pantalla, y seleccionamos “Add”. Posteriormente en la pestaña “General” opción “Columns”, selecciono el botón que tiene tres puntos, para seleccionar el campo que quiero indexar. En la siguiente pantalla debo de seleccionar la columna o campo que quiero indexar y además selecciono si quiero hacerlo de forma ascendente o descendente. Ahora presiono “ok” y me voy a la pestaña “identity” y a la opción “(name)” y le cambio nombre, el cual puede ser el mismo del campo “idubicacion” o uno distinto pero representativo. Una vez terminado el proceso, puedo salirme tomando la opción “Close”, o puedo añadir otro index presionando “Add”, haga el mismo el proceso para indexar el campo “idpago”. CREACION DE RELACIONES Abriremos en diseño la tabla “proveedores” seleccione cualquier campo y presiono click derecho, y en las opciones ocupo “Relaciones….” En la pantalla de relaciones seleccione la opción “Add” para agregar un relación entre el campo proveedor.idubicaion con el campo ubicacion.idubicaion. En la pestaña “General” seleccione la opción “Tables And Columns Specific” y después seleccione el botón al final de la fila que tiene tres puntos. Una vez en esa pantalla seleccione las tablas y los compas que desea relacionar y coloque el nombre de la relación, para el ejemplo yo considere “rela_idubicacion”, pero usted puede personalizar el nombre, una vez terminado presione “ok” Una vez terminado este proceso presione “Close” para salir o ”Add” para agregar otro. Repita este procedimiento para crear la relación proveedor.idpago con pago.idpago. CREACION DE DIAGRAMAS Una opción de ver el resultado de nuestra creación es elaborando un diagrama de base de datos, para lo cual expandimos la base de datos “empresa1”, seleccionamos “Database Diagrams” presionamos click derecho y seleccionamos “New Database Diagram”. Nos va a mostrar un pantalla con todas tablas de la base de datos, con el mouse seleccionamos todos y presionamos la opción “Add”, o también podemos hacerlo una a una, y posteriormente presionamos “Close”. Ordenamos un poco las pantallas y podremos observar que hemos podido lograr el requerimiento puesto al principio de la práctica. MODO CONSOLA Haremos el mismo esquema de base de datos, solo que le cambiaremos nombre a la base de datos a “empresa2”, ponemos crear utilizando el siguiente “querry” (consulta). CREATE DATABASE empresa113 GO USE empresa113 GO CREATE TABLE ubicacion (idubicacion INT IDENTITY(1,1), descrip varchar(45), CONSTRAINT idubicacion PRIMARY KEY(idubicacion)) GO CREATE TABLE pago (idpago INT IDENTITY(1,1), descrip varchar(45), CONSTRAINT idpago PRIMARY KEY(idpago)) GO CREATE TABLE proveedor (idproveedor INT IDENTITY(1,1), nombre varchar(45), idubicacion int, idpago int, CONSTRAINT idproveedor PRIMARY KEY(idproveedor), CONSTRAINT rela_idubicacion FOREIGN KEY(idubicacion) REFERENCES ubicacion(idubicacion), CONSTRAINT rela_idpago FOREIGN KEY (idpago) REFERENCES pago(idpago)) GO Ejercicios: Cree consulta para crear la base de datos empresa3, utilizando “ALTER TABLE”. Verifique la entrada de datos de las tablas indexadas. Cree una nueva base de datos que incluya 4 tablas relacionadas. Elabore diagramas de todos los ejemplos. Investigue el uso de CHECK Realice ejercicios adicionales que su instructor lo solicite.