Curso SQL Nivel Avanzado 1. Miguel Jurado García

Curso SQL Nivel Avanzado 1 Miguel Jurado García © Copyright Amaris 2006 Temario Sesión 3: . Diagramas E-R Normalización y Generalización de B.D.

4 downloads 120 Views 821KB Size

Recommend Stories


2.8 PRIMER CURSO DEL NIVEL AVANZADO Objetivos generales
2.8 PRIMER CURSO DEL NIVEL AVANZADO 2.8.1 Objetivos generales Con el fin de alcanzar un grado satisfactorio de dominio en la competencia comunicativ

1. INTRODUCCIÓN CURSO SQL SERVER 2000
1. INTRODUCCIÓN CURSO SQL SERVER 2000 ¿Qué es SQL Server RESULTADOS DATABASE Cliente TRANSACT SQL Server Servidor ¿Qué es SQL Server? SQL Serve

Neumática Nivel avanzado
Neumática Nivel avanzado Libro de trabajo TP 102 Con CD-ROM Festo Didactic 542504 es Utilización prevista El sistema para la enseñanza de Festo

Story Transcript

Curso SQL Nivel Avanzado 1

Miguel Jurado García

© Copyright Amaris 2006

Temario Sesión 3: .

Diagramas E-R Normalización y Generalización de B.D. Creación y configuración de Esquemas Creación de un snapshot de la Base de Datos Uso de snapshot para restauración

© Copyright Amaris 2006

MODELO E-R Permite representar las entidades relevantes de un sistema de información así como sus interrelaciones y propiedades. Entidad: Representa una “cosa” u "objeto" del mundo real con existencia independiente. Atributo: Características que definen o identifican a una entidad Relación: Describe cierta dependencia entre entidades o permite la asociación de las mismas. Las entidades suelen acabar siendo una o varias tablas, los atributos campos de dichas tablas y las relaciones suelen ser o tablas de look up o claves.

© Copyright Amaris 2006

© Copyright Amaris 2006

Bases de Datos Normalizadas El proceso de normalización de Bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad relación al modelo relacional. Las bases de datos relacionales se normalizan para: Evitar la redundancia de los datos. Evitar problemas de actualización de los datos en las tablas. Proteger la integridad de los datos. En el modelo relacional es frecuente llamar Tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones: Cada columna debe tener su nombre único. No puede haber dos filas iguales. No se permiten los duplicados. Todos los datos en una columna deben ser del mismo tipo. Ing. Miguel Jurado © Copyright Amaris 2006

Terminología relacional equivalente

Figura 1.0: Trabajo (Código, Nombre, Posición, Salario), donde Código es la Clave Primaria •Relación = tabla o archivo •Tupla = registro, fila o renglón •Atributo = campo o columna •Clave = llave o código de identificación •Clave Primaria = superclave •Clave Ajena = clave externa o clave foránea •Clave Alternativa = clave secundaria •Dependencia Multivaluada = dependencia multivalor •RDBMS = Del inglés Relational Data Base Manager System que significa, Sistema Gestor de Bases de Datos Relacionales.

© Copyright Amaris 2006

Dependencia funcional

B es funcionalmente dependiente de A. Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si conocemos el valor de FechaDeNacimiento podemos conocer el valor de Edad. Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente manera: FechaDeNacimiento -> Edad Aquí a FechaDeNacimiento se le conoce como un determinante. Se puede leer de dos formas FechaDeNacimiento determina a Edad o Edad es funcionalmente dependiente de FechaDeNacimiento. De la normalización (lógica) a la implementación (física o real) puede ser sugerible tener éstas dependencias funcionales para lograr mayor eficiencia en las tablas.

© Copyright Amaris 2006

Dependencia funcional transitiva

Dependencia funcional transitiva. FechaDeNacimiento -> Edad Edad -> Conducir FechaDeNacimiento -> Edad -> Conducir Entonces tenemos que FechaDeNacimiento determina a Edad y la Edad determina a Conducir, indirectamente podemos saber a través de FechaDeNacimiento a Conducir (En muchos paises , para una persona poder conducir un automovil la persona necesita ser mayor de X edad, por eso se utiliza este ejemplo).

© Copyright Amaris 2006

