Sunteți pe pagina 1din 73

TALLER DE BASE DE DATOS

Ingeniería en Sistemas Computacionales


Taller de Base de Datos
Unidad II: Lenguaje de Definición de Datos DDL

Este material está desarrollado para la asignatura Taller de Base de Datos, de la carrera de Ingeniería en Sistemas
Computacionales, plan de estudios ISIC-2010-224
TALLER DE BASE DE DATOS

Competencia: Implementar esquemas de bases de datos a través de SQL


en un SGBD.
TALLER DE BASE DE DATOS
Diseño de bases de datos en SQL Server
• Una base de datos es un ‘contenedor’ de todos los objetos que SQL puede
manejar en un ambiente relacional.
• Antes de iniciar con la creación y diseño de bases de datos debemos
entender el sistema de BD que es instalado por default con SQL Server,
cada una de las siguientes bases de datos tienen un propósito específico y
es requerida por SQL Server:
• master
• tempdb
• model
• resource
• distribution
LeBlanc, 2013
TALLER DE BASE DE DATOS
master database
• La base de datos ‘master’ como su nombre lo indica es la base de
datos del sistema, sin esta, SQL Server no puede funcionar, esta
contiene la información sobre objetos del SQL tales como:
• Base de datos
• Mirroring
• Configuraciones
• Logins
• Etc.

LeBlanc, 2013
TALLER DE BASE DE DATOS
tempdb database
• La base de datos ‘tempdb’ sirve para realizar todas las actividades
temporales de los objetos que corren en SQL Server y que son
creados por las aplicaciones de los usuarios. Un asunto importante
sobre esta DB es que se crea desde cero cada vez que SQL es
reiniciado, si bien pueden ser creados objetos dentro de esta DB, no
es prudente usarla como medio de transacciones debido a su
volatilidad al reinicio.

LeBlanc, 2013
TALLER DE BASE DE DATOS
model database
• La BD ‘model’ sirve para guardar el modelo de todas las DB que son
creadas en una instancia de SQL Server, es decir sirve como ‘template’
cada vez que creamos una DB nueva.

LeBlanc, 2013
TALLER DE BASE DE DATOS
msdb database
• La DB ‘msdb’ guarda información acerca de los siguientes componentes :

• Service brokers
• Alerts
• Log shipping
• SSIS packages
• Utility control point (UCP)
• Database mail
• Maintenance plans

LeBlanc, 2013
TALLER DE BASE DE DATOS
resource database
• La DB ’resource’ permanece oculta y es solo lectura, es poco utilizada
y su principal propósito es mejorar el proceso de actualización de una
versión de SQL Server a otra más reciente. Esta DB no puede ser
respaldada o restaurada, y no debe alterarse su contenido de forma
manual en ningún momento.

LeBlanc, 2013
TALLER DE BASE DE DATOS
distribution database
• La DB ‘distribution’ existe únicamente cuando se ha configurado una
instancia de SQL Server como distribuidor de replicaciones, en este
caso el tema de replicación se verá mas adelante.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Vista general de las DB del Sistema de SQL Server.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Estructura de las Bases de Datos en SQL Server

Cada DB en SQL Server contiene dos archivos


de datos:
• Un ‘Data File’ que contiene todos los objetos
de la BD como tablas, vistas, procedimientos
almacenados, etc.
• Un ‘Log File’ que contiene información que
sirve para recuperar transacciones en la DB.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Como Crear una Base de Datos
• Cuando creamos una DB el archivo de datos es
creado con todas las definiciones que el usuario
ha dado. Antes de correr el script, crearemos
dos carpetas en el disco C: con SQLData y
SQLLog:
• Abrir SSMS
• Abrir el explorador de objetos y dar click en
la flecha de nuestro servidor
• Click derecho en la carpeta Databases
• Seleccionar Nueva DB o New Database

LeBlanc, 2013
TALLER DE BASE DE DATOS
• En el cuadro de dialogo seleccionar la
opcion ‘General’
• En el nombre de la DB teclear
DBPrueba
• En la seccion de archivos en la
columna Path teclear c:\SQLData
para datos y c:\SQLLog para log de
cambios
• En la seccion File Name teclear
DBPrueba para datos y DBPrueba_log
para log de cambios
• Finalmente click en Aceptar
LeBlanc, 2013
TALLER DE BASE DE DATOS
En este momento ya podemos utilizar la herramienta Query Editor para aplicar
nuestro script y crear la base de datos, utlizaremos el siguiente código:

