miércoles, 15 de julio de 2015

NORMALIZACIÓN DE BASES DE DATOS RELACIONALES


¿QUÉ ES LA NORMALIZACIÓN? 

Es un conjunto de reglas que sirven para ayudar a los diseñadores a desarrollar un esquema que minimice los problemas de lógica.  Cada regla está basada en la que le antecede. La normalización se adoptó porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de lógica cuando se trataba de manipular los datos.


GRADOS DE NORMALIZACIÓN
*Existen tres niveles básicos de normalización: 
 Primera Forma Normal (1NF) 
Segunda Forma Normal (2NF) y 
 Tercera Forma Normal (3NF)



Existen cuatro niveles más de normalización: 
* Forma Normal Boyce-Codd (BCNF)
* Cuarta Forma Normal (4NF) 
* Quinta Forma Normal (5NF) o Forma Normal de Proyección-Unión (PJNF) 
* Forma Normal de Proyección-Unión Fuerte * Forma Normal de Proyección-Unión Extra Fuerte 
* Forma Normal de Dominio/Clave. (DKNF)

1NF. EJEMPLO 1: DOMINIOS Y VALORES

Suponga que un diseñador principiante desea guardar los nombres y teléfonos de sus clientes.  El diseñador se da cuenta de un requisito para guardar múltiples números telefónicos 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:


Asumiendo, sin embargo, que la columna "Teléfono" está definida en algún tipo de dominio de número telefónico (por ejemplo, el dominio de cadenas de 12 caracteres de longitud), la representación de arriba no está en 1NF.  La 1NF prohíbe a un campo contener más de un valor de su dominio de columna. 

* Un alternativa en 2NF a este diseño representaría la misma información en dos tablas: 
Un ejemplo de una tabla 2NF que falla en satisfacer los requerimientos de la 3NF es:

EN el siguiente vídeo se explica como  hacer estaos tres pasos 


Parte 2



Referencias Bibliográficas:
Coronel C., Morris S., Rob P. (2011). Bases de Datos Diseño, implementación y administración (Novena edición). México: Cengage Learning Editores. (Libro digital).


Microsoft SQL Server

 Módulo 1:

  Creación de bases de datos y archivos de base de datos


 Creación de bases de datos

 SQL Microsoft es un sistema de manejo de bases de datos delmodelo relacional, desarrollado por la empresa Microsoft.
El lenguaje de desarrollo utilizado (por línea de comandos o mediante la interfaz gráfica de managment studio) es Transact-SQL(TSQL), una implementación del estándar ANSI del lenguaje SQL, utilizado para manipular y recuperar datos (DML), crear tablas y definir relaciones entre ellas (DDL).
Propósito del almacenamiento de datos Rendimiento de transacciones Crecimiento potencial del almacenamiento físico de datos Ubicación de los archivos

Registro de transacciones  


Qué son los grupos de archivos

 Todas las bases de datos de SQL Server tienen dos archivos del sistema operativo: un archivo de datos y un archivo de registro. Los archivos de datos contienen datos y otros objetos, como tablas, índices, procedimientos almacenados y vistas. Los archivos de registro contienen la información necesaria para recuperar todas las transacciones de la base de datos. Los archivos de datos se pueden agrupar en grupos de archivos para su asignación y administración.

Cuándo crear grupos de archivos



Qué son los esquemas

Espacios de nombres para los objetos de base de datos.

Módulo 2: 

Creación de tipos de datos y tablas

Qué son los tipos de datos de alias

Se basan en los tipos suministrados por el sistema Se usan para elementos de datos comunes con un formato específico Se crean con la instrucción CREATE TYPE


Consideraciones para la creación de tablas
Intercalación de columnas Capacidad de aceptar valores NULL de columnas Tipos de columna especiales.
 Columnas calculadas 
 Columnas de identidad 
Columnas timestamp 
 Columnas uniqueidentifier

Módulo 3:

 Implementación de integridad de datos

 La integridad de Datos garantiza la calidad de los datos de la base de datos. Por ejemplo, si se especifica para un empleado el valor de identificador de 123, la base de datos no debe permitir que ningún otro empleado tenga el mismo valor de identificador. Si tiene una columna employee_rating para la que se prevean valores entre 1 y5, la base de datos no debe aceptar valores fuera de ese intervalo. Si en la tabla hay una columna dept_id en la que se almacena el número de departamento del empleado, la base de datos sólo debe permitir valores que correspondan a los números de departamento de la empresa.

 Implementación de restricciones

Restricciones PRIMARY KEY

Una restricción PRIMARY KEY identifica una o más columnas de una tabla que constituyen una clave principal Se permite una restricción PRIMARY KEY por tabla El valor debe ser único en las columnas constituyentes No se permiten valores nulos en las columnas constituyentes.