Claves Una clave primaria es aquella columna (pueden ser también dos columnas o más) que identifica únicamente a esa fila. La clave primaria es un identificador que va a ser único para cada fila. Se acostumbra poner la clave primaria como la primera columna de la tabla pero esto no tiene que ser necesario, si no es más una conveniencia. Muchas veces la clave primaria es autonumérica. En una tabla puede que tengamos más de una clave, en tal caso se puede escoger una para ser la clave primaria, las demas claves son las claves candidatas. Una clave foránea es aquella columna que existiendo como dependiente en una tabla, es a su vez clave primaria en otra tabla. Una clave alternativa es aquella clave candidata que no ha sido seleccionada como clave primaria, pero que también puede identificar de forma unica a una fila dentro de una tabla. Una clave compuesta es una clave que está compuesta por más de una columna.

© Copyright Amaris 2006

Formas Normales Las formas normales son aplicadas a las tablas de una base de datos, decir que una base de datos está en la forma normal N es decir que todas sus tablas están en la forma normal N. En general, las primeras tres formas normales son suficientes para cubrir las necesidades de la mayoría de las bases de datos. El creador de estas 3 primeras formas normales (o reglas) fue Codd . Primera Forma Normal (1FN) Una tabla está en Primera Forma Normal sólo si Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos. La tabla contiene una clave primaria La tabla no contiene atributos nulos Una columna no puede tener múltiples valores. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y, entonces a cada valor de Y le pertenece un valor de X)....

© Copyright Amaris 2006

Un diseñador principiante desea guardar los nombres y los números telefónicos de los clientes. Procede a definir una tabla de cliente como la que sigue:

ID Cliente

Nombre

Apellido

Teléfono

123

Rachel Ingram

555-861-2025

456

James Wright

555-403-1659

789

Maria

Fernandez 555-808-9633

En este punto, el diseñador se da cuenta de un requisito debe guardar múltiples números teléfonicos para algunos clientes. Razona que la manera más simple de hacer esto es permitir que el campo "Teléfono" contenga más de un valor en cualquier registro dado: ID Cliente

Nombre

Apellido

Teléfono

123

Rachel Ingram

555-861-2025

456

James Wright

555-403-1659 555-776-4100

789

Maria

Fernandez 555-808-9633

La 1NF (y, para esa materia, el RDBMS) prohíbe a un campo contener más de un valor de su dominio de columna.

© Copyright Amaris 2006

Ejemplo 2: Grupos repetidos a través de columnas El diseñador puede evitar esta restricción definiendo múltiples columnas del número telefónico: ID Cliente

Nombre

Apellido

Teléfono 1

Teléfono 2

123

Osvaldo Ingram

555-861-2025

456

James

Wright

555-403-1659 555-776-4100

789

Maria

Fernandez 555-808-9633

Teléfono 3

Sin embargo, esta representación hace uso de columnas que permiten valores nulos, y por lo tanto no se conforman con la definición de la 1NF de Date. Incluso si se contempla la posibilidad de columnas con valores nulos, el diseño no está en armonía con el espíritu de 1NF.

© Copyright Amaris 2006

Diseño conforme con 1NF Un diseño que está inequívocamente en 1NF hace uso de dos tablas: una tabla de cliente y una tabla de teléfono del cliente.

ID Cliente

Nombre

Apellido

Rachel Ingram

456

James Wright

789

Maria

Fernandez

Cliente 1aN

123

Teléfono del cliente ID Cliente

Teléfono

123

555-861-2025

456

555-403-1659

456

555-776-4100

789

555-808-9633

En este diseño no ocurren grupos repetidos de números telefónicos. En lugar de eso, cada enlace Cliente-a-Teléfono aparece en su propio registro. © Copyright Amaris 2006

Segunda Forma Normal (2FN)

Dependencia completa. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. Los atributos dependen de la clave. Varía la clave y varían los atributos. En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de dependencia completamente funcional. Una dependencia funcional X -> Y es completamente funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es que A Є X, (X – {A}) -x-> Y. Una dependencia funcional X-> Y es una dependencia parcial si hay algunos atributos A Є X que pueden ser removidos de X y la dependencia todavía se mantiene, esto es A Є X, (X – {A}) -> Y . Por ejemplo {SSN,PNUMBER} -> HOURS es completamente dependencia dado que ni SSN -> HOURS ni PNUMBER -> HOURS mantienen la dependencia. Sin embargo {SSN,PNUMBER} -> ENAME es parcialmente dependiente dado que SSN->ENAME mantiene la dependencia