USE master;
CREATE DATABASE SBSChp4TSQL
ON PRIMARY(NAME='SBSChp4TSQL', FILENAME =
'C:\SQLDATA\SBSChp4TSQL.mdf', SIZE=10MB, MAXSIZE=20,
FILEGROWTH=10%)
LOG ON(NAME='SBSChp4TSQL_log', FILENAME =
'C:\SQLLog\SBSChp4TSQL_log.ldf', SIZE=10MB, MAXSIZE=200,
FILEGROWTH=20%);

LeBlanc, 2013
TALLER DE BASE DE DATOS
.

LeBlanc, 2013
TALLER DE BASE DE DATOS
El script que aplicamos contiene varios parámetros importantes, por ejemplo,
coloca la base de datos en una carpeta específica, y la misma crecerá bajo una tasa
muy específica. A continuación se listan los parámetros más importantes:
• database_name: nombre de la DB, debe ser un dato único.
• ON: especifica el grupo de archivos e inicia la sección donde el archivo de datos
es definido .
• Name: es el nombre lógico del archivo y debe ser único.
• FileName: es la ruta del sistema operativo y el nombre, así como la extensión.
• Size: especifica el tamaño inicial en MB por default. También es posible
especificar tamaño en KB, GB y TB.
• Filegrowth: especifica el crecimiento del archivo en MB pero también puede
especificarse en un porcentaje fijo.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Agregar Archivos y Grupos de Archivos a la BD
• Además de poder agregar objetos al archivo primario de la BD,
también tenemos la posibilidad de agregar otros archivos y grupos de
archivos a nuestra base de datos, estos archivos se reconocen por su
extensión, que es .ndf, los archivos de datos secundarios se utilizan
generalmente para agregar mayor espacio a la base de datos en el
supuesto que el archivo principal alcance su límite.
• También es recomendable agrupar los archivos, cuando la DB es
creada el grupo de archivos principal contiene el archivo de datos
principal que se crea por default.

LeBlanc, 2013
TALLER DE BASE DE DATOS

En la imagen podemos ver dos


‘filegroups’ o grupos de archivos
• El grupo de archivos primario contiene
el archivo primario de datos.
• El grupo de archivos secundario
contiene dos archivos secundarios de
datos.
• Y finalmente el archivo de log de
cambios.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Como agregar archivos y grupos de
archivos por medio de SSMS
• Abrir SSMS
• Abrir el explorador de objetos y dar
click en la flecha de nuestro servidor
• Click derecho en la DB DBPrueba y
seleccionar ‘Properties’
• Seleccionar ‘Filegroups’ en lista de
‘Select a Page’
• Click en el botón ‘Add’
• En el renglón que se abre teclear en la
columna ‘Name’ DBpruebaFG
• En la columna ‘Default’ palomear el
checkbox
LeBlanc, 2013
TALLER DE BASE DE DATOS
• En la izquierda del panel seleccionar ‘Files’ y maximizar el cuadro de dialogo.
• Click en ‘Add’
• En el renglón nuevo en la columna ‘Logical Name’ teclear ‘DBPruebaF1’
• En la columna ‘Filegroup’ seleccionar ‘DBpruebaFG’
• En la columna ‘Path’ buscar la ruta ‘C:\SQLData’
• En la collumna ‘File Name’ teclear ‘DBPruebaF1.ndf’
• Click en Aceptar.
• Revisamos la ruta que exista el archivo

LeBlanc, 2013
TALLER DE BASE DE DATOS
.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Agregar Archivos y grupos de archivos por medio de T-SQL y Query Editor:
• Abrir Query Editor en SSMS
• Teclear el siguiente código

USE master;
ALTER DATABASE SBSChp4TSQL Add FILEGROUP SBSTSQLGroup1;
ALTER DATABASE SBSChp4TSQL Add File (
NAME='SBSChp4TSQL2', FILENAME = 'C:\SQLDATA\SBSTSQL2.ndf',
SIZE=10MB, MAXSIZE=20, FILEGROWTH=10% )
TO FILEGROUP SBSTSQLGroup1;
LeBlanc, 2013
TALLER DE BASE DE DATOS

Query al ser
ejecutado en el
Query Editor
de SSMS

Revisamos en el
Explorador de
Windows que el
archivo haya sido
creado LeBlanc, 2013
TALLER DE BASE DE DATOS

Separar y Adjuntar DBs en SQL Server (Detch y Attach)

• Que es lo que sucede si por alguna razón es necesario quitar una DB


