2. Creación de tablas, campos, índices, relaciones, restricciones y tipos de datos. Objetivos: Crear tablas completas con su configuración de datos. Aplicar restricciones de llaves e índices. Recursos: http://msdn.microsoft.com/es-es/library/ms187752.aspx https://msdn.microsoft.com/es-es/library/ms174979%28v=sql.120%29.aspx Introducción: La creación de tablas para la recolección de datos, es un proceso básico para la implementación de la base de datos, por esta razón es importante el saber qué tipo de datos debe usar y las restricciones asociadas a las tablas. Tablas: Estas son donde se guardan los datos recogidos por un programa de aplicación. Su estructura general se asemeja a la vista general de un programa de hoja de cálculo. Una tabla es utilizada para organizar y presentar información. Las tablas se componen de filas y columnas de celdas que se pueden rellenar con textos y gráficos. Las tablas se componen de dos estructuras: Registro: Es cada una de las filas en que se divide la tabla. Cada registro contiene datos de los mismos tipos que los demás registros. Ejemplo: en una tabla de nombres y direcciones, cada fila contendrá un nombre y una dirección. Campo: Es cada una de las columnas que forman la tabla. Contienen datos de tipo diferente a los de otros campos. En el ejemplo anterior, un campo contendrá un tipo de datos único, como una dirección, o un número de teléfono, un nombre, etc. A los campos se les puede asignar, propiedades especiales que afectan a los registros insertados. El campo puede ser definido como índice o autoincrementable. Cada tabla creada debe tener un nombre único en la cada Base de Datos, haciéndola accesible mediante su nombre. Datos: SQL Server maneja los siguientes tipos de datos: Numéricos exactos bigint numeric bit smallint smallmoney int tinyint money datetime2 smalldatetime decimal Numéricos aproximados Float real Fecha y hora fecha datetimeoffset datetime time Cadenas de caracteres Char varchar text Cadenas de caracteres Unicode Nchar nvarchar ntext varbinary image Cadenas binarias Binary Otros tipos de datos Cursor timestamp hierarchyid sql_variant Xml tabla uniqueidentifier Es importante el buen uso de los tipos de datos, ya que de esa forma se podrá hacer mejor las relaciones de tablas, consultas y manejo de los datos. Inicio Práctica Iniciar el SQL Server Management Studio y en base a lo aprendido en la práctica anterior crearemos una base de datos de nombre “Universidad”. Expandiremos la base de datos, y después expandiremos “Tables”, y veremos que no hay ninguna tabla creada, al seleccionar clic derecho sobre “Tables” seleccionamos “New Table”, como lo muestra la Figura 1. Figura 1. Creación de tabla nueva. Nos activara una pantalla donde podremos colocar los campos y tipos de datos que esperamos manejar, como lo muestra la Figura 2. Figura 2. Configuración de capos, tipos de datos y otros. En la “Column Name” empezaremos definiendo el campo “id_person” y tomaremos como “Data Type” el tipo “int” y dejaremos activa la casilla “Allow Nulls” lo cual significa que acepta datos nulos o vacíos, como lo muestra la figura 3. Figura 3. Imagen de configuración de campo. Después colocaremos el campo “nombre” con tipo de datos “varchar(50)” y dejaremos activa la opción aceptar nulos, como lo muestra la figura 4. Figura 4. Definiendo segundo campo. También colocaremos el campo “apellido” con tipo de datos “varchar(50)” y dejaremos activa la opción aceptar nulos, como lo muestra figura 5. Una vez terminada la tabla, dar doble clic en la pestaña y dar clic sobre “Save Table_1” como lo muestra la figura 5, y nos aparecerá un pantalla donde le pondremos de nombre a la tabla “person”, como lo muestra la figura 6. Figura 5. Como colocar el nombre al script. Figura 6. Como colocar el nombre al script. Una vez realizado este proceso la tabla quedara grabada en la base de datos, ya puedo cerrar la consola o dejarla así. Ahora vamos a agregar algunos registros a la tabla, en la carpeta “Tables”, busco la tabla “person” y presiono clic derecho y seleccionamos “Edit top 200 Rows” lo cual nos permitirá agregar registros, según los muestran las figuras 7 y 8. Figura 7. Forma de agregar datos a una tabla. Figura 8, Ejemplo de datos agregados a una tabla. A continuación agrego unos cuantos registros. Para borrar la tabla solo debo dar clic derecho sobre la tabla “person” y seleccionar “Delete”, es importante tener en cuenta que cuando existen datos relacionados no siempre es fácil borrar las tablas, ejemplo de borrado la figura 9. Figura 9. Borrar tablas. Usando la consola de consultas (T-SQL). En primer lugar activaremos la consola para realizar una nueva consulta. Ahora digitemos los siguientes comandos la consola y ejecutémoslo. USE Universidad GO CREATE TABLE autos ( id_auto int NULL, marca varchar(20) NULL, modelo varchar(20) NULL ) GO Estas sentencias en primer lugar selecciona la base de datos Universidad usando la palabra “USE”, después se creó la tabla “autos” con tres campos: id_auto, marca y modelo, con su respectivo tamaño e indicando que todos aceptan nulos o valores vacíos (NULL). Para probar la nueva tabla agregaremos nuestro primer registro, digitando lo siguiente: USE [Universidad] GO INSERT INTO autos (id_auto,marca,modelo) VALUES ( 1,'Nissan','Sentra') GO El resultado de esta consulta es la adición de un registro a la tabla autos. Otra forma de agregar datos usando una variable de la sintaxis es la siguiente: USE [Universidad] GO INSERT INTO autos VALUES (2,'Toyota','Tercel') INSERT INTO autos VALUES (3,'Honda','civic') GO Para borrar la tabla usaremos la siguiente consulta USE Universidad GO DROP TABLE autos GO Y con esto quedara borrada la tabla. Índices (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 foránea (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 Práctica. Figura 10, Esquema Entidad Relación. 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 tendrá la configuración de la figura 11. Figura 11. Configuración de tabla “ubicación” Ahora vamos a crear un llave primaria, utilizando clic derecho sobre el campo “idubicacion”, se nos desplegara un menú y seleccionamos “Set Primary Key”. Como lo muestra la figura 12. Figura 12, Creación de llave primaria. 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 lo muestra la figura 13. Figura 13. Colocación de primary key en 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, como lo muestra la figura 14. Figura 14, Creando un campo autonumerico. 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, como lo muestra la figura 15. Figura 15. Configuración tabla proveedor. Creación de Índices. Para poder hacer relaciones necesitamos crear llaves foráneas (FK), estas debe estar indexadas, para mejor control y uso, para esto daremos clic sobre el campo “idubicacion” y seleccionaremos “Indices o Claves”, como lo muestra la figura 16. Figura 16. Creación de índices. Al seleccionarlo los mostrara la siguiente pantalla, y seleccionamos “Add”, según muestra la figura 17. Figura 17. Creación de índices. Posteriormente en la pestaña “General” opción “Columns”, selecciono el botón que tiene tres puntos, para seleccionar el campo que quiero indexar, como lo muestra la figura 17. Figura 17. Selección del campo a 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, según figura 18. Figura 18. Selección de Ascendente o descente. 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, Según figura 19. Figura 19. Selección de campo. 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”. Creación de Relaciones. Abriremos en diseño la tabla “proveedores” seleccione cualquier campo y presiono clic derecho, y en las opciones ocupo “Relaciones….”, según figura 20 Figura 20, Creación de 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. según figura 21. Figura 21. Creación de relaciones. 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, según Figura 22. Figura 22. Selección de la tabla. 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”, según figura 23. Figura 23. Definición de la relación. 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. Creación 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 clic derecho y seleccionamos “New Database Diagram”, como lo muestra la figura 24. Figura 24. Creación de diagrama de base de datos. 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”. Según la figura 25. Figura 25. Selección de tablas. Ordenamos un poco las pantallas y podremos observar que hemos podido lograr el requerimiento puesto al principio de la práctica, como lo vemos en la figura 26. Figura 26, Diagrama de base de datos. 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 tablas incluyendo más campos y diferentes tipos de datos para verificar su aplicación, siempre en forma gráfica y de consola. Investigue como cambiarle nombre a la tabla. Investigue como cambiar una columna o agregar más. Investigue como cambiar un tipo de datos. 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.