Restricciones DEFAULT

Una restricción DEFAULT define un valor de columna predeterminado cuando no se proporciona ningún valor Cada columna sólo puede tener una restricción DEFAULT Sólo es aplicable a instrucciones INSERT Se permiten algunas funciones suministradas por el sistema.

Restricciones CHECK

Las restricciones CHECK restringen los valores que se pueden introducir en una columna con INSERT o con UPDATE Puede definir varias restricciones CHECK por columna Puede hacer referencia a columnas de la misma tabla No puede contener subconsultas.

Restricciones UNIQUE

Las restricciones UNIQUE aseguran que todos los valores de una columna son únicos Sólo se permite un valor nulo en una columna única Pueden incluir una o más columnas.


Restricciones FOREIGN KEY

Las restricciones FOREIGN KEY garantizan integridad referencial entre columnas de la misma tabla o de tablas diferentes Deben hacer referencia a una restricción PRIMARY KEY o UNIQUE El usuario debe tener permiso REFERENCES en la tabla a la que se hace referencia

Consideraciones sobre la comprobación de restricciones

Asignar nombres significativos a las restricciones Crear, cambiar y eliminar restricciones sin necesidad de eliminar y volver a crear la tabla Realizar comprobación de errores en las aplicaciones y las transacciones Deshabilitar las restricciones CHECK y FOREIGN KEY: Para mejorar el rendimiento al ejecutar trabajos por lotes grandes.Para evitar comprobar los datos existentes al agregar nuevas restricciones a una tabla.


Módulo 4:

 Implementación de vistas

Qué es una vista: Las vistas (“views”) en SQL son un mecanismo que permite generar un resultado a partir de un pedido (query) almacenado, y ejecutar nuevos pedidos sobre este resultado como si fuera una tabla normal.

A continuación es un vídeo como crearlas 

Tipos de vistas

Vistas estándar Combinan datos de una o más tablas base (o vistas) en una nueva tabla virtual Vistas indizadas Materializan (almacenan) la vista mediante la creación de un índice único agrupado en la vista.
 Vistas con particiones Combinan datos con particiones horizontales de una o más tablas base en uno o varios servidores.

Módulo 5: 

Implementación de procedimientos almacenados y funciones

Qué es un procedimiento almacenado 
Una colección con nombre de instrucciones Transact-SQL o código de Microsoft .NET Framework Acepta parámetros de entrada y devuelve valores de parámetros de salida Devuelve un valor de estado para indicar el éxito o el error.

Crear en la base de datos actual utilizando la instrucción CREATE PROCEDURE

Usar EXECUTE para ejecutar procedimiento almacenado


Referencias Bibliográficas:
Coronel C., Morris S., Rob P. (2011). Bases de Datos Diseño, implementación y administración (Novena edición). México: Cengage Learning Editores. (Libro digital).


 



martes, 16 de junio de 2015

SQL Orígenes y Evolución

SQL Orígenes y Evolución 


DDL Lenguajes de definición de datos creación e estructura de la base de datos
Integridad de los datos
create para crear la estructura de objetos  de la base de datos
alter modificar objetos
drop Elimina el objeto



DML data manipulation language Lenguaje de manipulación de Datos
recuperación de datos
Manipulación de datos
Insert : Guarda información que se inserta o se almacena datos  .Insertar, almacenar, guarda información.  
Update:Actualizar cualquier dato .
Delete:borrar datos .
select :consultar datos


DCL Data control language Lenguaje de control de datos
control acceso
Compartición de datos
Grand Doy permiso a los que ingresen
revoice quitar permisos .

Roles de Sql
Invocación directa o interactiva
     La sentencia es invocada desde el terminal.
     Los datos devueltos se presentan en pantalla
           El resultado puede ser :
               *Un valor  
               *Una lista de valores
               * Una tabla
                *Vacío
Invocación desde programa.
     *  La sentencia se invoca como parte de la ejecución del programa .
    * Los datos devueltos se recogen en una área de entrada del programa.

Ventajas de SQL
Independencia de los fabricantes
Portabilidad a cualquier plataforma .
SQL está estandarizado .
Basado en el modelo relacional.
Lenguaje de alto nivel.
Consultas interactivas ad-hoc.
Utilización en lenguaje de programación
multiples vista de datos
lenguaje de base de datos
definición dinámicas de datos
arquitectura cliente servidor


Tipos de datos


Creación de dominios


Los dominios se pueden utilizar como tipos de datos
permite cambiar simultáneamente un dato  
ejemplo
Char(15)default “ 99999”  = pepito
tipos de datos despliega pepito
Operadores



Creación De objetos : Tablas