de una instancia y trasladarla a otra instancia de SQL ya sea en el
mismo servidor o en otro ubicado en otro sitio. En estos casos es
posible utilizar SSMS o bien T-SQL Queries.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Pasos para separar una DB por medio de SSMS
• Abrir SSMS
• Expandir explorador de objetos y el nodo
del servidor correspondiente
• Expandir la carpeta de la DB
correspondiente
• Click derecho en SBSChp4TSQL
• Seleccionar Task/Detach
• En el cuadro de dialogo palomear los
checkboxes de ‘Drop Connections’ y
‘Update Statistics’.
• Click ‘OK’
LeBlanc, 2013
TALLER DE BASE DE DATOS
En este momento la DB SBSChp4TSQL ya no aparece en la lista del Explorador
de objetos del SSMS, pero en la carpeta de datos del SQL (C:\SQLData) el
archivo SBSTSQL1.mdf se encuentra listo para ser trasladado al servidor que
sea requerido. En este caso lo volveremos a adjuntar a nuestra instancia de
SQL server.
• Abrir SMMS
• Abrir Explorador de Objetos y expandir el nodo del servidor requerido
• Click derecho en la carpeta Databases
• Clcik ‘Attach’ y aparecerá el dialogo correspondiente, click en ‘Add’
• Aparece un nuevo dialogo, expandir la carpeta del disco C:
• Localizar y expandir la carpeta C:\SQLData y seleccionar el archivo .MDF
correspondiente, en este caso es SBSTSQL1.mdf
• Click ‘OK’, al finalizar el proceso la DB aparecerá en el Explorador de
objetos de nuevo
LeBlanc, 2013
TALLER DE BASE DE DATOS
.

LeBlanc, 2013
TALLER DE BASE DE DATOS
El proceso de Separar y Adjuntar por medio del Query Editor es más
sencillo, seguir los siguientes pasos
Separar (Detach):
• Abrir SMSS y abrir un nueva ventana de Queries
• Teclear y ejecutar el siguiente script:
USE Master;
EXEC sp_detach_db @dbname = 'SBSChp4TSQL';

LeBlanc, 2013
TALLER DE BASE DE DATOS
Adjuntar (Attach):
• Abrir SMSS y abrir un nueva ventana de Queries
• Teclear y ejecutar el siguiente script:
USE master;
CREATE DATABASE SBSChp4TSQL ON
(FILENAME = 'C:\SQLData\SBSTSQL1.mdf'),
(FILENAME = 'C:\SQLData\SBSTSQL2.ndf'),
(FILENAME = 'C:\SQLLog\SBSTSQL_Log.ldf')
FOR ATTACH;

LeBlanc, 2013
TALLER DE BASE DE DATOS

Creación de tablas en SQL Server


• Antes de iniciar con la creación de tablas y otros objetos de la DB es
importante apegarnos a un estándar de desarrollo, esto no es un requisito,
sin embargo no apegarnos a un estándar puede implicar problemas para los
desarrolladores al momento de acceder a la información contenida en la
DB.

A continuación se listan algunas de las prácticas a las que podemos


apegarnos para tener un mejor resultado al momento de generar los
nombres de los objetos que forman nuestra DB:

LeBlanc, 2013
TALLER DE BASE DE DATOS

Estándares Generales:
• No utilizar espacios en blanco en los nombres de objetos o columnas
• El carácter de subrayado es aceptable en los nombres pero no el
guión medio ya que se puede confundir con el signo de resta.
• Es recomendable usar PascalCase, es decir, utilizar como mayúscula la
primera letra de cada palabra que forma el nombre de un objeto.
• No utilizar palabras reservadas del SQL Server.
• Las palabras en singular tienen preferencia sobre los plurales, aunque
esto es meramente una cuestión de preferencias del desarrollador.

LeBlanc, 2013
TALLER DE BASE DE DATOS

Estándares para los nombres de Tablas:

• Los nombres deben referirse claramente al contexto de la tabla en


cuestión sin dejar cabida a la ambigüedad.
• Los nombres deben ser únicos en la DB (no repetirlos en columnas,
tablas, vistas, SP, etc.).

LeBlanc, 2013
TALLER DE BASE DE DATOS

Estándares para los nombres de columnas:

• Los nombres deben ser únicos en cada tabla


• Los nombres deben contextualizarse en uso y propósito de la
columna
• Se debe utilizar el tipo de dato correcto para cada columna (no
confundir entero con flotantes, etc.)

LeBlanc, 2013
TALLER DE BASE DE DATOS

Tipos de Datos en SQL Server


