database admonfundamental itprosdc_chapter2
DESCRIPTION
Presentación de la segunda sesión del grupo de estudio de Sql Server fundamentos. Se trabajan los temas de normalización y tipos de datos en SQL ServerTRANSCRIPT
Julián Castiblanco P.http://julycastiblanco.blogspot.com/
MCT-MCITP-MCTS SQL Server 2008/2005
Líder ITPros-DC
SESIÓN 2
Sesión 2
• Normalización de datos
• Restricciones
• Tipos de datos
Normalización
Modelo Entidad Relación
Veterinaria
tiene
Correas para
animales
Juguetes para
animales
Medicamentos
para animales
Médico
veterinario
Artículos
veterinarios
hace
Cirugías a
animales
Curaciones
a animales
Revisión general
a animales
Tratamientos de
enfermedades
de animales
Alimentos para
animales
Camas para
mascotas Productos de aseo
para mascotas
Tarea de Andrés Vargas
Entidades
Atributos
Relaciones
• Normalización es el proceso de organizar los datos en una base de datos que incluye la creación de tablas y establecer las relaciones entre dichas tablas.
• Este proceso busca eliminar la información redundante.
• 5 formas de normalización (NFs) – 1NF: Eliminación de grupos repetidos
– 2NF: Eliminación de datos redundantes
– 3NF: Eliminación de columnas que no dependen de la llave
– 4NF: Aislamiento de relaciones multiples independientes
– 5NF: Aislamiento de relaciones múltiples semánticamente relacionadas.
Normalizacion
• La primera forma normal indica que los datos están en una entidad, y cumplen la siguiente condición
– Eliminar gropos repetidos en tablas individuales• Crear tablas separadas para cada grupo de datos relativos.
• Identificar cada grupo de datos relacionados con una llave primaria.
• No utilizar múltiples campos en una tabla para almacenar información similar.
Primera forma normal (1NF)
• La segunda forma normal asegura cada atributo descrito en una entidad
– Crear tablas separadas para un conjunto de valores que apliquen a múltiples registros
– Relaciona estas tablas con llaves foráneas.
– Múltiples registros podrían no depender de ninguna otra tabla más que una llave primaria, incluyendo llaves primarias compuestas.
Segunda forma normal (2NF)
• La tercera forma normal valida la dependencia de los atributos eliminando los campo que no dependen de la llave primaria
– Los valores que no dependan de la llave primaria deberán ser movidos a otra tabla.
– En general si el contenido de un grupo de campos aplica a mas de un simple registro, deberá colocarse en una tabla independiente.
Tercera forma normal (3NF)
ID Estudian
Tutor OF. Tutor Clase 1 Clase 2 Clase 3
1022 Jones 412 101-07 143-01 159-02
4123 Smith 216 201-01 211-02 214-01
ID Estudian Tutor Of. Tutor Nro. Clase
1022 Jones 412 101-07
1022 Jones 412 143-01
1022 Jones 412 159-02
4123 Smith 216 201-01
4123 Smith 216 211-02
4123 Smith 216 214-01
Ejemplo
ID Estudian Tutor Of. Tutor
1022 Jones 412
4123 Smith 216
ID Estudian Nro. Clase
1022 101-07
1022 143-01
1022 159-02
4123 201-01
4123 211-02
4123 214-01
Ejemplo
Example of normalization
Student#
Advisor
1022 Jones
4123 Smith
Nombre
Of. Tutor
Depart
Jones 412 42
Smith
216 42
Student# Nro. Clase
1022 101-07
1022 143-01
1022 159-02
4123 201-01
4123 211-02
4123 214-01
Ejemplo
Estudiante Tutores Registro de Clases
ANSI SQL
Nombre Comentarios
SQL-86 Primera publicación hecha por ANSI. Confirmada por ISO en 1987.
SQL-89 Revisión menor.SQL-92 Revisión mayor.
SQL:1999Se agregaron expresiones regulares, consultas recursivas (para relaciones jerárquicas), triggers y algunas características orientadas a objetos.
SQL:2003Introduce algunas características de XML, cambios en las funciones, estandarización del objeto sequence y de las columnas autonumericas. (Ver Eisenberg et al.: SQL:2003 Has Been Published.)
SQL:2006
ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL se puede utilizar conjuntamente con XML. Define maneras de importar y guardar datos XML en una base de datos SQL, manipulándolos dentro de la base de datos y publicando el XML y los datos SQL convencionales en forma XML
SQL:2008Permite el uso de la cláusula ORDER BY fuera de las definiciones de los cursores. Incluye los disparadores del tipo INSTEAD OF. Añade la sentencia TRUNCATE. (Ver [1].)
http://es.wikipedia.org/wiki/SQL
Referential integrity
• Concepto utilizado para asegurar la relación entre las tablas de una base de datos, manteniendo el modelo coherente y sincronizado durante la modificación de datos.
• Puede ser usada para garantizar la calidad de los datos, optimizer la base de datos y la detección de errors en el modelo.
• Una combinación de llave primaria y llave foránea puede ser usada para forzar la integridad referencial en la base de datos. Las llaves foráneas también pueden referenciar restricciones de tipo UNIQUE para ayudar a mantener la integridad referencial.
• Los TRIGGERS (disparadores) también pueden ser utilizados para validar la integridad referencial, pero requieren código que no se ejecuta tan rápido con las validaciones de llaves primarias.
Integridad Referencial
• Los siguientes objetos permiten asegurar la integridadreferencial: – Primary key– Foreign key – Unique constraint– Indexes– Triggers
• Cualquiera de estos métodos puede ser creado con una llave compuesta, es decir mas de un campo crea la restricción. Por ejemplo la llave de negocio, (Tipo de documento y Número de documento) en las bases de clientes.
Integridad Referencial
Restricciones (constraints)
• Un concepto importante en el diseño de una tabla es el uso del atributo “Primary Key” el cual garantiza que una columna o un grupo de columnas identifica el registro como único en la tabla.
• Una table solo puede tener una llave primaria, estainternamente asegur la creación de un indice de tipo“Unique” para las columnas involucradas.
• Una columna que participa en una llave primaria NO puede aceptar varlores nulos (Null).
Llave Primaria (Primary Key)
FOREIGN KEY constraint
• Una FOREIGN KEY es un o más columnas que estansiendo utilizadas para establecer una relación entre dos tables. Las columnas usadas para crear la llaveprimaria de la primera table y las usadas para crear la restricción en la otra table.
• Las columnas que participant en una llave foráneapueden aceptar valores nulos, pero sieste contienevalores nulos, el proceso de validación será omitido.
Llave Foránea (Foreign Key)
Foreign KeyPrimary Key
Ejemplo
Tablas
CREATE TABLE dbo.Products (
ProductID int PRIMARY KEY NOT NULL, ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription text NULL)
GO
Tablas
ALTER TABLE dbo.Products
ADD Reference varchar(29) NOT NULL
ALTER TABLE Production.TransactionHistoryArchiveWITH NOCHECK ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID) WITH (FILLFACTOR = 75, ONLINE = ON, PAD_INDEX = ON); GO
Escenario
Pamela ya tiene claro los tipos de datos que utilizará para su tabla. Ella planea utilizar las propiedades ANSI SQL y planea reutilizar lo aprendido anteriormente:
1. ANSI SQL se refiere a un conjunto de reglas que:1. Decide si un campo puede contener datos nulos o no.2. Define el tamaño de todos los datos3. Gobierna la estructura y contenido de las sentencias.
2. Cual comando debe ser utilizado para crear una nueva tabla?1. CREATE TABLE perfumes ( nombre varchar(29), precio money, cantidad tinyint…2. ADD TABLE perfumes ( nombre varchar(29), precio money, cantidad tinyint…3. INSERT TABLE perfumes ( nombre varchar(29), precio money, cantidad tinyint…
3. Basados en la información de Pamela cual campo debería hacer parte de la llave primaria?
1. Cantidad2. Nombre3. Nombre y la cantidad
Tipos de Datos
Tipos de Datos
Toda Columna, variable, expresión o parámetro tiene un tipo de dato
Numéricos Exactos
Numéricos Aproximados
Fecha y Hora
Texto
Texto no-unicode
Cadenas Binarias
Otros Tipos
Tipos de Datos por Categoría
Tipos de Datos
• Exact numerics: bigint, numeric, bit, smallint, decimal, smallmoney, int, tinyint, money
• Unicode character strings: nchar, nvarchar, ntext• Approximate numerics: float, real • Binary strings: binary, varbinary, image• Date and time: date, datetimeoffset, datetime2,
smalldatetime, datetime, time • Other data types: cursor, timestamp, hierarchyid,
uniqueidentifier, sql_variant, xml, table• Character strings: char, varchar, text
http://go.microsoft.com/fwlink/?LinkID=127223
Tipos de Datos
http://msdn.microsoft.com/en-us/library/ms187745(v=sql.100).aspx
Tipos de Datos
http://msdn.microsoft.com/en-us/library/ms186724(v=sql.100).aspx
Escenario
Pamela quiere diseñar una base para almacenar información sobre todos los perfumes y splash que hay en el mercado; con el fin de almacenar información detallada como tipo de aroma, precio, ,cantidad, tamaño, casa, nombre, y lugar para conseguirlo.
1. Qué tipo de campo debería usar para almacenar el nombre del producto?1. Char, varchar2. Name3. Integer
2. Cual tipo de dato para almacenar la cantidad en onzas ?1. Float2. Integer3. Tiny
3. En que tipo de dato almacenaría el precio del producto?1. Money2. Int3. Float
Tareas
• https://www.youtube.com/watch?v=p_UGm8UYaew
• http://www.microsoftvirtualacademy.com/training-courses/database-fundamentals (Primera y segunda sesión)
• Los que aún no se han inscrito, inscribirse a SQL Pass
• Configurar SQL Server y descargar las bases de datos de ejemplo.
• Realizar primer taller que será enviado durante la semana
• Tener una copia de la base de datos (veterinaria) creada durante la sesión 2 de trabajo
• Traer su hoja de vida para la siguiente sesión en formato Word