lunes, 30 de noviembre de 2015

SQL ORÍGENES Y EVOLUCIÓN

SQL

(Por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como hacer cambios en ellas.

ORÍGENES Y EVOLUCIÓN

  • Entre 1974 y 1975 se implementó en un prototipo llamado SEQUEL-XRM.
  • Entre 1976 y 1977, condujeron a una revisión del lenguaje (SEQUEL/2)
  • Cambió de nombre por motivos legales. convirtiéndose en SQL.
  • A partir de 1981, IBM comenzó a entregar sus productos relacionales
  • En 1983 empezó a vender DB2
  • En 1986, el ANSI adoptó SQL como estándar para los lenguajes relacionales.
  • En 1987 se transformó en estándar ISO, con el nombre de SQL/86.
  • Luego se presento la versión SQL/89.
  • En 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado "SQL-92"
  • SQL3 nuevo estándar de SQL en 1999, después de más de 7 años de debate.


FUNCIONES DE SQL

DDL – Data Definition Language
Creación de estructuras de la base de datos.
Integridad de los datos. 

DML – Data Manipulation Language
Recuperación de datos.
Manipulación de datos.

DCL – Data Control Language
Control de acceso.
Compartición de datos.


Con SQL podemos hacer entre otras las siguientes operaciones en el programa que gestiona las bases de datos:
  • Crear nuevas bases de datos.
  • Crear nuevas tablas en una base de datos.
  • Crear nuevos registros en las tablas de una base de datos
  • Crear tablas de consulta en una base de datos.
  • Borrar tablas o bases de datos.
  • Borrar registros.
  • Cambiar uno o varios datos de un registro.
  • Mostrar los datos de una tabla o consulta.
  • Buscar y mostrar sólo algunos datos de una tabla o consulta, poniendo una serie de condiciones para la búsqueda.

INVOCACIONES DE SQL

Invocación Directa: 
La sentencia es invocada desde la terminal y los datos devueltos se presentan en pantalla.

Invocación desde Programa: 
Sentencia se invoca como parte de la ejecución del programa y los datos devueltos se recogen en una área de entrada del programa.

VENTAJAS DE SQL

  • Independencia de los fabricantes.
  • Portabilidad a cualquier tipo de plataforma.
  • SQL está estandarizado.
  • Basado en el modelo relacional.
  • Lenguaje de alto nivel.
  • Consultas interactivas ad-hoc.
  • Utilización en Lenguaje de programación.
  • Múltiples vistas de los datos.
  • Lenguaje de base de datos.
  • Definición dinámica de datos.
  • Arquitectura cliente/servidor.


TIPOS DE DATOS


OPERADORES


Enlace complementario: 

https://books.google.com.ec/books?id=FR3ZfyrY8_gC&pg=PA8&dq=lenguaje+sql&hl=es-419&sa=X&ved=0ahUKEwiukJLukcHKAhVHph4KHZRCDysQ6AEIHjAB#v=onepage&q=lenguaje%20sql&f=false
  
REFENCIAS:

  • Orígenes y Evolución de SQL. (Sin fecha). Recuperado el 30 de noviembre de 2015 de http://sql3.wikispaces.com/4.-+Or%C3%ADgenes+y+Evoluci%C3%B3n+de+SQL.


  • Características de SQL. (Sin fecha). Recuperado el 30 de noviembre de 2015 de http://aprende-web.net/progra/sql/sql_2.php

lunes, 23 de noviembre de 2015

NORMALIZACIÓN: Boyce-Codd, 4NF, 5NF, dominio/clave

FORMA NORMAL DE BOYCE-CODD


Dependencia Fncional:
Una dependencia funcional A -> B es trivial cuando B es parte de A. (Es decir B es subconjunto del conjunto de atributos A).

Concepto de BCNF:
Requiere que no existan dependencias funcionales no triviales de los atributos que no sean parte de la clave candidata.

"Por lo tanto una tabla está en la Forma Normal de Boyce-Cood si solo si está en 3NF y cada dependencia funcional no trivial tiene una clave candidata como determinante."

Nota: existen casos especiales en el que una tabla en 3NF no cumpla con los requisitos para estar en BCNF, por ejemplo: teniendo en cuenta en que cada estudiante puede tener más de un tutor.
 
Comprobación de una relación este en BCNF:
Además de comprobar que se encuentre en 3NF, se debe comprobar lo siguiente:
  • Si no existen claves candidatas compuestas (con varios atributos), está en BCNF.
  • Si existen varias claves candidatas compuestas y éstas tienen un elemento común, no está en BCNF
Ejemplo 1:

La siguiente tabla se encuentra en 3NF:








Aunque la tabla anterior se mantiene en 3FN, mantiene dependencias funcionales. En este caso hay dependencia entre el código postal y la población, ya que, conocido el código postal se puede conocer la población, y conocida la dirección y la población, se conoce el código postal.

Para transformar la tabla anterior en BCNF se crea las siguientes relaciones o tablas:













CUARTA FORMA NORMAL


Dependencia Funcional multivaluada o de múltiples valores: Una dependencia multivaluada de X sobre Z (es decir X -> Z), siendo X y Z atributos de la misma tabla, ocurre cuando Z tiene un conjunto de valores bien definidos sobre cualquier valor de X. Es decir, dado X sabremos los posibles valores que puede tomar Z.

Una tabla está en 4NF, si:

  • Satisface BCNF
  • Las únicas dependencias funcionales
    multivaluadas que existen son las dependencias
    funcionales de la clave con los atributos que no
    forman parte de la misma

La 4NF se asegura de que los datos multivalores independientes estén correcta y eficientemente representados en un diseño de base de datos.

Ejemplo 1:

Supongamos la siguiente tabla. Los atributos de la tabla transporte son Conductor, Tipo_vehículo y Tipo_Carga, formando los tres campos la clave primaria. A cada conductor se le puede asignar un vehículo u otro, y cada vehículo puede transportar varios tipos de carga.

  • Con estas condiciones:
  1.  Los conductores son independientes de la carga.
  2.  El tipo de vehículos depende del conductor.
  3.  Tipo de vehículo depende del Tipo de carga.
  • En este caso hay dependencias funcionales multivaluadas, ya que algunos atributos que forman la clave dependen de otro atributo que también la forman.

Para conseguir que esta tabla esté en 4FN se necesita crear dos nuevas tablas, manteniéndose en cada una de ellas una dependencia múltiple.


QUINTA FORMA NORMAL

También conocida como forma normal de proyección-unión (PJNF), sirve para reducir redundancia en las bases de datos relacionales que guardan datos multivalores aislando semánticamente relaciones múltiples relacionadas. 

  

Una tabla está en 5NF, si:

  • Satisface 4NF 

  • Cada dependencia de unión (JOIN) en ella es implicada por las claves candidatas.

 

La 5NF se emplea cuando en una misma tabla tenemos mucha información redundante, con pocos atributos o cuando una tabla posee una gran cantidad de atributos, y se hace por ello inmanejable.

 

Ejemplo 1:








FORMA NORMAL DE DOMINIO/CLAVE

Esta Forma Normal requiere que la base de datos contenga restricciones de dominios y de claves. 

 

Una restricción del dominio especifica los valores permitidos para un atributo dado, mientras que una restricción clave especifica los atributos que identifican únicamente una fila en una tabla dada.

 

Enlace complementario: 
https://s3.amazonaws.com/piazza-resources/hyiw1nus1o81pv/i0dww1j7zt36sw/Normalizacion.pdf?AWSAccessKeyId=AKIAIEDNRLJ4AZKBW6HA&Expires=1452592733&Signature=8e%2FsT22mRIDrHa94MvjfdZRS4%2BI%3D
  
REFENCIAS:
  • Jorge Sánchez. (2007). Unidad 2 Bases de Datos Relacionales. Recuperado el 23 de noviembre de 2015 de http://www.jorgesanchez.net/bd/apuntes07/sgbd0207.pdf

 

 

 

jueves, 19 de noviembre de 2015

NORMALIZACIÓN: PRIMERA - SEGUNDA - TERCERA FORMA NORMAL

NORMALIZACIÓN:

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

En términos simples, la normalización es el proceso de identificar el mejor lugar donde pertenecen los datos. Es un enfoque de diseño que minimiza la redundancia de datos, protege la integridad y optimiza las estructuras de datos mediante la colocación de los elementos de datos de manera sistemática y correcta en los grupos apropiados.


Existen tres niveles básicos de Normalización:
  • Primera Forma Normal (1NF)
  • Segunda Forma Normal (2NF)
  • 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)