SQL Server tiene 4 tipos de datos distintos, que se muestran en la siguiente
figura:

Cada tipo de datos tiene subcategorías, todas las columnas en una tabla,
variables y parámetros deben estar relacionados a un tipo de dato. La
integridad de la DB depende en gran medida de que sean seleccionados los
tipos de datos apropiados para cada objeto.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Tipos de datos Numéricos
• Estos tienen dos subcategorias, exact y approximate

Debemos seleccionar el tipo de dato adecuado para cada columna de


nuestras tablas LeBlanc, 2013
TALLER DE BASE DE DATOS
• Así mismo, la categoría de números exactos esta
dividida en dos subcategorías, decimal y
numeric. Teniendo dos características básicas,
precisión y escala. Precisión es el total de dígitos
que se pueden almacenar en ambos lados del
punto decimal, y puede ser un valor entre 1 y 38.
Escala es la cantidad de dígitos que se pueden
almacenar a la derecha del punto decimal. Este
valor está entre cero y la precisión asignada. +
• Por ejemplo; si deseas crear una variable que
almacene un total de 4 dígitos de los cuales 2 son
decimales debes utilizar una instrucción como
esta: decimal(4,2).
LeBlanc, 2013
TALLER DE BASE DE DATOS
Tipos de dato String

• El tipo de dato String está formado por 3 subcategorías: character,


Unicode y binary. El almacenamiento máximo que se puede lograr es
de 2 GB. Cada subcategoría se divide en 3 subcategorías.

Categoría character (guarda datos no-unicode):


• char(n): puede almacenar entre 1 y 8000 caractéres.
• varchar(n): puede almacenar hasta 2 GB.
• text: tipo obsoleto, fue sustituido por varchar().

LeBlanc, 2013
TALLER DE BASE DE DATOS
Categoría Unicode (guarda datos tipo unicode y no-unicode):
• nchar(n): puede almacenar entre 1 y 4000 caractéres.
• nvarchar(n): puede almacenar hasta 2 GB.
• ntext: tipo obsoleto, fue sustituido por nvarchar().

Categoría binary string (guarda datos tipo binario):


• binary(n): puede almacenar entre 1 y 8000 caractéres.
• varbinary(n): puede almacenar hasta 2 GB.
• image: tipo obsoleto, fue sustituido por varbinary().

LeBlanc, 2013
TALLER DE BASE DE DATOS
Tipos de datos Date y Time
Existen 6 tipos de datos en esta categoría, los cuales pueden almacenar datos
en diferentes formatos:

• time(n): Almacena la hora sin tomar en cuenta zona horaria, basado en 24


horas. Acepta un argumento sobre fracción de segundos.
• date: Almacena fechas entre el 01-01-01 y 12-31-9999.
• Smalldatetime: Almacena fecha y hora, la fecha comprendida entre
01/01/1900 y 06/06/2079, y la hora con precisión en segundos.

LeBlanc, 2013
TALLER DE BASE DE DATOS
• datetime: similar a smalldatetime pero con mayor rango de precisión,
almacena fechas entre 01-01-01 y 12-31-9999; y horas incluyendo
milésimas de segundos; ejemplo: ‘04/01/2012 11:15:04:888’
• datetime2(n): similar a datetime pero con mayor precisión en las
milesimas de segundo, se puede especificar entre 0 y 7 en el
parámetro correspondiente.
• datetimeoffset: este tipo de dato contiene todas las funcionalidades
del datetime2 pero con control sobre la zona horaria; por ejemplo: el
valor ‘04/01/2012 03:10:24 -06:00’ incluye la zona horaria y es
aceptable para este tipo de dato.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Otros tipos
de datos
Además de
los ya
mencionados,
SQL Server
incluye otros
tipos de datos
los cuales se
muestran en
esta lista
LeBlanc, 2013
TALLER DE BASE DE DATOS
Creación de tablas y columnas en la DB

• Una base de datos está compuesta por tablas, que a su vez contienen
columnas, estas en conjunto forman los renglones de la tabla, los cuales
contienen registros independientes con información muy específica.
• La propiedad más común en una columna es ‘Allow nulls’, la cual permite
insertar renglones en la tabla sin integrar un valor específico para una
columna en particular. Null no significa cadena vacia, sino la ausencia de un
valor. Así mismo, un valor null no es igual a otro valor null.
• Para este primer ejercicio usaremos SSMS.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Para crear la tabla utilizaremos la información contenida en la siguiente tabla:

LeBlanc, 2013
TALLER DE BASE DE DATOS
Procedimiento para crear una nueva tabla en SSMS
• Abrimos SSMS
• Expander la carpeta Databases / DBPrueba
• Expander la carpeta ‘Security’
• Click derecho en ‘Schemas’ y seleccionar ‘New Schema’
• En el cuadro de dialogo: teclear HumanResources en el campo ‘Name’ y
teclear dbo en el campo ‘Owner’.
• Click OK.
• Click derecho en la carpeta ‘Tables’-’New Table’y se abre el ‘Table
Designer’.
• Seleccionar ‘New Table’ en el menú.
LeBlanc, 2013
TALLER DE BASE DE DATOS
Una vez que tenemos abierto el ‘Table
Designer’ podemos comenzar a capturar
los campos que vimos en la tabla anterior
con las características correspondientes

LeBlanc, 2013
TALLER DE BASE DE DATOS
Hasta ahora no hemos dado nombre a la nueva tabla, a la derecha de la
pantalla está la ventana ‘properties’ (en caso de no estar visible activarla en el
menú view/properties window).
• En el primer campo (Name) tecleamos el nombre de la tabla que es
‘Address’.
• Localizamos el campo ‘Schema’ y seleccionamos HumanResources.
• Expander ‘Regular Data Space Specification’ y en la propiedad ‘Filegroup or
partition’ seleccionar DBPruebaFG.
• Click en el botón de Grabar Todo.
• La tabla ha sido generada y ahora es visible en la carpeta ‘Tables’ de la DB.

LeBlanc, 2013
TALLER DE BASE DE DATOS

LeBlanc, 2013
TALLER DE BASE DE DATOS
Instrucciones para crear la tabla por medio de un script en T-SQL
y Query Editor

USE DBPrueba;
CREATE TABLE HumanResources.Address (
AddressID int NOT NULL IDENTITY(1,1),
StreetAddress varchar(125) NOT NULL,
StreetAddress2 varchar(75) NULL,
City varchar(100) NOT NULL,
State char(2) NOT NULL,
EmployeeID int NOT NULL )
ON [DBPruebaFG];
LeBlanc, 2013
TALLER DE BASE DE DATOS
Modificación de Tablas

• Así como creamos la tabla Address tanto en SSMS y T-SQL también es


posible modificar las tablas, agregar nuevos campos, cambiar el tipo
de dato que contienen los campos y eliminar campos que ya no son
requeridos.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Procedimiento para modificar tablas en SSMS
• Abrir SSMS y conectar al servidor correspondiente
• Expandir la carpeta ‘Databases’ y la DB ‘DBPrueba’, así como la carpeta ‘Tables’
• Click derecho en la tabla HumanResources.Employee y seleccionar ‘Design’
• Teclear el nuevo campo ‘Gender’ en el nuevo renglón, tipo char(1), y aceptar
datos nulos.
• Grabar todo.

LeBlanc, 2013
TALLER DE BASE DE DATOS

Como Crear Computed Columns en la Tabla


• Un campo computed o campo calculado es aquel que utiliza una
fórmula para insertar su valor y por lo general no requiere ser
capturado por el usuario. Esto es algo muy fácil de conseguir
utilizando SSMS ya que la pantalla de ‘properties’ proporciona las
herramientas necesarias.
Realizar el siguiente ejercicio:
• Abrir SSMS y conectar al servidor correspondiente
• Expandir la carpeta ‘Databases’ y la DB ‘DBPrueba’, así como la
carpeta ‘Tables’
• Click derecho en la tabla HumanResources.Employee y seleccione
‘Design’
LeBlanc, 2013
TALLER DE BASE DE DATOS
• Debajo del campo Gender, teclear el campo
FirstName, tipo nchar(25); el campo LastName,
tipo nchar(25); y finalmente el campo FullName,
tipo nchar (50); en todos permitir nulos.
• Una vez creado el campo FullName en la parte
inferior de nuestra ventana se encuentra el
dialogo de ‘Column Properties’ en el buscamos la
propiedad ‘Computed Column Specification’ y en
la propiedad (Formula) tecleamos:
LastName+', '+FirstName
• Guardamos todo
• Con esto el campo FullName se actualizará por si
solo cada vez las columnas FirstName y LastName
del renglón correspondiente sean modificadas.
LeBlanc, 2013
TALLER DE BASE DE DATOS

Ejemplo de como crear un campo Computed por medio


de un query:

USE DBPrueba;
ALTER TABLE HumanResources.Employee
ADD FullName AS LastName+', '+FirstName;