Create table nombre tabla(Nombre_columna,Tipo_Columna Restricciones_Columna, restricciones_tabla)
Esquema
Nombre_esquema.nombe_tabla

Restricciones de columna:
*unique
*Not null
*default<valor_por_defecto>
check(condicion)
*primary key
*Refeences Nombre_tabla (nombre_atributo)
Restriccion de tabla
Unique (nombre_Atributo) que la combinación sea única
Primary Key (nombre_Atributo)
foreign Key(nombre_atributo)References
NOmbre_tabla(Nombre_atributo)accion_referencial
Check(condicion)
Acciones referenciales
on update accion
On delete accion
restrick

DBO propietario de la base datos esquema por defaul
sqlserver
win2003.sql123.mi_Database.mgalarza.cliente.estaba mal
win2003.sql123.mi_Database.aten_cliente.cliente.le hicieron haci

sherpoint


Consulta de datos
select lista_atributos
Se indican los atributos que se quieren obtener como respuesta a la consulta
select at1,at2,....atn..
se utiliza * si queremos todos los atributos de las tablas involucradas
select*..
 Pueden aparecer filas duplicadas
   para evitarlos se pueden utilizar DISTINCT
   SELECT DISTINCT lista_atributos..

*Los nombres de los atributos se pueden cambiar en el resultados de la tabla.
from lista_tablas
indica la tabla o tablas q son necesarias para obtener informacion.
*Lista de tabls que se utilizan en la consulta separadaspor comas
FROM tab1,tab2,tabn..
*Realiza el producto cartesiano (x) de las mismas
*Las condiciones (where,group by)se imponen sobre el producto el producto cartesiano

where condición
*Indica las condiciones que se deben cumplir las filas obtenidas como resultado  
condiciones que deben cumplir las tuplas

Operadores

*comparación
*lógicos
*matematicos
*otros como  Where
Reunion (join)
*No se realiza automaticamente
*Hay que escribir la condición de la consulta
*Si no se pone la conidion de join se obtiene el producto cartesiano
Group BY lista_atributos(hace agrupaciones )
having condición agrupados ( hace condiciones sobre lo agrupado)
Oreder By lista_atributos ( Ordenar de forma ascendente o descendente)

Ambigüedades
Cuando el mismo nombre de atributo aparece en más de una tabla  
*hay que distinguir a que atributo se refiere
*se cualifica el atributo con en el nombre de la tabla
nombre_tabla.nombre_atributo

select empleado.nombre, ci
from empleado ,departamento
where empleado.código=departamento.código

*cuando la misma relación se la usa más de una vez en la consulta
*En este caso se utiliza alias para las tablas

Select E.nombre,J.nombre
From empleado E,empleado j
where e.id_jefe=j.ID

Funciones de agregación o agrupación
*Son funciones que toman una colección de valores como entrada y producen un único valor  de salida .
Count
devuelve el número de tuplas o valores especificados en un consulta para el atributo indicado
Se puede utilizar como un atributo.

 Subconsultas
*En general se admiten  niveles de anidación
*Para evitar la ambigüedad los atributos sin cualificar siempre se referirán a las relaciones declaradas en la consulta más interna .
*Para evitar problemas es aconsejable calificar los atributos alias para las relaciones .
   SELECT nombre
FROM empleado
Where  sueldo >select sueldo
                           from empleado
                            Where dpto=5
Palabras Reservadas
*Exits Un valor lógico si la consulta tiene valores
*Devuelve true si la tabla no es vacía
*Not exits se utiliza para comprobar si el resultado de una consulta anidada no es vacio.
*devuelve false si la tabla no es vacía.

Group BY  
Se utiliza para formar agrupaciones de tuplas en función de los valores de uno o varios atributos .

ejemplo

SELECT dpto, count (*),AVG(sueldo)
FROM empleado
Group by dpto
Having
*Se utiliza siempre con group By
*Impone condiciones sobre los grupos formados previamente en group by

SELECT dpto,COUNT(*),AVG(sueldo)
from empleado
GROUP by
HAVING COunt(*)>2

Ejemplo en exel

ORDER BY
permite que el usuario ordene el resultado de una consulta por lo svalores de uno o mas atributos
*El orden puede ser ascendente(ASC)o Descendente (DSC)
Operadores de conjuntos
*Union
*ntersect
*minus

(consulta1) Operador _conjunto (consulta2)
(select id From alumnos)
Union
(select id
FROM empleados )

Vídeos relacionado Curso de sql https://www.youtube.com/watch?v=bW-NYf606fM 


Referencias Bibliográficas:
Coronel C., Morris S., Rob P. (2011). Bases de Datos Diseño, implementación y administración (Novena edición). México: Cengage Learning Editores. (Libro digital).