Tipos de Normalización

PRIMERA FORMA NORMAL

Para que una tabla se encuentre en Primera Forma Normal debe cumplir las siguientes reglas:

  • Todos los atributos son atómicos. (que no se puedan dividir)
  • La tabla contiene una clave primaria.
  • La clave primaria no contiene atributos nulos.
  • No posee ciclos repetitivos.
  • No debe de existir variación en el número de columnas.

Ejemplo 1:






Ejemplo 2:

Suponga que un diseñador principiante desea guardar los nombres y teléfonos de sus clientes.









Este diseño no está en Primera Forma Normal ya que en el campo Teléfono se puede dar el caso que un cliente tenga más de un número telefónico, una solución que se podría pensar es crear más campos como: Teléfono1, Teléfono2, Teléfono3. Pero esta tampoco es una solución ya que se crean campos que pertenecen al mismo dominio creando redundancia en la tabla, por tal motivo la forma más optima y que cumple con las condiciones de la 1NF es la siguiente:



















Ejemplo 3:





SEGUNDA FORMA NORMAL

En primer lugar debe estar en 1NF, a continuación debe cumplir que si y solo si, dada cualquier clave candidata y cualquier atributo que no sea parte de la clave candidata, dicho atributo depende de toda la clave candidata en vez de solo una parte de ella.