LeBlanc, 2013
TALLER DE BASE DE DATOS

Agregar Reglas de Restricción a las Tablas (Constraints)

El objetivo principal de los constraints es asegurar la integridad de la


información en la DB, mejorando la validación y consistencia de los datos.

Primary Key Constraints


• Un Primary Key es un campo o columna de una tabla que contiene una lista
de datos única. Es posible crear Primary Key con casi cualquier columna o
conjunto de columnas teniendo como limitante que un Primary Key no
acepta nulos, su valor debe ser único, y solo es posible tener un Primary Key
por cada tabla.
LeBlanc, 2013
TALLER DE BASE DE DATOS

Otros tipos de constraints:


• Default Constraints: Son utilizados cuando se posee una columna en la tabla
que guarda valores específicos por cada renglón de la misma. Un campo que
guarda valores falso o verdadero es un buen ejemplo.
• Unique Constraints: Estos sirven para asegurarse que no se inserten valores
repetidos por columna por lo que no deben ser confundidos con un Primary
Key, el cual puede ser un conjunto de columnas. El numero de Seguro Social
es un ejemplo de este tipo de constraint.
• Check Constraints: Estos permiten valorar la información insertada en la
columna de acuerdo a una expresión lógica.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Para continuar con la práctica debemos ejecutar el siguiente script en
Query Editor:

USE DBPrueba;
ALTER TABLE HumanResources.Address
ADD Active bit NOT NULL;
ALTER TABLE HumanResources.Address
ADD SocialSecurityNumber varchar(10) NOT NULL;

Una vez ejecutado el query, abrimos el SSMS y utlizaremos DBPrueba


LeBlanc, 2013
TALLER DE BASE DE DATOS
• Seleccionamos la carpeta ‘Tables’ y la tabla
HumanResources.Address, click con el derecho y
seleccionar ‘Design’.
• Click derecho en el campo EmployeeID y seleccionamos
en el menú la opcion ‘Set Primary Key’.
• Seleccionar la columna ‘Active’, en la ventana de
propiedades de la columna buscar ‘Default Value’ y
teclear 1 como valor predeterminado.
• En la barra de menú click en el icono de ‘Manage indexes
and keys’.
• Aparecerá la ventana de ‘Indexes/Keys’, click en el botón
Add, en la propiedad ‘Name’ teclear UQ_Employee_SSN
y en la propiedad ‘Unique’ teclear Yes.
LeBlanc, 2013
TALLER DE BASE DE DATOS
• En el explorador de objetos expandir la tabla
HumanResources.Address, click derecho en
columna ‘Constraints’ y seleccionar ‘New
Constraint’.
• En la propiedad ‘Name’ teclear
CK_Employee_Gender_MF.
• Buscar la propiedad ’Expression’ y click en el
boton de la derecha, teclear la expresion
([Gender] = 'Female' OR [Gender] = 'Male')
• Click en ‘Ok’
• Guardar todo.