© Copyright Amaris 2006

Considere una tabla describiendo las habilidades de los empleados:

El atributo restante, Lugar actual de trabajo, es dependiente en solo parte de la clave candidato, llamada Empleado. Por lo tanto la tabla no está en 2NF. Observe la redundancia de la manera en que son representadas los Lugares actuales de trabajo: nos dicen tres veces que Jones trabaja en la 114 Main Street, y dos veces que Ellis trabaja en 73 Industrial Way. Esta redundancia hace a la tabla vulnerable anomalías de actualización © Copyright Amaris 2006

Un alternativa 2NF a este diseño representaría la misma información en dos tablas:

Habilidades

© Copyright Amaris 2006

Tercera Forma Normal (3FN)

La tabla se encuentra en 3FN si es 2FN y cada atributo que no forma parte de ninguna clave, depende directamente y no transitivamente, de la clave primaria. Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y.. Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva via DNUMBER porque las dependencias SSN->DNUMBER y DNUMBER->DMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT.

© Copyright Amaris 2006

Un ejemplo de una tabla 2NF que falla en satisfacer los requisitos de la 3NF es:

La única clave candidato es {Torneo, Año}. La violación de la 3NF ocurre porque el atributo no primario Fecha de nacimiento del ganador es dependiente transitivamente de {Torneo, Año} vía el atributo no primario Ganador. El hecho de que la Fecha de nacimiento del ganador es funcionalmente dependiente en el Ganador hace la tabla vulnerable a inconsistencias lógicas, pues no hay nada que impida a la misma persona ser mostrada con diferentes fechas de nacimiento en diversos registros.

© Copyright Amaris 2006

Para expresar los mismos hechos sin violar la 3NF, es necesario dividir la tabla en dos:

© Copyright Amaris 2006

Los diagramas o modelos entidad-relación (a veces denominado por su siglas, E-R "Entity relationship") son una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información, sus inter-relaciones y propiedades

© Copyright Amaris 2006

Entidades Una entidad es cualquier "objeto" discreto sobre el que se tiene información. Se representa mediante un rectángulo o "caja" etiquetada en su interior mediante un nombre. Ejemplos de entidades habituales en los sistemas de información son: factura, persona, empleado, etc. Relaciones Una relación describe cierta interdependencia (de cualquier tipo) entre entidades. Se representa mediante un rombo etiquetado en su interior mediante un verbo. Además, dicho rombo debe unirse mediante líneas con las entidades que relaciona (es decir, los rectángulos). Una relación no tiene sentido sin las entidades que relaciona. Por ejemplo: una persona (entidad) trabaja (relación) para un departamento (entidad).

Atributos Los atributos son propiedades relevantes propias de una entidad y/o relación. Se representan mediante un círculo o elipse etiquetado mediante un nombre en su interior. Cuando un atributo es identificativo de la entidad se suele subrayar dicha etiqueta. Por motivos de legibilidad, los atributos no suelen representarse en un diagrama entidadrelación, sino que se describen textualmente en otros documentos adjuntos. Los atributos describen información útil sobre las entidades. En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un empleado de otro es su número de seguridad social. © Copyright Amaris 2006

Entidades fuertes y débiles Cuando una entidad participa en una relación puede adquirir un papel fuerte o débil. Una entidad débil es aquella que no puede existir sin participar en la relación, es decir, aquella que no puede ser unívocamente identificada solamente por sus atributos. Una entidad fuerte es aquella que sí puede ser identificada unívocamente. En los casos en que se requiera, se puede dar que una entidad fuerte "preste" algunos de sus atributos a una entidad débil para que, esta ultima, se pueda identificar. Las entidades débiles se representan mediante un doble rectángulo, es decir, un rectángulo con doble línea.

© Copyright Amaris 2006