Cuando una tabla 1NF no tiene ninguna clave candidata compuesta, la tabla está automáticamente en 2NF.

Ejemplo 1:




Empezando el análisis de esta tabla se tiene que se encuentra en 1NF. Para llegar a 2NF le falta cumplir ciertas condiciones como lo son las siguientes: la clave candidata en este caso son Empleado y Habilidad, de acuerdo con las reglas para la segunda forma normal todos los atributos que no sean clave candidata deben depender de toda la clave candidata. En este caso el atributo Lugar actual de trabajo no depende del atributo Habilidad solo del atributo Empleado. Esto crea redundancia de datos y hace a la tabla vulnerable a anomalías de actualización.

Una solución es 2NF es la siguiente:




Ejemplo 2:



En el ejemplo 2 se puede observar que el único atributo que dependen de la clave candidata Id_Empleado e Id_Departamento es el atributo Años por lo cual para normalizar a 2NF se crean dos tablas con los atributos que no tenían dependencia total de la clave candidata.



TERCERA FORMA NORMAL

Para estar en la tercera forma normal debe estar en 2NF y no deben existir atributos que no pertenezcan a la clave primaria que puedan ser conocidos mediante otro atributo que no forma parte de la clave primaria. No existen dependencia funcional transitiva.

Ejemplo 1:












La tabla no cumple los requisitos para estar en 3NF ya que el atributo no primo Fecha de nacimiento del ganador tiene dependencia funcional transitiva al poder ser conocido mediante el atributo primo Ganador. Con lo cual esto podría causar anomalías en la tabla, para llegar a la 3NF quedaría de la siguiente forma:


Ejemplo 2:























Se aplica descomposición sin pérdidas para la dependencia que impide la 3NF, y obtenemos:



















CONCLUSIÓN: 
La normalización es un enfoque de diseño que minimiza la redundancia de datos, protege la integridad y optimiza las estructuras de datos; por lo general, una normalización razonable permite mejorar el rendimiento.

Enlace complementario: https://support.microsoft.com/es-es/kb/283878
  
REFENCIAS:
 
  • Nieves Camacho. (2015). Normalización de Bases de Datos Relacionales. Recuperado el 19 de noviembre de 2015 de http://docplayer.es/7728502-Normalizacion-de-bases-de-datos-relacionales.html



jueves, 12 de noviembre de 2015

EJERCICIOS DE ÁLGREBRA RELACIONAL

EJERCICIO 1

1)Dadas las siguientes tablas


Expresar en álgebra relacional lo siguiente:
  1. Consultar el nombre de los personajes del universo U5
  2. Consultar el nombre y género de los personajes del universo Marvel época Plateada
  3. Consultar todos los datos de los personajes de cualquier época del universo DC
  4. Consultar el nombre de los personajes Masculinos de cualquier época del universo Marvel
  5. Consultar el nombre de los personajes Femeninos de cualquier universo y época Moderna
En cada uno de los numerales mostrar los resultados.


























































lunes, 9 de noviembre de 2015

ÁLGEBRA RELACIONAL - Operaciones binarias


Producto Cartesiano (x)

Dadas dos relaciones A y B, el producto cartesiano de ambas relaciones, escrito como A x B, es una relación que tiene como esquema la unión de los esquemas de A y B, y cuyas tuplas son el conjunto de todas las parejas constituidas combinado cada tupla de A con cada tupla de B. Nueva tabla con los atributos de las dos tablas iniciales





Producto Cartesiano en SQL: SELECT * FROM R1, R2

Ejemplo 1:


Ejemplo 2:


 

Operaciones de Conjuntos

Para realizar las operaciones se trabaja sobre dos o más relaciones que sean compatibles.

Union (U)

Retorna un conjunto de tuplas que estén en una o en ambas relaciones que se asocian. Elementos repetidos aparecerán solo una vez.