LeBlanc, 2013
TALLER DE BASE DE DATOS
Ejemplo de instrucciones para realizar los cambios por medio de
Query Editor:
USE DBPrueba;
ALTER TABLE HumanResources.Address
ADD CONSTRAINT PK_HumanResourcesEmployee_EmployeeID
PRIMARY KEY (EmployeeID);
ALTER TABLE HumanResources.Address
ADD CONSTRAINT DF_HumanResourcesEmployee_Active_True
DEFAULT(1) FOR Active;
ALTER TABLE HumanResources.Address
ADD CONSTRAINT UQ_HumanResourcesEmployee_SocialSecurityNumber
UNIQUE (SocialSecurityNumber);
LeBlanc, 2013
TALLER DE BASE DE DATOS
Foreign Key
Un último tipo de Constraint es el Foreign Key, este juega un rol de gran importancia
en para mantener la integridad de la información dela DB. Como pudimos ver el
campo EmployeeID se encuentra en la tabla Address, sin embargo, no hemos
declarado una tabla que sirva para guardar la información personal de cada
empleado como corresponde bajo las reglas de las formas normales de una DB. Para
ello utilizaremos el siguiente query:
use dbprueba;
CREATE TABLE HumanResources.Employee (
EmployeeID int NOT NULL IDENTITY(1,1), Use dbprueba
ALTER TABLE
FirstName varchar(50) NOT NULL,
HumanResources.employee
MiddleName varchar(50) NULL, ADD CONSTRAINT
LastName varchar(50) NOT NULL PK_employee
) ON [dbpruebafg]; PRIMARY KEY (EmployeeID);
LeBlanc, 2013
TALLER DE BASE DE DATOS
• En la tabla recién creada HumanResources.Employee tenemos el campo
EmployeeID que es exactamente igual al campo EmployeeID que tiene la tabla
HumanResources.Address. Regularmente cuando deseamos insertar nuevos
registros en la tabla Address primero revisamos que el número de empleado
exista en la tabla Employee, esto lo hacemos por medio de código de
programación.
• La particularidad de un Foreign Key es que puede hacer esta validación y asegurar
que solo números de empleado válidos sean insertados en la tabla Address sin
necesidad de usar código de programación.
Antes de continuar ejecutar el siguiente script:
USE DBPrueba
ALTER TABLE HumanResources.Address DROP PK_Address
ALTER TABLE HumanResources.Address
ADD CONSTRAINT PK_HumanResourcesAddress_AddressID
PRIMARY KEY (AddressID);
LeBlanc, 2013
TALLER DE BASE DE DATOS
En el query anterior eliminamos el PK que tenia la tabla y creamos uno nuevo,
esto es debido a que solo se puede tener un PK por tabla, y además un FK solo
puede ser declarado en la tabla donde el campo en cuestión no es PK. Seguir
las Instricciones:
• Abrir SSMS y expandir Databases/DBPrueba/Tables/HumanResources.Address
• Click derecho en la carpeta ‘Keys’ y seleccionar ‘New Foreign Key’
• Aparecerá el cuadro de dialogo ’Foreign Key Relationships’, en la propiedad
‘(Name)’ teclear el valor FK_Employee_To_Address_On_EmployeeID.
• Click en ‘Table and Columns Specification ’ y click en el boton que aparece
• En el cuadro de dialogo que aparece seleccionar Employee como PK Table.

LeBlanc, 2013
TALLER DE BASE DE DATOS
• Seleccionar EmployeeID en el combobox que aparece justo debajo
• En la lista de FK Table seleccionar EmployeeID
• Click Ok/Close/Save all/ y si aparece ventana de confirmación aceptar

LeBlanc, 2013
TALLER DE BASE DE DATOS
Creación y Mantenimiento de Índices

• Un índice es objeto de la DB basado en tablas y, vistas y sirven para hacer


más rápida la búsqueda y recuperación de la información almacenada en la
DB.
• Se debe ser cuidadoso al crear los índices ya que sobrecargar la DB con
muchos índices puede resultar contraproducente y afectar el desempeño de
la DB al momento de insertar, modificar y recuperar información.
• Los índices son creados sobre una columna o grupo de columnas de una
tabla.
• Los índices se crean automáticamente cuando los constraints PRIMARY KEY y
UNIQUE se definen en las columnas de tabla.
LeBlanc, 2013
TALLER DE BASE DE DATOS
• Los índices pueden ser clasificados en dos tipos básicos: Clostered y
Nonclostered. El propósito de ambos tipos es mejorar como el motor de
base de datos de SQL Server accede a la información. (LeBlanc, 2013)
• Clostered: Los índices agrupados o clostered ordenan y almacenan los
registros de una tabla o vista basándose en los valores de su campo clave
(un campo de ID por ejemplo). Son campos (o columnas) incluidos en la
definición del índice. Solo puede haber un índice clustered por cada tabla,
porque las filas de datos solo pueden estar ordenadas de una forma.
La única manera en que los registros de una tabla o vista estén
almacenados de forma ordenada es cuando contiene un índice
agrupado. Cuando una tabla tiene un índice agrupado, la tabla se
denomina tabla agrupada. Si una tabla no tiene un índice clúster, sus filas
de datos están almacenadas en una estructura sin ordenar denominada
montón.
https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
• Nonclostered: Los índices no agrupados tienen una estructura aparte de la de
los registros de una tabla. Un índice no clúster contiene los valores de clave de
índice no clúster y cada entrada de valor de clave tiene un puntero a la fila de
datos que contiene el valor clave.
El puntero de una fila de índice Nonclostered hacia una fila de datos se
denomina localizador de fila. La estructura del localizador de filas depende de
si las páginas de datos están almacenadas en un montón o en una tabla
agrupada. Si están en un montón, el localizador de filas es un puntero hacia la
fila. Si están en una tabla agrupada, el localizador de fila es la clave de índice
clúster.
Puede agregar columnas sin clave al nivel hoja de un índice no clúster con el
fin de eludir los límites existentes para las claves de índice, 900 bytes y 16
columnas de clave, así como para ejecutar consultas indizadas y totalmente
cubiertas.
https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
Como Crear un Nonclosterd Index
• Insertar en la tabla Employee un nuevo campo
SSN, char(11);
• Abrir SSMS y expandir
Databases/DBPrueba/Tables/Employee/Indexes
• Click derecho en la carpeta ‘Indexes’ y seleccionar
New Index/Nonclostered Index
• En el cuadro de dialogo teclear en el campo
‘Name’ ID_SSN, y palomear la casilla ‘Unique’
• Click en el boton ‘Add’ y en el caudro de dialogo
seleccionar SSN y OK.

