database admonfundamental itprosdc_chapter2

28
Julián Castiblanco P. http://julycastiblanco.blogspot.com/ [email protected] MCT-MCITP-MCTS SQL Server 2008/2005 Líder ITPros-DC SESIÓN 2

Upload: julian-castiblanco-p

Post on 08-Jul-2015

234 views

Category:

Technology


0 download

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 Server

TRANSCRIPT

Page 1: Database admonfundamental itprosdc_chapter2

Julián Castiblanco P.http://julycastiblanco.blogspot.com/

[email protected]

MCT-MCITP-MCTS SQL Server 2008/2005

Líder ITPros-DC

SESIÓN 2

Page 2: Database admonfundamental itprosdc_chapter2

Sesión 2

• Normalización de datos

• Restricciones

• Tipos de datos

Page 3: Database admonfundamental itprosdc_chapter2

Normalización

Page 4: Database admonfundamental itprosdc_chapter2

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

Page 5: Database admonfundamental itprosdc_chapter2

• 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

Page 6: Database admonfundamental itprosdc_chapter2

• 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)

Page 7: Database admonfundamental itprosdc_chapter2

• 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)

Page 8: Database admonfundamental itprosdc_chapter2

• 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)

Page 9: Database admonfundamental itprosdc_chapter2

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

Page 10: Database admonfundamental itprosdc_chapter2

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

Page 11: Database admonfundamental itprosdc_chapter2

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

Page 12: Database admonfundamental itprosdc_chapter2

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

Page 13: Database admonfundamental itprosdc_chapter2

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

Page 14: Database admonfundamental itprosdc_chapter2

• 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

Page 15: Database admonfundamental itprosdc_chapter2

Restricciones (constraints)

Page 16: Database admonfundamental itprosdc_chapter2

• 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)

Page 17: Database admonfundamental itprosdc_chapter2

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)

Page 18: Database admonfundamental itprosdc_chapter2

Foreign KeyPrimary Key

Ejemplo

Page 19: Database admonfundamental itprosdc_chapter2

Tablas

CREATE TABLE dbo.Products (

ProductID int PRIMARY KEY NOT NULL, ProductName varchar(25) NOT NULL,

Price money NULL,

ProductDescription text NULL)

GO

Page 20: Database admonfundamental itprosdc_chapter2

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

Page 21: Database admonfundamental itprosdc_chapter2

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

Page 22: Database admonfundamental itprosdc_chapter2

Tipos de Datos

Page 23: Database admonfundamental itprosdc_chapter2

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

Page 24: Database admonfundamental itprosdc_chapter2

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

Page 25: Database admonfundamental itprosdc_chapter2

Tipos de Datos

http://msdn.microsoft.com/en-us/library/ms187745(v=sql.100).aspx

Page 26: Database admonfundamental itprosdc_chapter2

Tipos de Datos

http://msdn.microsoft.com/en-us/library/ms186724(v=sql.100).aspx

Page 27: Database admonfundamental itprosdc_chapter2

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

Page 28: Database admonfundamental itprosdc_chapter2

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