Cardinalidad de las relaciones Las relaciones, en principio binarias, pueden involucrar a un número distinto de instancias de cada entidad. Así, son posibles tres tipos de cardinalidades: Relaciones de uno a uno: una instancia de la entidad A se relaciona con una y solamente una de la entidad B. Relaciones de uno a muchos: cada instancia de la entidad A se relaciona con varias instancias de la entidad B. Relaciones de muchos a muchos: cualquier instancia de la entidad A se relaciona con cualquier instancia de la entidad B. El tipo de cardinalidad se representa mediante una etiqueta en el exterior de la relación, respectivamente: "1:1", "1:N" y "N:M", aunque la notación depende del lenguaje utilizado, la que más se usa actualmente es el unificado. Otra forma de expresar la cardinalidad es situando un símbolo cerca de la línea que conecta una entidad con una relación: "0" si la entidad no está obligada a participar en la relación. "1" si la entidad está obligada a participar en la relación y, además, cada instancia solamente participa una vez. "N" , "M", ó "*" si la entidad no está obligada a participar en la relación y cada instancia puede participar cualquier número de veces. © Copyright Amaris 2006

Ejercicio:

Crear un diagrama E/R de la base de datos del curso integrando todos los elementos que consideréis necesarios. Verificar que la base de datos está normalizada (3FN)

Implementar la nueva estructura y migrar la información de las tablas originales a las nuevas

© Copyright Amaris 2006

Creación de Esquemas Definición de Esquema Funcionamiento del Object Name Resolution

© Copyright Amaris 2006

Definición de Esquema Namespaces para Objetos de Base de datos Person Contact (Server1.AdventureWorks.Person.Co ntact)

Sales

Customer (Server1.AdventureWorks.Sales.Cust omer)

dbo

ErrorLog (Server1.AdventureWorks.dbo.ErrorL og)

AdventureWork s

© Copyright Amaris 2006

Los esquemas estan separados de su creador lo que ofrece los siguientes beneficios: Mayor Flexibilidad organizando los objetos de la BD en namespaces, porque agrupa estos objetos y los hace no dependientes del creador Simplifica la administración de permisos, ya que podemos dar permisos a nivel de esquema en lugar de a cada objeto individualmente. Mayor manejabilidad ya que al droppear un usuario no es necesario eliminar todos los objetos que creó.

CREATE SCHEMA nombre_esquema

© Copyright Amaris 2006

Cómo funciona el Resolutor de Nombres de Objetos Person SELECT * FROM Contact

Lance (Default schema = Person)

SELECT * FROM Person.Contact

Contact Sales

SELECT * FROM ErrorLog SELECT * FROM Contact

Anders (Default schema = Sales)

dbo

ErrorLog

© Copyright Amaris 2006

Creación de Snapshots de BD. Definición de Snapshots de BD. Funcionamiento de los Snapshots

© Copyright Amaris 2006

Definición de Snapshots Read-only, vistas consistentes de una BD. en un momento concreto de tiempo Muy potentes como test o como BD. de desarrollo o para el reporting Debe existir en el mismo server que la fuente de Base de datos

12:00 Snapshot

© Copyright Amaris 2006

Un snapshot es una vista estática de sólo lectura de una BD. en un específico momento en el tiempo, que no cambia tras la creación del snapshot. La BD. desde la que se crea el snapshot es referenciada como Base de Datos fuente.

Los snapshots pueden ser usados cómo punto rápido de restauración en caso de pérdida de datos accidental o maliciosa en la BD. No obstante jamás deben suplir la política de backups ya que un snapshot no contiene la información de todos los registros de la Base de Datos.

© Copyright Amaris 2006

Los snapshots de BD no pueden ser creados en las bases de datos model, master, o tempdb. Un Database snapshot no pueden tener su back up ni ser restaurado. Un Database snapshot no pueden ser attached ni detached. Los Database snapshots no pueden ser creados en particiones FAT32 ni RAW. Todo snapshot creado sobre una base de datos debe ser eliminado previo a la eliminación de la base de datos en sí. SQL Server Management Studio no soporta la creación de snapshots visualmente, con lo que deben ser creados únicamente usando Transact-SQL.

© Copyright Amaris 2006

Funcionamiento de los Snapshots Source DB

Snapshot DB

SELECT …

UPDATE …

Copy-On-Write

SELECT …

© Copyright Amaris 2006

Código Creación Snapshot CREATE DATABASE AW_Snapshot1 ON ( NAME = 'Adventureworks1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AW1.ss'), ( NAME = N'Adeventureworks2', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AW2.ss') AS SNAPSHOT OF Adventureworks

Nota: Importante no dejarse ningún archivo si la BD. está particionada en varios ficheros.

© Copyright Amaris 2006

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.