Ejemplo 1:

























Intersección (∩)

Dadas dos relaciones A y B del mismo tipo, la intersección de ambas relaciones, escrita como A ⋂ B, es una relación del mismo tipo, que contiene las tuplas t tal que que t pertenece tanto a A, como a B. Entrega la cantidad de tuplas que están en las dos relaciones.




Ejemplo 1:





















Diferencia (-)

Dadas dos relaciones A y B del mismo tipo, la diferencia de ambas relaciones, escrita como A – B (en este orden), es una relación del mismo tipo, quecontiene las tuplas t tal que t pertenece a A, pero no a B. Cantidad de tuplas que se encuentran en la primera relación pero no en la segunda, es importante diferenciar que no es lo mismo A - B, que B - A.



Ejemplo 1:



















Join o Reunión

Es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concadenar tuplas de la primera relación con tuplas de la segunda, y que cumplen una condición de combinación especificada. Selección de combinaciones completas del producto cartesiano.

Dentro de esta operación (Join) que elimina algunos datos, los que no están en las dos tablas se derivan dos operaciones más que son Left Join que reemplaza los eliminados por valores nulos en la izquierda, también se tiene a Right Join que reemplaza los eliminados por valores nulos en la derecha.


Join en SQL: SELECT * FROM R1, R2 WHERE R1.k = R2.K

Join en MYSQL: SELECT * FROM R1 JOIN R2 USING (k)

Join en MSSQL: SELECT * FROM R1 INER JOIN R2 ON R1.k = R2.K


Ejemplo 1:












Ejemplo 2:






















Ejemplo 3:






















Enlace complementario: http://ict.udlap.mx/people/carlos/is341/bases04.html
  
REFENCIAS:
 
  • Franco G. Polanco. (2006). Álgebra relacional. Recuperado el 9 de noviembre de 2015 de http://eii.ucv.cl/pers/guidi/cursos/estructuras/pdf/BD-Algebra%20relacional.pdf  

jueves, 5 de noviembre de 2015

ÁLGEBRA RELACIONAL - Operaciones unitaria

Álgebra Relacional 

Conjunto de operaciones encargadas de la manipulación de datos agrupado. Son una representación intermedia de una consulta a una base de datos. Es importante recordar que al aplicar una operación a una tabla se obtiene como resultado otra tabla.

La manipulación de datos incluye básicamente dos aspectos: la actualización y la consulta

Operadores:

  • Comparación: ( =, >, <, >=, <=, < > ) 
  • Conjunción: ( ^ )
  • Disyunción: ( v )
  • Negacioón: ( --| ) 

 Opreaciones Unitarias:

  • Seleccionar
  • Proyectar
  • Eliminar duplicados  

Seleccionar (σ)

Es una operación que sirve para elegir algunas tuplas de una relación y eliminar el resto, es decir, a partir de una relación, se obtiene una nueva relación que cumplen una condición de selección especificada ‘p’.
Dada una relación A y una condición p, la selección de la relación A dado p, escrito como σp (A), es una relación del mismo tipo, que contiene las tuplas t de A tal que p es verdadero para esas tuplas.
El predicado p puede ser contener operadores lógicos (AND, OR, NOT) y comparadores matemáticos =,≥,>,<,≠,≤); por ejemplo, los “materiales que sean de acero”.
Esta operación selecciona toda la fila


Seleecionar en SQL: SELECT * FROM R WHERE condición

Ejemplo 1:



















Ejemplo 2:

Ejemplo 3:

 -----------------------------------------------------------------------------------------

Proyectar (Π)

Es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos (columnas) especificados.

La proyección debe preservar la propiedad de cierre (su aplicación debe generar otra relación), por tanto del resultado deben eliminarse eventuales tuplas repetidas. Esta operación selecciona columnas completas


Proyectar en SQL: SELECT A1, A2, ...,An FROM R

Ejemplo 1:











Ejemplo 2:





















--------------------------------------------------------------------------------------------

Composición de Seleccionar Proyectar (σ, Π)











Ejemplo 1:















Ejemplo 2:

















----------------------------------------------------------------------------------------------

Eliminar Duplicados (s)

Elimina tuplas duplicadas en una relación.

Eliminar duplicados en SQL: SELECT DISTINCT * FROM R

Ejemplo 1:


Enlace complementario: http://ict.udlap.mx/people/carlos/is341/bases04.html

REFENCIAS:
  • Franco G. Polanco. (2006). Álgebra relacional. Recuperado el 5 de noviembre de 2015 de http://eii.ucv.cl/pers/guidi/cursos/estructuras/pdf/BD-Algebra%20relacional.pdf