LeBlanc, 2013
TALLER DE BASE DE DATOS

LeBlanc, 2013
TALLER DE BASE DE DATOS
Eliminación y modificación de objetos en la DB
• DROP TABLE (T-SQL): Quita una o varias definiciones de tabla y todos los datos,
índices, desencadenadores, restricciones y especificaciones de permisos de
esas tablas.
Sintaxis:
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
table_name [ ,...n ] [ ; ]

Nota: No se puede utilizar DROP TABLE para quitar una tabla a la que haga
referencia una restricción FOREIGN KEY. Primero se debe quitar la restricción
FOREIGN KEY o la tabla de referencia. Si la tabla de referencia y la tabla que
tiene la clave principal se van a quitar en la misma instrucción DROP TABLE, la
tabla de referencia debe aparecer primero https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
• ALTER TABLE (T-SQL): Modifica una definición de tabla al alterar,
agregar o quitar columnas y restricciones, reasignar y regenerar
particiones, o deshabilitar o habilitar restricciones y desencadenadores.
Sintaxis:

https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
ALTER TABLE [ database_name . | ADD | [ WITH CHECK | NOCHECK ] )
[ schema_name ] . | CHECK | NOCHECK CONSTRAINT
schema_name . ] table_name <column_definition> | REBUILD
ALL | constraint_name [
ALTER COLUMN | ,...n ] [ [PARTITION = ALL]
column_name <computed_column_definition>
| ENABLE | DISABLE TRIGGER [ WITH ( <rebuild_option> [
[ type_schema_name. ] | <table_constraint> ,...n ] ) ]
type_name ALL | trigger_name [ ,...n ]
| <column_set_definition> | [ PARTITION =
[( | ENABLE | DISABLE partition_number
[ ,...n ] CHANGE_TRACKING
precision [ , scale ] [ WITH (
| DROP [ WITH ( <single_partition_rebuild_optio
| max [ CONSTRAINT ] TRACK_COLUMNS_UPDATED = n> [ ,...n ] ) ]
ON | OFF ) ]
| constraint_name ]
xml_schema_collection | SWITCH [ PARTITION
[ WITH source_partition_number_expr ]
)] ession ]
( | <table_option>
[ COLLATE collation_name ] <drop_clustered_constraint_opt TO target_table | <filetable_option>
[ NULL | NOT NULL ] [ ion> [ ,...n ] )
[ PARTITION [;]
SPARSE ] ] target_partition_number_expre
| ADD | DROP ssion ]
[ ,...n ]
ROWGUIDCOL | PERSISTED [ WITH (
| COLUMN <low_lock_priority_wait> )]
| NOT FOR REPLICATION |
SPARSE column_name | SET ( FILESTREAM_ON =
| [ WITH { CHECK | [ ,...n ] partition_scheme_name
NOCHECK } ] | filegroup | "default" | "NULL"
[ ,...n ] https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
Ejercicio: relice la siguiente práctica;
• Crear una tabla llamada empleados
• Agregar a la tabla los campos; EmpleadoID, Nombre, Fecha_nacimiento,
Genero, Domicilio, Telefono, Edo_civil, E_mail: y dar a cada uno de los
campos un tipo de dato acorde a la información que debe capturarse.
• modifique

https://msdn.microsoft.com. 2015
TALLER DE BASE DE DATOS
Bibliografía Consultada

Patrick LeBlanc, Microsoft SQL Server 2012 Step by Step. O’Reilly Media Inc.
Sebastopol, CA, USA. 2013. (Traducción realizada por José A.
Sandoval Acosta).

Pratt Philip J., Last Mary Z. SQL. 1ra. Edición. Anaya Multimedia. Madrid,
España. 2009.

Adam Jorgersen, Microsoft SQL Server 2012 Bible. John Wiley & Sons, Inc.
Indianapolis, Indiana. 2012.

https://msdn.microsoft.com. Página en Español, Consultado en Junio de


2015.

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