Você está na página 1de 124

Bases de datos

INTRODUCCIN A LA TECNOLOGA DE ALMACENAMIENTO DE DATOS

Introduccin
Para disear una base de datos debemos establecer un proceso partiendo del
mundo real, de manera que sea posible plasmarlo mediante una serie de
datos. La imagen que obtenemos del mundo real se denomina modelo
conceptual y consiste en una serie de elementos que definen lo que queremos
plasmar del mundo real en la base de datos. La definicin de este modelo se
denomina esquema conceptual.

DE LOS SISTEMAS TRADICIONALES DE FICHEROS A LAS BASES DE


DATOS
Los primeros sistemas de procesamiento de datos estaban pensados para
ejecutar las tareas administrativas, para reducir el papeleo. Ms
recientemente, los sistemas se han extendido hacia la produccin y gestin de
la informacin, que se ha convertido en un recurso vital para las empresas. Si
los directivos disponen de una buena informacin, es probable que puedan
tomar decisiones acertadas y con una gran rapidez.

Actualmente, la funcin ms importante de los sistemas de bases de datos


consiste en proporcionar la materia prima necesaria a los sistemas de
informacin de la empresa para la gestin de la misma. El desarrollo de los
sistemas de bases de datos se convirti en crucial para proporcionar
informacin correcta (sin errores) y oportuna (en el momento que se necesita),
a los directivos.

Si analizamos la situacin de algunos sistemas de informacin, encontramos


una proliferacin de ficheros especficos cada uno de ellos de una determinada
aplicacin. Los datos se recogen varias veces y se encuentran repetidos en los
distintos archivos. Esta redundancia adems de malgastar recursos, origina a
menudo divergencias en los resultados.

Los sistemas informticos tradicionales han sido llamados por algunos autores
sistemas orientados hacia el proceso, debido a que en ellos se pone el nfasis
en los tratamientos que reciben los datos, los cuales se almacenan en ficheros
diseados para una determinada aplicacin. Las aplicaciones se analizan e
implantan con entera independencia unas de otras, y los datos no se suelen
transferir entre ellas, sino que se duplican siempre que los correspondientes
trabajos los necesitan.

Este planteamiento produce, adems de una ocupacin intil de memoria


secundaria, un aumento de los tiempos de proceso, al repetirse los mismos
controles y operaciones en los distintos ficheros. Pero ms graves todava son
las inconsistencias que a menudo se presentan en estos sistemas, debido a
que la actualizacin de los mismos datos, cuando se encuentran en ms de un
fichero, no se suele realizar de forma simultnea en todos los ficheros. Los
problemas son an ms acusados cuando se presentan demandas inesperadas
de informacin.

De este anlisis se deduce claramente la necesidad de una gestin ms


racional del conjunto de datos, surgiendo as un nuevo enfoque que se apoya
sobre una base de datos en la cual los datos son recogidos y almacenados una
sola vez, con independencia de los tratamientos.

Vemos, por tanto, que la solucin de los problemas asociados al tratamiento de


los datos en los sistemas tradicionales lleva a un cambio radical en el enfoque
del sistema de informacin, en el cual los datos se organizan y mantienen en
un conjunto estructurado que no est diseado para una aplicacin concreta,
sino que, por el contrario, tiende a satisfacer las necesidades de informacin
de la organizacin; necesidades cuya diversidad se ve acentuada con el
transcurso del tiempo.

Estos sistemas orientados hacia los datos, van substituyendo a los sistemas
orientados hacia el proceso, que por su poca fiabilidad, falta de adecuacin a la
realidad y mal asegurada confidencialidad han ido perdiendo de forma
progresiva la confianza de los usuarios.

PROBLEMAS DE LOS FICHEROS


Redundancia e inconsistencia de los datos
Dificultad de acceso a los datos: Existen aplicaciones particulares
para cada tipo de acceso a los datos.
Aislamiento de los datos: Los datos estn en archivos con diferentes
formatos, por lo tanto resultan difciles de utilizar en nuevos
programas.
Variedad de usuarios: Si varios usuarios actualizan a la vez se puede
llegar a tener informacin inconsistente
Problemas de seguridad: Es difcil restringir el acceso a registros de
un fichero.
Problemas de integridad de los datos.

Qu es una base de datos?


Una base de datos (cuya abreviatura es BD) es una entidad en la cual
se pueden almacenar datos de manera estructurada, con la menor
redundancia posible. Diferentes programas y diferentes usuarios
deben poder utilizar estos datos. Por lo tanto, el concepto de base de
datos generalmente est relacionado con el de red ya que se debe
poder compartir esta informacin. De all el trmino base. "Sistema
de informacin" es el trmino general utilizado para la estructura
global que incluye todos los mecanismos para compartir datos que se
han instalado.

Conjunto de datos no redundantes, almacenados en un soporte


informtico, organizados de forma independiente de su utilizacin y
accesibles simultneamente por distintos usuarios y aplicaciones. La
diferencia de una BD respecto a otro sistema de almacenamiento de
datos es que stos se almacenan en la BD de forma que cumplen tres
requisitos bsicos: no redundancia, independencia y concurrencia.

Un conjunto de informacin almacenada en memoria auxiliar que


permite acceso directo y un conjunto de programas que manipulan
esos datos

Por qu utilizar una base de datos?


Una base de datos proporciona a los usuarios el acceso a datos, que pueden
visualizar, ingresar o actualizar, en concordancia con los derechos de acceso
que se les hayan otorgado. Se convierte ms til a medida que la cantidad de
datos almacenados crece.

Una base de datos puede ser local, es decir que puede utilizarla slo un
usuario en un equipo, o puede ser distribuida, es decir que la informacin se
almacena en equipos remotos y se puede acceder a ella a travs de una red.

La principal ventaja de utilizar bases de datos es que mltiples usuarios


pueden acceder a ellas al mismo tiempo.

TERMINOS
Archivo Coleccin de registros del mismo tipo
Base de datos Conjunto de datos persistentes, pertenecientes a un
mismo contexto, almacenados sistemticamente para
ser usados por los sistemas de aplicacin de alguna
empresa dada.
Base de datos Una BD relacional, incorpora mltiples tablas con
relacional mtodos para hacerlas trabajar conjuntamente,
eliminando inconsistencias y redundancia. Se vale del
lgebra Relacional y el Clculo Relacional. Su paradigma
se basa en la lgica de proposiciones y la teora de
conjuntos.
Campo Es el conjunto ordenado de datos los cuales pueden
recuperarse de acuerdo a la necesidad del usuario
Diccionario de Descripcin lgica de los datos para el usuario. Rene la
datos informacin sobre los datos almacenados en la BD
(descripciones, significado, estructuras, consideraciones
de seguridad, edicin y uso de las aplicaciones, etc.).
Directorio de Es un subsistema del sistema de gestin de base de
datos datos que describe dnde y cmo se almacenan los
datos en la BD (modo de acceso y caractersticas fsicas
de los mismos).
Inconsistencia El contenido de una base de datos es inconsistente si
dos datos que deberan ser iguales no lo son. Por
ejemplo, un empleado aparece en una tabla como activo
y en otra como jubilado.
Informacin Es la unidad ms pequea al cual uno puede referirse
(contiene el dato)
Integridad Condicin de seguridad que garantiza que la informacin
es modificada, incluyendo su creacin y borrado, slo
por el personal autorizado.
Motores Son aquellos motores que soportan transacciones, las
Transaccionales cuales constituyen la unidad lgica de trabajo, es decir,
son operaciones atmicas que mantienen la consistencia
de la BD. Se ejecuta todo o nada.
Redundancia Repeticin de los mismos datos en varios lugares.
Registro Un conjunto agrupado de campos con relacin entre si
Sistema de Consiste en un conjunto de programas, procedimientos y
Gestin de Bases lenguajes que nos proporcionan las herramientas
de Datos (SGBD) necesarias para trabajar con una base de datos.
Incorporar una serie de funciones que nos permita
definir los registros, sus campos, sus relaciones,
insertar, suprimir, modificar y consultar los datos.
(Access, Sql Server, Informix, etc.)

ORGANIZACIN DE UNA BASE DE DATOS


Para considerar a una base de datos organizada debe cumplir los siguientes
objetivos:
Tiene que ser verstil: esto quiere decir que, dependiendo de los
usuarios o las aplicaciones, puedan hacer diferentes cosas o traten a los
datos de formas distintas.
Tiene que atender con la rapidez adecuada a cada aplicacin o empresa,
atendiendo a lo que se la requiera.
Tiene que tener un ndice de redundancia lo ms bajo posible.
Tener una alta capacidad de acceso para ganar el mayor tiempo posible
en la realizacin de consultas.
Tener un alto ndice de integridad, esto significa que al tener muchos
usuarios atacando a una misma base de datos no puede haber fallos en
la insercin de datos, errores por redundancia o lenta actualizacin.
Por supuesto tienen que tener un nivel altsimo de seguridad y
privacidad ya que los datos que se pueden almacenar en una base de
datos pueden ser altamente confidenciales o importantes. En este punto
tambin entran los medios fsicos de proteccin contra fuego, robo, etc.
Por ltimo tiene que ser posible su constante actualizacin para no dejar
a la base de datos anticuada e inservible. Cuando hacemos un cambio
en la organizacin fsica de los datos no debe afectar a los programas
por lo que tambin tiene que tener una independencia fsica de los
datos. Al igual que tiene que tener total independencia lgica con los
datos, esto quiere decir que si hacemos cambios en la estructura lgica
de los datos (agregar nuevos campos a una tabla) no deben afectar a
las aplicaciones que utilicen esos datos.

ADMINISTRACIN DE BASES DE DATOS


Rpidamente surgi la necesidad de contar con un sistema de administracin
para controlar tanto los datos como los usuarios. La administracin de bases
de datos se realiza con un sistema llamado DBMS (Data base management
system [Sistema de administracin de bases de datos]).

DEFINICIONES
Consiste en un conjunto de programas, procedimientos y lenguajes que
nos proporcionan las herramientas necesarias para trabajar con una
base de datos. Incorporar una serie de funciones que nos permita definir
los registros, sus campos, sus relaciones, insertar, suprimir, modificar y
consultar los datos.

Software que controla la organizacin, almacenamiento, recuperacin,


seguridad e integridad de los datos en una base de datos. Acepta
pedidos de datos desde un programa de aplicacin y le ordena al
sistema operativo transferir los datos apropiados. Cuando se usa un
sistema de gestin de base de datos, SGDB, (en ingls DBMS), los
sistemas de informacin pueden ser cambiados ms fcilmente a medida
que cambien los requerimientos de la organizacin. Nuevas categoras
de datos pueden agregarse.

El DBMS es un conjunto de servicios (aplicaciones de software) para


administrar bases de datos, que permite:
Un fcil acceso a los datos
El acceso a la informacin por parte de mltiples usuarios
La manipulacin de los datos encontrados en la base de datos
(insertar, eliminar, editar)

El DBMS puede dividirse en tres subsistemas:


El sistema de administracin de archivos: para almacenar
informacin en un medio fsico
El DBMS interno: para ubicar la informacin en orden
El DBMS externo: representa la interfaz del usuario
LOS DBMS PRINCIPALES
Los principales sistemas de administracin de bases de datos son:
Borland Paradox
Filemaker
IBM DB2
Ingres
Interbase
Microsoft SQL server
Microsoft Access
Oracle
Sybase
MySQL
PostgreSQL
mSQL
SQL Server

OBJETIVOS DE LOS SISTEMAS DE GESTIN DE BASES DE DATOS


En un ambiente multiusuario el S.G.B.D ofrece a la empresa un control
centralizado de su informacin. Los objetivos que se plantean estos sistemas
estn relacionados con la intencin de evitar los problemas que existan en los
sistemas de informacin orientados a los procesos. Los principales objetivos
son:
Evitar la redundancia de los datos, eliminando as la inconsistencia
de los mismos.
Mejorar los mecanismos de seguridad de los datos y la privacidad.
Podemos distinguir cuatro tipos de contextos para usar
mecanismos de seguridad: seguridad contra accesos indebidos a
los datos, seguridad contra accesos no autorizados a la BD,
seguridad contra destruccin causada por el entorno (fuego,
inundacin, robo, ...), seguridad contra fallos del propio sistema
(fallos del hardware, del software, ...).
Asegurar la independencia de los programas y los datos, es decir,
la posibilidad de modificar la estructura de la base de datos
(esquema) sin necesidad de modificar los programas de las
aplicaciones que manejan esos datos.
Mantener la integridad de los datos realizando las validaciones
necesarias cuando se realicen modificaciones en la base de datos.
Mejorar la eficacia de acceso a los datos, en especial en el caso de
consultas imprevistas.

FUNCIONES DEL S.G.B.D.


Las principales funciones que debe realizar un S.G.B.D. son:
La definicin de los datos.
La manipulacin de los datos.
Garantizar la seguridad e integridad de los datos.
La gestin de las transacciones y el acceso concurrente.
VENTAJAS DE LAS BASES DE DATOS FRENTE A LOS FICHEROS
CLSICOS
Las bases de datos, surgidas como respuesta al nuevo planteamiento de los
sistemas orientados hacia los datos, para mejorar la calidad de las
prestaciones de los sistemas informticos y aumentar su rendimiento,
presentan una multitud de ventajas frente a los sistemas clsicos de ficheros,
debido, sobre todo, a que se basan en una estructura de datos integrada y
centralizada, eliminando as los problemas de redundancia y control de los
datos.

Las ventajas de los sistemas de bases de datos son, entre otras, las
siguientes:

Independencia de los datos respecto a los tratamientos y


viceversa:
La mutua independencia de datos y tratamientos lleva a que un cambio
de los programas no implican tener que cambiar el diseo lgico y/o
fsico de la base de datos. Por otra parte, la inclusin de nuevas
informaciones, desaparicin de otras, cambios en la estructura fsica o
en los caminos de acceso, etc., no deben obligar a alterar los
programas. Esta independencia de los tratamientos frente a la
estructura de la base de datos, evita el importante esfuerzo que origina
la reprogramacin de las aplicaciones cuando se producen cambios en
los datos.
Independencia lgica de los datos: Se refiere a que las
modificaciones de la representacin lgica del problema no
afecta a los programas que los manipulan, y viceversa.
Independencia fsica de los datos: Se refiere a que la
distribucin en unidades de almacenamiento es independiente
de la estructura lgica general, y viceversa.

Coherencia de los resultados:


Debido a que la informacin de la base de datos se recoge y almacena
una sola vez. En todos los programas se utilizan los mismos datos, por
lo que los resultados de todos ellos son coherentes y perfectamente
comparables.

Adems, al no existir (o al menos disminuir en gran medida) la


redundancia en los datos, desaparece el problema que se presentaba en
el enfoque clsico, de que el cambio de un dato obligaba a actualizar una
serie de ficheros. De esta forma se elimina tambin el inconveniente de
las divergencias en los resultados debidas a actualizaciones no
simultneas en todos los ficheros.

Mejor disponibilidad de los datos para el conjunto, de los


usuarios:
Cuando se aplica la metodologa de bases de datos, cada usuario ya no
es propietario de los datos, puesto que stos se comparten entre el
conjunto de aplicaciones, existiendo una mejor disponibilidad de los
datos para todos los que tienen necesidad de ellos, siempre que estn
autorizados para su acceso.

Mayor eficiencia en la recogida, validacin entrada de los datos


al sistema:
Al no existir apenas redundancias, los datos se recogen y validan una
sola vez, aumentando as el rendimiento de todo el proceso previo al
almacenamiento.

Reduccin del espacio de almacenamiento:


La desaparicin (o disminucin) de las redundancias, as como la
aplicacin de tcnicas de compactacin, lleva en los sistemas de bases
de datos a una menor ocupacin de almacenamiento secundario disco
magntico.

INCONVENIENTES DE LAS BASES DE DATOS


Las bases de datos no slo presentan ventajas, sino que tambin tienen
posibles inconvenientes, que es necesario valorar antes de tomar una decisin
relativa a un cambio en la orientacin del SI. Entre estos inconvenientes es
preciso destacar:

A) Instalacin costosa:
La implantacin de un sistema de bases de datos puede llevar consigo un coste
elevado, tanto en equipo fsico (nuevas instalaciones o ampliaciones), como en
el lgico (sistemas operativos, programas, compiladores, etc... necesarios para
su uso).

B) Personal especializado:
Los conocimientos, que resultan imprescindibles para una utilizacin correcta y
eficaz y sobre todo para la administracin de las bases de datos, implican una
necesidad de personal especializado que resulta difcil de encontrar, y de
formar. El problema de la contratacin y formacin de este tipo de personal es
clave a la hora de crear un sistema de base de datos.

C) Implantacin larga y difcil:


La implantacin de una base de datos puede convertirse en una tarea larga y
laboriosa. Las dificultades que van apareciendo a lo largo de su desarrollo
llevan en general a que se superen ampliamente los plazos inicialmente
previstos.

D) Falta de rentabilidad a corto plazo:


La implantacin de un sistema de bases de datos, tanto por su coste en
personal y en equipos como por el tiempo que tarda en estar operativo, no
resulta rentable a corto plazo. Puede calcularse que para un sistema de
dimensiones medias la rentabilidad slo puede empezar a apreciarse despus
de bastantes meses de la iniciacin de los trabajos; en instalaciones grandes o
muy grandes el plazo puede llegar a ser de aos.

E) Ausencia real de normas:


Un problema muy importante que se pone de manifiesto en el momento de la
creacin de una base de datos, es la ausencia real de una estandarizacin que
facilite a los usuarios el manejo de los sistemas de bases de datos. Empieza,
sin embargo, a observarse ya una preocupacin por este tema y van
apareciendo algunos estndares, sobre todo en el campo de las bases de datos
relacionales como el SQL.

CARACTERSTICAS DESEABLES DE LAS BD


Versatilidad para representar la informacin: Ofrecer diferentes visiones de
la informacin que se almacena en la BD.
Desempeo: Debe dar respuesta en un tiempo adecuado, permitiendo el
acceso simultneo al mismo o diferente datos.
Mnima redundancia.
Capacidad de acceso: Debe responder en tiempo adecuado a consultas
previstas e imprevistas.
Simplicidad: Cambios en los requerimientos no deben suponer grandes
cambios en el modelo de datos.
Seguridad: Capacidad para proteger los datos contra perdidad totales y/o
parciales:
Contra destruccin causada por el entorno (fuego, inundacin,
...)
Contra destruccin causada por fallos del sistema
Contra accesos no autorizados a la BD
Contra accesos indebidos a los datos
Privacidad: Debe reservar la informacin de accesos de personas no
autorizadas.
Afinacin: Organizacin de datos afines para obtener buenos tiempos de
respuesta.
Integridad: Que los datos sean correctos y se correspondan a los
requerimientos del dominio.
Integridad frente a fallos Hw o Sw o de acceso concurrente
Integridad asegurando que los datos se ajustan a los
requerimientos del problema.

VISIN DE LOS DATOS


Un objetivo de un SGDBD es proporcionar una visin abstracta de los
datos. El sistema oculta los detalles de cmo se almacenan y mantienen
los datos.
Niveles de abstraccin:
De vistas
Conceptual
Fsico
Modelo de datos: Conjunto de herramientas conceptuales para describir
los datos, las relaciones, la semntica y las restricciones de consistencia.
Tipos de modelos:
Lgicos basados en objetos
Lgicos basados en registros
Lgicos objeto - relacionales
Fsicos
Estructura de un SGDBD
Almacenamiento en disco
Diccionario de datos
Bdd
ndices
Datos estadsticos
Gestor de almacenamiento
Procesador de consultas
Programas de aplicacin
Usuarios
Arquitecturas de SGDBB
Sistemas centralizados
Sistemas Cliente / Servidor
Sistemas distribuidos
Datawarehouses
BDD en Web

COMPONENTES DE UN SISTEMA DE BASE DE DATOS


Un sistema de base de datos es algo ms que simples datos o que un conjunto
de datos en combinacin con unos programas de gestin. Un sistema de base
de datos est formado por los siguientes componentes:

Datos
Las caractersticas ms importantes de la informacin en estos sistemas es que
va a estar integrada y compartida.

Integrada: La Base de datos puede considerarse como una unificacin de


varios ficheros de datos, que son tratados como uno solo, y en el que se ha
eliminado totalmente, o en parte, la redundancia de datos.

Compartida: Los datos pueden compartirse entre varios usuarios distintos. Es


posible que varios de estos usuarios accedan al mismo tiempo al mismo
elemento de informacin (acceso concurrente).

Equipo (Hardware)
Conjunto de dispositivos fsicos utilizados para almacenar y procesar los datos.
Ordenadores, utilizados para procesar los datos de la Base de datos:
pueden ser mainframe, miniordenador u ordenador personal. El
mainframe y los miniordenadores fueron utilizados tradicionalmente
para soportar el acceso de varios usuarios a una base de datos comn.
Los ordenadores personales eran empleados, inicialmente, para manejar
bases de datos autnomas
Volmenes de almacenamiento. Generalmente son unidades de disco
que constituyen el mecanismo de almacenamiento principal para las
bases de datos.
Otros dispositivos, como unidades de cinta, terminales, impresoras, etc.

Programas (Software)
Un sistema de base de datos incluye dos tipos de programas:
El software de propsito general, para la gestin de la base de datos,
comunmente llamado Sistema Gestor de Bases de Datos (S. G.B.D., o
tambin D. B. M S, en ingls). El S.G.B.D maneja todas las solicitudes
de acceso a la base de datos formuladas por los usuarios y los
programas de aplicacin.

El software de aplicacin, que usa las facilidades del S.G.B.D para


manipular la base de datos con el fin de llevar a cabo una funcin
especfica en la gestin de la empresa (por ejemplo: la gestin de
almacn). Puede estar desarrollado en un lenguaje de programacin
estndar, tal como COBOL o C, o en un lenguaje propio de los S.G.B.D
denominado lenguajes de cuarta generacin (4GL).

Personal
En un sistema de base de datos intervienen un nmero importante de
usuarios, que podemos clasificar en tres grupos:
Administrador de la base de datos (A.B.D.). Son los encargados de
disear la estructura de la base de datos y los responsables de que el
sistema funcione correctamente. El A.B.D. se encarga de autorizar el
acceso a la base de datos, de coordinar y vigilar su utilizacin y de
adquirir los recursos necesarios de software y hardware. El A.B.D. es el
responsable cuando surgen problemas como violaciones de seguridad o
una respuesta lenta del sistema. El A.B.D. tiene, entre otras, las
siguientes funciones:
Definicin del esquema: Decidir el contenido de la base de
datos, eligiendo cuales son los datos que interesa tener
almacenados y organizarlos de la mejor forma posible, creando
el esquema conceptual, que se escribir mediante un lenguaje
de definicin de datos (DDL).
Definicin de las estructuras de almacenamiento y mtodo de
acceso: Debe decidir sobre la forma en que se van a
almacenar los datos sobre los soportes fsicos en los que se
grabar la base de datos y la correspondencia entre esta
estructura de almacenamiento y el esquema conceptual.
Modificacin del esquema y de la organizacin fsica si los
requerimientos cambian.
Decidir los controles de autorizaciones para el acceso a los
datos: Es el que concede diferentes tipos de autorizaciones al
resto de los usuarios de la base de datos.
Especificar las restricciones de integridad: Debe definir los
procedimientos de validacin que habrn de ejecutarse cada
vez que se actualiza la base de datos. Estas restricciones son
consultadas por el SGBD cada vez que se realiza una
actualizacin de los datos.

Programadores de aplicaciones, que se encargan de desarrollar las


aplicaciones que manejan datos de la base de datos. Estas
aplicaciones contendrn solicitudes de datos al S.G.B.D que luego
sern procesados por los programas de la aplicacin que tendrn
como finalidad resolver problemas especficos de la empresa.

Usuarios finales, que son personas que no tienen por que tener
conocimientos informticos y que pueden manipular los datos
(examinarlos y actualizarlos) con la ayuda de las aplicaciones, o bien
de lenguajes de consulta no procedimentales (no es necesario indicar
el algoritmo de acceso a los datos), tipo SQL, o bien, mediante
herramientas basadas en sistemas de mens. Se distinguen tres
tipos de usuarios finales:
Usuarios especializados: Aquellos que son capaces de escribir
ciertas aplicaciones para la BD, para su uso propio.
Usuarios casuales: Aquellos que realizan consultas a travs de
un procesador de consultas. Esas consultas pueden ser
creadas por ellos mismos o por otras personas.
Usuarios ingenuos: Aquellos que solo acceden a travs de
aplicaciones previamente escritas por otros usuarios.

NIVELES DE ABSTRACCIN DE UNA BASE DE DATOS


En esta arquitectura, el esquema de una base de datos se define en tres
niveles de abstraccin distintos:

1.- En el nivel interno.


Este esquema se especifica mediante un modelo fsico y describe todos los
detalles para el almacenamiento de la base de datos, as como los mtodos de
acceso.

Es el nivel ms cercano al almacenamiento fsico de los datos. Permite


escribirlos tal y como estn almacenados en el ordenador. En este nivel se
disean los archivos que contienen la informacin, la ubicacin de los mismos
y su organizacin, es decir se crean los archivos de configuracin.

2.- En el nivel conceptual.


Este esquema oculta los detalles de las estructuras de almacenamiento y se
concentra en describir entidades, atributos, relaciones, operaciones de los
usuarios y restricciones.

En este nivel se representan los datos que se van a utilizar sin tener en cuenta
aspectos como lo que representamos en el nivel interno.

3.- En el nivel externo.


Se describen varios esquemas externos o vistas de usuario. Cada esquema
externo describe la parte de la base de datos que interesa a un grupo de
usuarios determinados y ocultos a ese grupo el resto de la base de datos.

Es el ms cercano al usuario. En este nivel se describen los datos o parte de


los datos que ms interesan a los usuarios.

Una base de datos especfica tiene un nico nivel interno y un nico nivel
conceptual pero puede tener varios niveles externos.
Modelos de bases de datos
Importancia del Modelos de base de datos
El diseador de la base de datos emplea herramientas de comunicacin
para facilitar la interaccin entre el diseador, los programadores de
aplicaciones y el usuario.
Modelo de bases de datos
Conjunto de ideas utilizadas para representar la estructura de
datos y las relaciones entre ellos dentro de la base de datos.
Estos modelos se pueden agrupar en dos categoras: modelos
conceptuales y modelos de ejecucin

Modelos de base de datos


Es la representacin simple relativa, generalmente grfica, de
estructuras complejas de data en el mundo real.
La funcin primaria es ayudar a entender la complejidad del ambiente
real.
El Modelos de base de datos representa la estructura, caractersticas,
restricciones y transformacin

Qu modelos de base de datos existen?

Modelos de bases de datos


Adems de la clasificacin por la funcin de las bases de datos, stas tambin
se pueden clasificar de acuerdo a su modelo de administracin de datos.

Un modelo de datos es bsicamente una "descripcin" de algo conocido como


contenedor de datos (algo en donde se guarda la informacin), as como de los
mtodos para almacenar y recuperar informacin de esos contenedores. Los
modelos de datos no son cosas fsicas: son abstracciones que permiten la
implementacin de un sistema eficiente de base de datos; por lo general se
refieren a algoritmos, y conceptos matemticos.
Algunos modelos con frecuencia utilizados en las bases de datos:
Modelo jerrquico
Modelo en red
Modelo relacional
Modelo entidadrelacin
Modelo de objetos
Modelo documental

Modelo jerrquico
stas son bases de datos que, como su nombre indica, almacenan su
informacin en una estructura jerrquica. En este modelo los datos se
organizan en una forma similar a un rbol (visto al revs), en donde un nodo
padre de informacin puede tener varios hijos. El nodo que no tiene padres es
llamado raz, y a los nodos que no tienen hijos se los conoce como hojas.

Las bases de datos jerrquicas son especialmente tiles en el caso de


aplicaciones que manejan un gran volumen de informacin y datos muy
compartidos permitiendo crear estructuras estables y de gran rendimiento.

Una de las principales limitaciones de este modelo es su incapacidad de


representar eficientemente la redundancia de datos.
Ahora se usan para describir la estructura de documentos XML. Esta estructura
permite relaciones 1:N entre los datos, y es muy eficiente para describir
muchas relaciones del mundo real: tablas de contenido, ordenamiento de
prrafos y cualquier tipo de informacin anidada.

Sin embargo, la estructura jerrquica es ineficiente para ciertas operaciones de


base de datos cuando el camino completo no se incluye en cada registro. Una
limitacin del modelo jerrquico es su incapacidad para representar de manera
eficiente la redundancia en datos.
En la relacin Padre-hijo: El hijo slo puede tener un padre pero un padre
puede tener mltiples hijos. Los padres e hijos estn unidos por enlaces. Todo
nodo tendr una lista de enlaces a sus hijos.

Modelo en red
ste es un modelo ligeramente distinto del jerrquico; su diferencia
fundamental es la modificacin del concepto de nodo: se permite que un
mismo nodo tenga varios padres (posibilidad no permitida en el modelo
jerrquico).

Fue una gran mejora con respecto al modelo jerrquico, ya que ofreca una
solucin eficiente al problema de redundancia de datos; pero, aun as, la
dificultad que significa administrar la informacin en una base de datos de red
ha significado que sea un modelo utilizado en su mayora por programadores
ms que por usuarios finales.

Antes de la llegada del modelo relacional, el modelo en red era el ms popular


para las bases de datos. Este modelo de red (definido por la especificacin
CODASYL) organiza datos que usan en dos construcciones bsicas, registros y
conjuntos. Los registros contienen campos que puede estar organizados
jerrquicamente, como en el lenguaje COBOL. Los conjuntos definen relaciones
N:N entre registros: varios propietarios, varios miembros. Un registro puede
ser un propietario de varios conjuntos, y miembro en cualquier nmero de
conjuntos.
Modelo relacional
ste es el modelo utilizado en la actualidad para modelar problemas reales y
administrar datos dinmicamente. Tras ser postulados sus fundamentos en
1970 por Edgar Frank Codd, de los laboratorios IBM en San Jos (California),
no tard en consolidarse como un nuevo paradigma en los modelos de base de
datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podran
considerarse en forma lgica como conjuntos de datos llamados "tuplas". Pese
a que sta es la teora de las bases de datos relacionales creadas por Codd, la
mayora de las veces se conceptualiza de una manera ms fcil de imaginar.
Esto es pensando en cada relacin como si fuese una tabla que est
compuesta por registros (las filas de una tabla), que representaran las tuplas,
y campos (las columnas de una tabla).

En este modelo, el lugar y la forma en que se almacenen los datos no tienen


relevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto
tiene la considerable ventaja de que es ms fcil de entender y de utilizar. La
informacin puede ser recuperada o almacenada mediante "consultas" que
ofrecen una amplia flexibilidad y poder para administrar la informacin.

El lenguaje ms habitual para construir las consultas a bases de datos


relacionales es SQL, StructuredQueryLanguage o Lenguaje Estructurado de
Consultas, un estndar implementado por los principales motores o sistemas
de gestin de bases de datos relacionales.

Durante su diseo, una base de datos relacional pasa por un proceso al que se
le conoce como normalizacin de una base de datos.
Modelo entidadrelacin
Un diagrama o modelo entidad-relacin (a veces denominado por sus siglas en
ingls, E-R "Entity relationship", o del espaol DER "Diagrama de Entidad
Relacin") es una herramienta para el modelado de datos que permite
representar las entidades relevantes de un sistema de informacin as como
sus interrelaciones y propiedades.

En el Modelo Entidad-Relacin.
Se elabora el diagrama (o diagramas) entidad-relacin.
Se completa el modelo con listas de atributos y una descripcin de otras
restricciones que no se pueden reflejar en el diagrama.

El modelado de datos no acaba con el uso de esta tcnica. Son necesarias


otras tcnicas para lograr un modelo directamente implementable en una base
de datos. Brevemente:
Transformacin de relaciones mltiples en binarias.
Normalizacin de una base de datos de relaciones (algunas relaciones
pueden transformarse en atributos y viceversa).
Conversin en tablas (en caso de utilizar una base de datos relacional).

Modelo de objetos
En la dcada de 1990, el paradigma de la orientacin a objetos se aplic a las
bases de datos creando un nuevo modelo llamado base de datos orientada a
objetos. Esto tuvo el fin de reducir la impedancia objeto-relacional, la
sobrecarga de convertir la informacin de su representacin en la base de
datos -como filas en tablas- a su representacin en el programa -tpicamente
como objeto. Incluso ms, los tipos de datos usados en una aplicacin pueden
definirse directamente en la base de datos, preservando as la base de datos la
misma integridad de datos. Las bases de datos orientadas a objetos tambin
introducen las ideas clave de la programacin orientada a objetos -
encapsulacin y polimorfismo- en el mundo de las bases de datos.

Se han propuesto distintos modos de almacenar objetos en una base de datos.


Algunos se han aproximado desde la perspectiva de la programacin, haciendo
los objetos manipulados por el programa persistente. Esto tpicamente requiere
la adicin de algn tipo de lenguaje de interrogacin, ya que los lenguajes
tradicionales no tienen la posibilidad de encontrar objetos basados en su
contenido. Otros se han aproximado al problema desde la perspectiva de la
base de datos, definiendo un modelo orientado a objetos para la base de
datos, y definiendo un lenguaje de programacin de dicha base de datos que
permite tanto capacidades de programacin como de interrogacin.

Las bases de datos orientadas a objetos sufren falta de estandarizacin;


aunque han sido definidos estndares por en ObjectDatabase Management
Group nunca han sido implementados con generalidad suficiente como para
permitir la interoperabilidad entre productos. Sin embargo, las bases de datos
orientadas a objetos han sido empleadas eficazmente en distintas aplicaciones:
generalmente en nichos especializados como ingeniera o biologa molecular,
pero no de forma general con soporte comercial. Sin embargo algunas de las
ideas que ha aportado han sido recogidas por los fabricantes de bases de datos
relacionales y se han aplicado en extensiones al lenguaje SQL.

Modelo documental
Una base de datos documental est constituida por un conjunto de programas
que almacenan, recuperan y gestionan datos de documentos o datos de algn
modo estructurados. Este tipo de bases de datos constituyen una de las
principales subcategoras dentro de las denominadas bases de datos no SQL. A
diferencia de las bases de datos relacionales, estas bases de datos estn
diseadas alrededor de una nocin abstracta de "Documento".

El concepto central de una base de datos orientada a documentos es el


concepto mismo de Documento. Mientras cada implementacin de base de
datos orientada a documentos difiere en los detalles, en general todas ellas
comparten el principio de que los documentos encapsulan y codifican datos o
informacin siguiendo algn formato estndar. Entre las codificaciones usadas
en la actualidad se encuentran XML, YAML, JSON y BSON, as como formatos
binarios como PDF y documentos Microsoft Office (MS Word, Excel y dems).

Los documentos dentro de una base de datos orientada a documentos son


similar, de algn modo, a registros, tuplas o filas en una base de datos
relacional pero menos rgidos. No se les requiere ajustarse a un esquema
estndar ni tener todos las mismas secciones, atributos, claves o cosas por el
estilo. Por ejemplo un documento puede ser:

{
Nombre:"Pepe",
Direccin:"Plaza Mayor 5",
Profesin:"Panadero"
}

Estos documentos contienen alguna informacin similar y otra diferente. Al


contrario que una base de datos relacional en la que todos los registros deben
tener los mismos atributos -que pueden quedar vacos- , en un documento no
quedan 'campos' vacos. De este modo es posible aadir nueva informacin sin
necesidad de establecer qu informacin queda excluida.

MODELO ENTIDAD RELACIN


El modelo entidad-relacin se usa para disear la BD, la mayora de BD
actuales son de tecnologa relacional se basa en entidades(y atributos y
elementos), relaciones

El Modelo de Entidad Relacin es un modelo de datos basado en una


percepcin del mundo real que consiste en un conjunto de objetos
bsicos llamados entidades y relaciones entre estos objetos,
implementndose en forma grfica a travs del Diagrama Entidad
Relacin.
CARACTERSTICAS DEL MER
Reflejan solo la existencia de los datos no que se hace con los datos
Se incluyen todos los datos del sistema informativo y no est orientado,
o vinculado con ninguna mquina en particular
Es independiente del modelo fsico de los datos
Est abierto a la evolucin del sistema
Es una visin del mundo real con la mayor naturalidad posible mediante
los objetos y las relaciones

DEFINICIONES
Entidad. Es un objeto concreto o abstracto que existe y que se diferencia de
otros y del cual se desea almacenar informacin. Por ejemplo, alumnos,
empleados, aviones, coches, alojamientos

Conjunto de entidades- Una coleccin de objetos similares


Tipos de entidades
Las entidades pueden ser fuertes y dbiles
Entidades fuertes: sus ocurrencias se identifican por si mismas o sea
los atributos que las identifican son propias de ellas
Entidades dbiles: sus ocurrencias son identificables solo por estar
asociadas a otras entidades

Atributos. Propiedades de entidades en un conjunto de entidades

Relaciones. Conexiones entre dos o ms conjuntos de entidades.


Estas relaciones pueden ser de tres tipos diferentes:
1a1
1 a muchos (1 a N)
Muchos a muchos (M a N)

Clave Principal: Se denomina clave principal o primaria al atributo o conjunto


mnimo de atributos (uno o ms campos) que permiten identificar en forma
nica cada instancia de la entidad, es decir, a cada registro de la tabla. Las
claves principales se utilizan cuando se necesita hacer referencia a registros
especficos de una tabla desde otra tabla. En un principio se puede identificar
ms de un atributo que cumpla las condiciones para ser clave, los mismos se
denominan Claves candidatas.

Si la clave primaria se determina mediante un solo atributo de la entidad,


entonces se dice que la misma es una Clave simple. En caso de estar
conformada por ms de un atributo, la misma se conoce como Clave
compuesta.

La Clave fornea (tambin llamada externa o secundaria) es un atributo que


es clave primaria en otra entidad con la cual se relaciona.

Diagramas entidad-relacin
Describen el esquema de una base dedatos

Entidades: Rectngulos, representan objetos reales, Representaremos las


entidades con recuadros con su nombre en el interior.

Entidades dbiles: Se establece una relacin 1-N (relacin identificadora)


entre el conjunto de entidades identificadoras y el conjunto de entidades
dbiles

Atributos: valos, representan propiedades de estos objetos


Relaciones: Rombos, representan enlaces

Tipos de atributo
Atributos atmicos o compuestos
Valores
Monovaluados (ej.: edad)
Multivaluados (ej.: telfonos)
Almacenados o derivados
Ej.: la edad de una persona es casi siempre un atributo derivado
de la fechade nacimiento
Posiblemente nulos
Cuando un atributo se puede dejar en blanco
Claves
Permiten localizar una entidad, son nicos

Relaciones
Tipo de relacin
Ejemplo: es_jefe_de, participar_en_curso
Instancia de relacin
Juan es_jefe_de Pedro
Grado de una relacin
Nmero de entidades que participan
Binario, terciario, etc.
Cardinalidades
Nmero de instancias de cada entidad

Tipos de Relaciones
Clasificacin por Cardinalidad
Relacin Uno a Uno: Cuando un registro de una tabla slo puede
estar relacionado con un nico registro de la otra tabla y viceversa.
En este caso la clave fornea se ubica en alguna de las dos tablas.

Relacin 1:1

Relacin Uno a Muchos: Cuando un registro de una tabla (tabla


secundaria) slo puede estar relacionado con un nico registro de la
otra tabla (tabla principal) y un registro de la tabla principal puede
tener ms de un registro relacionado en la tabla secundaria .En este
caso la clave fornea se ubica en la tabla secundaria.
Relacin 1:N

Relacin Muchos a Muchos: Cuando un registro de una tabla


puede estar relacionado con ms de un registro de la otra tabla y
viceversa. En este caso las dos tablas no pueden estar relacionadas
directamente, se tiene que aadir una tabla entre las dos que incluya
los pares de valores relacionados entre s. La clave de esta tabla se
conforma por la unin de los campos claves de las tablas que
relaciona

Relacin M:N

Clasificacin por Modalidad


Dadas las tablas A y B, que se encuentran relacionadas:
Si para todo registro de A debe existir siempre al menos un registro
de B asociado, se dice que la relacin en sentido A->B es
Obligatoria.

Si para todo registro de A, pueden existir o no, uno o varios registros de


B asociados, se dice que la relacin en sentido A->B es Optativa.

La modalidad de las relaciones se debe analizar en ambos sentidos.

Ejercicio
Hacer un modelo Entidad-Relacin para la siguiente situacin:
Tenemos una universidad, en la que hay varios cursos. Cada curso est
dirigido por un profesor, el cual puede dirigir varios cursos.Los cursos
son subvencionados, por lo que slo que un alumno se matricule de un
curso.

SOLUCIN TABLAS

OPERACIONES DEL DER

Para ampliar la capacidad semntica del DER se introduce en este diagrama


algunas operaciones adicionales

Generalizacin/Especializacin
Generalizacin: Varios conjuntos de entidades se sintetizan (se generalizan)
en un conjunto de entidades de nivel ms alto basado en caractersticas
comunes
Especializacin: Un conjunto de entidades puede incluir subgrupos de
entidades que se diferencien (se especializan) de alguna forma de las otras
entidades del conjunto.

Para identificar a una entidad dentro de la generalizacin es necesario un


nuevo atributo con el tipo de entidad que nos permite identificar a la entidad.

Agregacin
La agregacin es una abstraccin a travs de la cual las relaciones se tratan
como entidades de nivel ms alto. Permiten establecer relaciones entre
relaciones.

EJERCICIO
Realice el DER de las siguientes situaciones e identifique el grado con el que
participan las entidades en las relaciones:

Se desea controlar la actividad que realizan los profesionales en un


centro de educacin superior. De cada profesional se conoce su
nmero de identidad, nombre, sexo titulo y ao de graduacin. Un
profesional puede laborar como investigador o como docente para
cada investigador se conoce adems su categora
investigativa(investigador principal, agregado, auxiliar etc.) el ao en
la que lo obtuvo y el centro de investigacin en el que labora, por
otra parte para cada docente se conoce tambin su categora docente
(instructor, asistente, auxiliar y titular), la facultad, el departamento
y los aos de experiencia. En el centro se desarrollan varias
disciplinas matemticas, fsica, bases de datos etc. de cada disciplina
se sabe su cdigo, su nombre, y la cantidad de asignaturas que la
componen. En el centro tambin se desarrollan varias especialidades
(informtica electrnica, arquitectura). De cada especialidad se
conoce su cdigo, su facultad a la que pertenece. Una disciplina se
imparte en varias especialidades y en una especialidad se imparte
diferentes disciplinas, formando una disciplina y una especialidad un
perfil. Para cada perfil se conoce la cantidad de horas de clase y los
objetivos a alcanzar. Un docente imparte clases en diferentes
perfiles y en un perfil imparte clases muchos docentes. Se sabe la
cantidad de clases prcticas y de conferencias que imparte un
docente en un perfil. Un investigador realiza su labor vinculado a una
disciplina pero existen muchos investigadores que realizan su labor
vinculados a la misma disciplina.

En el Hospital XYZ se desea controlar la actividad asistencial que se


brinda en las consultas del Cuerpo de Guardia. En el cuerpo de
guardia brindan sus servicios los mdicos organizados en equipos. A
un equipo pertenecen varios mdicos y un mdico pertenece a un
equipo. De cada equipo se conoce su cdigo que lo identifica, el
nombre del jefe del equipo y la cantidad de mdicos que lo forman.
De cada mdico se conoce nmero de identidad, nombre,
especialidad y categora. Los pacientes que llegan al cuerpo de
guardia pueden ser atendidos por varios mdicos (si sus sntomas
indican la necesidad de que varios mdicos especialistas lo asistan) y
un mdico atiende a muchos pacientes. De cada paciente se sabe su
nmero de identidad, nombre, edad, sexo y ocupacin. Se sabe el
tiempo dedicado por el mdico a la atencin de un determinado
paciente as como el diagnstico que le hizo y el tratamiento que le
indic. Los mdico en el cuerpo de guardia, pueden utilizar en su
labor asistencial diferentes medios de diagnstico (rayos x, anlisis,
etc) y un medio de diagnstico pude ser empleado por muchos
mdicos. De cada medio de diagnstico se conoce su cdigo que lo
identifica, su descripcin y el costo por unidad. Para cada medio se
conoce la cantidad de veces que ha ordenado la aplicacin de un
medio de diagnstico dado. En el cuerpo de guardia adems se enva
informacin de los pacientes a los consultorios del mdico de la
familia correspondiente a cada uno. De cada consultorio se conoce
su nmero y el nmero del policlnico al que pertenece ( en cada
policlnico se numeran 1, 2, ) por lo que por ejemplo, en el policlnico
Santos Surez existen los consultorios 1, 2, 3, etc y lo mismo ocurre
en el policlnico 10 de Octubre y as sucesivamente, el mdico de la
familia correspondiente y la direccin del consultorio. Un consultorio
atiende a muchos pacientes pero a un paciente le corresponde un
solo consultorio.

Ejercicios del DER: Del diagrama que se muestra a continuacin


determinar las tabla que representes esta situacin
En un hospital se desea controlar la atencin que se brinda a sus
pacientes en consulta, de cada paciente se conoce su nmero de
identidad, su nombre, edad y el sexo.
Un paciente puede requerir atencin mdica de varias especialidades.
En una especialidad un paciente es atendido slo por un mdico aunque
un mdico atiende a muchos pacientes. Un mdico pertenece solo a
una especialidad aunque en una especialidad laboran muchos mdicos.
De cada especialidad se tiene el cdigo, la descripcin, y la cantidad de
mdicos de esa especialidad que atienden las consultas. De cada
mdico se sabe su nmero de identidad, su nombre, el ao de
graduacin y el grado que tiene como mdico.

Para el control de las escuelas primarias en una provincia del pas se


tiene la siguiente informacin.
De cada escuela su nmero, nombre, direccin. De cada aula su
nmero, cantidad de pupitres y el piso donde se encuentra. De cada
grupo de clases su identificador, el grado escolar y la cantidad de
alumnos que tiene. De cada maestro su cdula de identidad, su
nombre, sexo y fecha de nacimiento.
Una escuela tiene muchas aulas y muchos grupos de clase pero cada
aula pertenece a una escuela y al mismo sucede con cada grupo. Un
grupo siempre recibe clase en la misma aula y una aula pertenece asolo
a un grupo.
En un grupo imparte clases un maestro y este solo imparte clase en un
grupo. En cada grupo hay muchos alumnos pero un alumno forma parte
de un solo grupo.

Se desea disear una base de datos para el control diario de la actividad


del puerto de Guayaquil. En el puerto se encuentran atracados varios
buques. De cada buque se conoces su cdigo, que lo identifica, su
nombre y calado. El puerto cuenta con varios muelles. Cada muelle se
identifica con un cdigo y tiene un nombre y cantidad de espigones.
Un buque puede haber atracado en diferentes muelles y viceversa. Para
cada buque que atraca en un muelle se conoce el tiempo de estancia y
la cantidad de toneladas estibadas.
En el puerto trabajan varias brigadas de estibadores. De cada brigada se
conoce su nmero, que lo identifica, nombre del jefe y cantidad de
hombres. Un buque atracado en un muelle es estibado por varias
brigadas y una brigada realiza la estiba de un buque atracado en un
muelle. Se conoce el tiempo dedicado a la estiba hecha por una brigada
a un buque que est en un muelle.
En el puerto trabajan varios agentes de los cuales se conoce su nmero
de identidad, nombre, y categora. Un agente puede atender a varios
buques y un buque es atendido siempre por un mismo agente,
independientemente del muelle donde es atracado. De cada agente se
conoce su nmero de identidad, nombre y categora.

En una empresa de medicamentos se desea controlar la produccin de


sus medicinas. Cada medicamento posee un cdigo y un nombre y
estos pueden ser producidos en diferentes formas farmacuticas
(tabletas, jarabes, etc). Para cada forma farmacutica se conoce su
cdigo y una descripcin. En la produccin de un medicamento en una
forma farmacutica se llama producto y se conoce el plan a seguir y el
costo de produccin del producto. En cada producto se usan diferentes
materias primas y se conoce la cantidad en la que intervienen estas
materias. De cada materia prima se conoce su cdigo, nombre, unidad
de medida y el precio. As mismo existe una relacin entre producto y
lote de cada lote se conoce la fecha de produccin, la fecha de
caducidad, cantidad producida y el cdigo de lote. Un producto puede
pertenecer a muchos lotes pero en el mismo lote no puede haber ms
de una vez el mismo producto. Un medicamento puede ser diseado de
varias formas farmacuticas y viceversa.

En una empresa de la industria textil se fabrican distintos tipos de


prendas para cada una se conoce su cdigo, nombre, tipo, color, sobre
cada prenda se realizan distintas operaciones, cortes y confeccin,
acerca de los cuales se conoce su cdigo, y nombre. Una operacin se
aplica a diferentes piezas, adems en su proceso de fabricacin una
pieza pasa por diferentes equipos que pueden realizar diferentes
operaciones sobre diferentes piezas y una operacin puede ser realizada
en diferentes equipos.
De cada equipo se noche su nombre, modelo, y cdigo, una operacin
realizadas sobre una pieza en un equipo dado constituye una norma que
se identifica por un cdigo y tiene asociada una descripcin y un tiempo
de ejecucin.
En la empresa trabaja dos tipos de obreros directos y auxiliares, un
obrero directo est vinculado con el cumplimiento de diferentes normas
y una norma puede ser aplicada a distintos obreros directos. Un obrero
directo cumple una norma dada en un determinado porcentaje. Un
obrero auxiliar realiza el mantenimiento de diferentes equipos y un
equipo dad siempre es atendido por un mismo obrero auxiliar. Para
cada equipo atendido por un obrero auxiliar dado se conoce el tipo de
mantenimiento efectuado y la ltima fecha en que sea realizo. Todos los
obreros estn caracterizados por un nmero, un nombre codificacin y
una categora (la categora es de directo o auxiliar)

En una empresa de talabartera se desea controlar la distribucin de los


objetos decorativos que se producen para la posterior utilizacin de los
centros culturales del pas. En la confeccin de los objetos decorativos
se utilizan diferentes materiales y tientes y se aplican diferentes
diseos. De cada diseo se sabe su cdigo, que lo identifica, su
descripcin, unidad de medida y su costo unitario. Con el diseo se
pueden aplicar diferentes materiales y tintes. De cada tiente se conoce
su cdigo que lo identifica, su descripcin y composicin qumica. Un
mismo material se puede usar con distintos tintes y para diferentes
diseos. Un mismo tiente puede ser empleado con diversos materiales
para distintos diseos. De este modo se puede decir que un objeto
decorativo est formado por un diseo en el que se aplica ciento
material y determinado tinte. De cada objeto decorativo se conoce su
costo de produccin y la calidad del que tiene. Los objetos decorativos
son enviados a los municipios del ministerio de cultura para que luego
estos los distribuyen a los centros culturales que tienen subordinados un
objeto decorativo puede ser enviado a varios municipios del ministerio
de cultura y a un municipio del ministerio de cultura se envan diferentes
objetos decorativos. Se sabe la cantidad de un objeto decorativo que se
enva a un municipio. De cada centro cultural se conoce su nmero, que
es consecutivo dentro del municipio. Y que puede repetirse para otro
centro cultural en otro municipio, su nombre, tipo y categora. De cada
municipio se conoce su cdigo que lo identifica, su nombre, su direccin
y su telfono.

MODELO RELACIONAL
El modelo relacional para la gestin de una base de datos es un modelo de
datos basado en la lgica de predicados y en la teora de conjuntos. Es el
modelo ms utilizado en la actualidad para modelar problemas reales y
administrar datos dinmicamente.

En este modelo todos los datos son almacenados en relaciones, y como cada
relacin es un conjunto de datos, el orden en el que stos se almacenen no
tiene relevancia (a diferencia de otros modelos como el jerrquico y el de red).
Esto tiene la considerable ventaja de que es ms fcil de entender y de utilizar
por un usuario no experto. La informacin puede ser recuperada o almacenada
por medio de consultas que ofrecen una amplia flexibilidad y poder para
administrar la informacin.

Este modelo considera la base de datos como una coleccin de relaciones. De


manera simple, una relacin representa una tabla que no es ms que un
conjunto de filas, cada fila es un conjunto de campos y cada campo representa
un valor que interpretado describe el mundo real. Cada fila tambin se puede
denominar tupla o registro y a cada columna tambin se le puede llamar
campo o atributo.

ELEMENTOS DEL MODELO ENTIDAD RELACIN (E/R)


Tabla: El modelo relacional proporciona una manera simple de
representar los datos: una tabla bidimensional llamada relacin.
Ttulo Ao Duracin Tipo
Star
1977 124 color
Wars
Mighty
1991 104 color
Ducks
Wayne's
1992 95 color
World
Relacin Pelculas

La relacin Pelculas tiene la intencin de manejar la informacin de las


instancias en la entidad Pelculas, cada rengln corresponde a una
entidad pelcula y cada columna corresponde a uno de los atributos de la
entidad. Sin embargo las relaciones pueden representar ms que
entidades, como se explicar ms adelante.

Atributos: Los atributos son las columnas de una relacin y


describen caractersticas particulares de ella.

Esquemas: Es el nombre que se le da a una relacin y el conjunto


de atributos en ella.
Pelculas (ttulo, ao, duracin, tipo)

En un modelo relacin, un diseo consiste de uno o ms esquemas, a


este conjunto se le conoce como "esquema relacional de base de datos"
(relational database schema) o simplemente "esquema de base de
datos" (database schema)
Tuplas: Cada uno de los renglones en una relacin conteniendo
valores para cada uno de los atributos.
(Star Wars, 1977, 124, color)

Dominios: Se debe considerar que cada atributo (columna) debe ser


atmico, es decir, que no sea divisible, no se puede pensar en un
atributo como un "registro" o "estructura" de datos.

Entidad: Cosa, sustantivo.


Atributo: Caracterstica de una entidad
Dominio: Conjunto de valores permitidos para un atributo
Valor Null: Valor inexistente. Cualquier atributo puede tomarlo

CLAVES
Superclave: Conjunto de atributos cuya combinacin es nica para un
tipo de entidad. Por ejemplo, el conjunto total de atributos de un tipo de
entidad es una superclave(trivial).
Clave: Una superclave mnima, tambin llamada clave candidata
Clave primaria: Una clave que se designa como primaria para un tipo
de entidad

RESTRICCIONES DEL MODELO RELACIONAL


No pueden aparecer dos filas iguales en la misma tabla
Los atributos que conforman la clave del modelo no pueden tomar
valores nulos o desconocidos

TRANSICIN DEL DER A LAS TABLAS RELACIONALES


Para pasar a tablas todos los datos sin dejarnos nada y que las tablas tengan
sentido por si solas tenemos que seguir unos pasos:

Toda entidad se transforma en una tabla


Todo atributo se transforma en una columna dentro de la tabla a la que
pertenece
El identificador de la entidad se convierte en la clave primaria de la tabla
Si la cardinalidad de las tablas es (1,1) se pasa la clave de cualquiera de
ellas a la otra.

TABLAS:
ENTIDAD12(A, B, C, D) o puede ser ENTIDAD12 (C, D, A, B)

En las relaciones 1:N la clave primaria de la entidad con cardinalidad 1


pasa a la tabla de la entidad cuya cardinalidad es N
TABLAS:
ENTIDAD1(A, B)
ENTIDAD2 (C, D, A)

Toda relacin N:M se convierte en una tabla que tendr como clave
primaria las dos claves primarias de las entidades que se asocian

TABLAS:
ENTIDAD1(A, B)
ENTIDAD2 (C, D)
ENTIDAD12(A, C, E, F)

Para entidades generalizadas

TABLAS:
ENTIDAD3(F, G, H )

Para entidades especializadas

TABLAS:
ENTIDAD1(F, A, B)
ENTIDAD2(F, C, D)

Para entidades agregadas

TABLAS:
ENTIDAD3(E, F, G, A,C)
ENTIDAD1(A, B, C) // hereda c por ser del extremo 1
ENTIDAD2(C, D)

Para entidades dbiles


Dependen de una relacin con otra entidad para identificarse
Tienen participacin total en esta relacin
Esta relacin es 1-1 1-n(n por el lado de la entidad dbil)
No tienen sentido sin la entidad de la que dependen
Tienen una clave parcial
La clave de la entidad identificadora ms la clave parcial es
una clave de la entidad dbil

TABLAS:
ENTIDAD1(A, B)
ENTIDAD1(A, C, D)

Transferir el siguiente diagrama ER al Modelo Relacional teniendo en cuenta la


cardinalidad de las relaciones

TABLAS
Escuela (NUME, NOM, DIRECC)
Aula (NUMA, CANTPUP, PISO, NUME)
Alumno (NUMAL, NOMBRE, FECHA_NACI, SEXO, NUM_IDEN)
Grupo_Maestro(NUM_IDEN, NOMBRE_MA, SEXO_MA,
AO_DE_GRAD, NUMG, CANT_ALUM, GRADOGRU, NUME)

ALGEBRA RELACIONAL
El modelo relacional es un modelo de datos y, como tal, tiene en cuenta los
tres aspectos siguientes de los datos:
La estructura, que debe permitir representar la informacin que
nos interesa del mundo real.
La manipulacin, a la que da apoyo mediante las operaciones de
actualizacin y consulta de los datos.
La integridad, que es facilitada mediante el establecimiento de
reglas de integridad; es decir, condiciones que los datos deben
cumplir.

El lgebra relacional es un conjunto de operaciones simples sobre tablas


relacionales, a partir de las cuales se definen operaciones ms complejas
mediante composicin. Definen, por tanto, un pequeo lenguaje de
manipulacin de datos.

El elemento fundamental del modelo relacional de bases de datos es la tabla


relacional. Una tabla relacional es una representacin extensional de una
relacin definida sobre un cierto dominio. As, son ejemplos de tablas:

Puede asistir Asistencia Da clase en


ALUMNO GRUPO ALUMNO PROFESOR PROFESOR GRUPO
Ignacio 319-M Ignacio D. Plaza D. Plaza 319-M
Ignacio 327-M Omar D. Pea D. Murillo 327-M
Gonzalo 244_T Gonzalo D. Plaza D. Murillo 344-T
Omar 333_M Omar D. Murillo D. Pea 333-M

Cuyos dominios son, respectivamente: puede_asistir: ALUMNO-GRUPO,


Asistencia: ALUMNO-PROFESOR, y da_clase_en: PROFESOR-GRUPO.

Se llama tupla a cada fila de una tabla, y es por supuesto un elemento del
producto cartesiano de los dominios que dan nombre a las columnas
(atributos).

OPERACIONES BSICAS
Las siguientes son operaciones bsicas:
Seleccionar
Proyectar
Unir
Diferencia (de conjuntos)
Producto cartesiano

Los operadores toman una o ms relaciones como entrada y proporcionan una


nueva relacin como salida.

Seleccionar
Podemos ver la seleccin como una operacin que sirve para elegir algunas
tuplas de una relacin y eliminar el resto. Ms concretamente, la seleccin es
una operacin que, a partir de una relacin, obtiene una nueva relacin
formada por todas las tuplas de la relacin de partida que cumplen una
condicin de seleccin especificada.

La seleccin es una operacin unaria. Siendo C una condicin de seleccin, la


seleccin de T con la condicin C se indica como T(C).

Proyectar
Podemos considerar la proyeccin como una operacin que sirve para elegir
algunos atributos de una relacin y eliminar el resto. Ms concretamente, la
proyeccin es una operacin que, a partir de una relacin, obtiene una
nueva relacin formada por todas las (sub)tuplas de la relacin de partida
que resultan de eliminar unos atributos especificados.

La proyeccin es una operacin unaria. Siendo {Ai, Aj, ..., Ak} un


subconjunto de los atributos del esquema de la relacin T, la proyeccin de
T sobre {Ai, Aj, ..., Ak} se indica como T[Ai, Aj, ..., Ak].
Unir
La unin es una operacin que, a partir de dos relaciones, obtiene una
nueva relacin formada por todas las tuplas que estn en alguna de las
relaciones de partida.

La unin es una operacin binaria, y la unin de dos relaciones T y S se


indica T S.

Diferencia (de conjuntos)


La diferencia es una operacin que, a partir de dos relaciones, obtiene una
nueva relacin formada por todas las tuplas que estn en la primera
relacin y, en cambio, no estn en la segunda. La diferencia es una
operacin binaria, y la diferencia entre las relaciones T y S se indica como
TS.
Producto cartesiano
El producto cartesiano es una operacin que, a partir de dos relaciones,
obtiene una nueva relacin formada por todas las tuplas que resultan de
concatenar tuplas de la primera relacin con tuplas de la segunda.

El producto cartesiano es una operacin binaria. Siendo T y S dos relaciones


que cumplen que sus esquemas no tienen ningn nombre de atributo
comn, el producto cartesiano de T y S se indica como T S.

OPERACIONES DERIVADAS
Las siguientes operaciones no aaden ninguna funcionalidad nueva pero
facilitan la formacin de preguntas a la base de datos.
Interseccin de conjuntos
producto natural (natural join)
Divisin

Interseccin de conjuntos
La interseccin es una operacin que, a partir de dos relaciones, obtiene
una nueva relacin formada por las tuplas que pertenecen a las dos
relaciones de partida.

La interseccin es una operacin binaria; la interseccin de dos relaciones


T y S se indica T S.

Producto natural (natural join)


La combinacin es una operacin que, a partir de dos relaciones, obtiene
una nueva relacin formada por todas las tuplas que resultan de
concadenar tuplas de la primera relacin con tuplas de la segunda, y que
cumplen una condicin de combinacin especificada.
Divisin
Adecuada para preguntas que incluyan la fase para todos. Sean las
relaciones r y s con esquemas R y S respectivamente donde
R = (A1, , Am, B1, , Bn)
S = (B1, , Bn)
El resultado de r s es una relacin con el esquema
R S = (A1, , Am)
CALCULO DE PREDICADOS
Unidad mnima de formalizacin: predicados que describen el sujeto
de una oracin o afirmacin.
Cada predicado se modela como relacin sobre un conjunto de
dominios en el universo de las relaciones.
Variables en los predicados representan a cualquier elemento en el
universo de variables y pueden estar cuantificadas.
Afirmaciones compuestas se modelan como conexiones de
afirmaciones atmicas. Las conexiones se realizan a travs de
conectores que modelan preposiciones del lenguaje natural.

El clculo de predicados representa una alternativa al algebra relacional para


manipular los datos su diferencia radica en que el lgebra ofrece una coleccin
de operaciones explicitas que pueden ser usadas para obtener una relacin
deseada a partir de las existentes y el clculo solo ofrece una notacin para
formalizar la definicin de relacin que se desea a partir de la relaciones
existentes. Ejemplo.

Tabla suministrador (SUM)


SNUM SNOM CIUDAD
S1 Salazar Londres
S2 Jaime Pars
S3 Bernal Pars
S4 Corona Londres
S5 Olmedo Londres

Tabla producto (PROD)


PNUM PNOM COLOR PRECIO
P1 Tuercas Negro 0,10
P2 Pernos Verde 0,20
P3 Ganchos Azul 0,20
P4 Ganchos Rojo 0,05
P5 Bujas Azul 0,10
P6 Engranajes Rojo 0,15

Tabla suministroproducto (SP)


SNUM PNUM NUMFAC CANTIDAD
S1 P1 F1 200
S1 P1 F4 700
S2 P2 F1 400
S2 P1 F2 200
S2 P2 F3 200
S2 P3 F4 500
S2 P3 F5 600
S2 P4 F6 400
S2 P5 F7 800
S2 P6 F2 500
S3 P3 F1 200
S3 P4 F2 500
S4 P6 F3 300
S4 P6 F7 300
S5 P2 F2 200
S5 P2 F4 100
S5 P5 F5 500

Queremos obtener el nmero de ciudades de los suministros que suministran


la pieza P2

SUM in[SNUM, ciudad]


Join SP
Seleccionar las tuplas para el cual el cdigo de producto es P2
Proyectar la relacin resultante sobre [SNUM y CANTIDAD]

En el clculo relacional se la relacionara as:


Obtener el nmero y la ciudad de los suministradores tales que exista un
suministrador del producto que suministra el producto P2.

La formulacin del clculo es descriptiva mientras que el lgebra es


prescriptiva en el clculo de predicados se especifica el problema mientras que
el lgebra se indica todo el procedimiento a realizar para resolver el problema
es decir el lgebra es procedural y el clculo es no procedural.

El clculo de predicados es ms parecido al lenguaje natural.


Una de las caractersticas fundamentales del clculo es la de la variable de
tuplas que es una variable que toma valores sobre una relacin. Una variable
de tupla se define de la siguiente manera:

Range of T is X1, X2, .. Xn

Ejemplo:
Range of SX is SUM

Las listas de campos se separan por comas y se pueden usar los conectores
lgicos: And, or y not.

Los cuantificadores existenciales que se usan son:

El formato ser:
Range of T is X1, X2, .. Xn
Lista objetos: predicado

Para control de pago en una empresa productiva se tienen las siguientes tablas
relacionales:
Tabla TRABAJADOR (T)
(NUMEXPETE, NOMBRE, CARGO, DPTO, SUBDIRECCIN, SALARIO)

Tabla AUSENCIAS (A)


(MES, NUMEXPETE, TPERDIDOA, CANTIIMP, TPERDIDOT)
Mediante el clculo relacional obtenga el nombre de los trabajadores, el tiempo
perdido por ausencias y la cantidad de impuntualidades que tienen los
trabajadores del departamento de metales durante el mes de marzo.

RANGE of Tx is T
RANGE of Ax is A

Tx.NOMBRE, Ax.TPERDIDOA, Ax.CANTIIMP: (Tx.DPTO =Metales and


Ax.MES=Marzo and Tx.NUMEXP = Ax.NOMEXP)

TEORA DE NORMALIZACIN
Cuando se disea una base de datos mediante el modelo relacional, al igual
que ocurre en otros modelos de datos, tenemos distintas alternativas, es decir,
podemos obtener diferentes esquemas relacionales y no todos son
equivalentes, ya que algunos van a representar la realidad mejor que otros.

Es necesario conocer qu propiedades debe tener un esquema relacional para


representar adecuadamente una realidad y cules son los problemas que se
pueden derivar de un diseo inadecuado.

La teora de la Normalizacin es un mtodo objetivo y riguroso que se aplica en


el diseo de bases de datos relacionales.

Cuando estudiamos la estructura del modelo relacional, nos dimos cuenta que
la base de datos puede representarse por medio de un conjunto de objetos
(dominios y relaciones) y de un conjunto de reglas de integridad.

El esquema relacional puede obtenerse de dos formas distintas:


Directamente a partir de la observacin de nuestro universo del
discurso, en donde especificamos conjuntos de atributos, relaciones y
restricciones que corresponden a los observados en el mundo real.
Realizando el proceso de diseo en dos fases, primero el diseo
conceptual (E/R) obteniendo el esquema conceptual y posteriormente
transformar ste a un esquema relacional, siguiendo algunas reglas
generales, que fueron dadas anteriormente.

Algunos problemas que se pueden presentar son:


Incapacidad para almacenar ciertos hechos
Redundancias y por tanto, posibilidad de incoherencias
Ambigedades
Prdida de informacin (aparicin de tuplas espreas)
Prdida de dependencias funcionales, es decir, ciertas restricciones de
integridad que dan lugar a interdependencias entre los datos.
Aparicin en la BD de estados no vlidos, es decir, anomalas de
insercin, borrado y modificacin.

En conclusin el esquema relacional obtenido debe ser analizado para


comprobar que no presenta los problemas anteriores.

La propiedad de las tablas relacionales se puede expresar como que todos los
dominios subyacentes son a su vez simples, de manera informal esto significa
que en cada fila y columna dentro de la tabla debe existir nada ms que un
solo valor y nunca ms de uno, cuando esto se cumple se dice que la relacin
est normalizada por lo tanto de acuerdo con la propiedad de las tablas
relacionales se dice que una tabla relacional est normalizada.

Vamos a suponer que tenemos un formato del siguiente modelo de pedido de


productos:

PEDIDO DE PRODUCTOS
PEDIDO N: 12345
PROVEEDOR N: 7543
NOMBRE PROVEEDOR: J. PEREZ
FECHA: 02 DE MAYO DEL 2013 CIUDAD: RIOBAMBA
DESEAMOS NOS ENVIE:
N PRODUCTO DESCRIPCIN PRECIO CANTIDAD TOTAL
969715 TELEVISOR 600 1 600
432018 ANTENA 20 10 200
548409 ENCHUFLES 10 10 100
IMPORTE TOTAL: 900

PEDIDO(Fecha, PedidoN, ProveedorN, NombreProvee, Ciudad,{Nproducto,


Descripcin, Precio, Cantidad, Total}, Importe)

Datos que no se repiten:


P1(PedidoN, Fecha, ProveedorN, NombreProvee, Ciudad, Importe)
P2(PedidoN,Nproducto, Descripcin, Precio, Cantidad, Total)
Tablas:
PROVEEDOR(ProveedorN, NombreProvee, Ciudad)
PRODUCTO(Nproducto, Descripcin, Precio)
P1(PedidoN, Fecha, ProveedorN)
P2(PedidoN,Nproducto, Precio, Cantidad)

PROBLEMAS
Adicin(sobre productos qu an no aparezca un proveedor que lo
solicite)
Eliminacin(se puede eliminar un producto que era nico en todos los
pedidos se pierde esa informacin)
Modificacin(cada lnea tiene varios campos de un producto y si se
cambia alguno se debe de cambiar en todos los pedidos donde haya ese
producto)

DEPENDENCIAS FUNCIONALES
Sean R una tabla relacional y X1; : : : ; Xk e Y campos de R.
Diremos que Y depende funcionalmente de X1; : : : ;Xk si al fijar un valor de
los campos X1 : : : ;Xk, se fija tambin el valor que puede tomar el campo Y en
la tabla R.
Lo escribiremos: X -> Y .
X = determinante o implicante
Y = campo implicado

EJEMPLO:

Para cada SNUM le a corresponder uno y solo uno SNOM y CIUDAD

SNUM -> SNOM


SNUM -> CIUDAD
O
SNUM -> SNOM, CIUDAD

DEPENDENCIA FUNCIONAL COMPLETA


El atributo y dependencia funcional y completamente del atributo X si es
funcionalmente dependiente de X y no es funcionalmente dependiente de algn
subconjunto de X

EJEMPLO:
SP(NUMS, CIUDAD, NDTO, CANT)
SP(NUMS,NDTO) -> CANT
Hay dependencia funcional completa
EJEMPLO:
SP(NUMS, NDTO) -> CIUDAD
NUMS -> CIUDAD
No hay dependencia funcional completa CIUDAD solo depende de NUMS

DIAGRAMA DE DEPENDENCIAS FUNCIONALES(DDF)


Las dependencias funcionales pueden quedar diagramas de la siguiente
manera:

Sea una base de datos para control de trfico para una terminal de buses. En
la terminal salen varias rutas para cada una se conoce nmero de ruta, punto
de destino, cantidad de kilmetros que recorre, cada ruta efecta varios viajes
diarios, para cada viaje se conoce nmero de ruta que realiza, hora de salida,
nmero del chofer que realiza, hora de llegada. De cada chofer se conoce su
nmero, edad, nombre, y aos de servicio.

Determinar:
Determine las dependencias funcionales
Represente el diagrama de dependencias funcionales

Rutas
NumRuta -> PuntoDestino, CantKm

Viaje
NumRuta, NumChofer -> HoraSalida, HoraLlegada

Chofer
NumChofer -> Nombre, Edad, AosServicio
Ejercicios:
Sea una base de datos sobre una empresa distribuidora de productos
varios la empresa posee un conjunto de almacenes para los cuales se
conoce su cdigo, direccin y capacidad. En cada almacn se tienen en
existencia diferentes productos cada uno en una cierta cantidad y un
producto puede encontrarse en varios almacenes. De cada producto se
conoce su cdigo, descripcin, dimensin y modelo. Cada producto que
posee dimensiones determinadas se corresponde con el mismo modelo
independientemente del producto que sea.
Determinar:
Determine las dependencias funcionales
Represente el diagrama de dependencias funcionales

En una empresa se desea confeccionar el rol de pago de los trabajadores


en una forma automatizada. Para ello se tiene la siguiente informacin
para cada trabajador se tiene el nmero del expediente laboral, el
nombre, cargo que ocupa, el departamento que pertenece y la
subdireccin y el salario que recibe. Mensualmente para cada
trabajador se recopila lo siguiente: cantidad de ausencias al mes, tiempo
perdido por concepto de ausencias, cantidad de impuntualidades en el
mes, tiempo perdido por impuntualidades. Un trabajador pertenece a
un departamento y un departamento a una subdireccin, una
subdireccin tiene varios departamento y un departamento tiene varios
trabajadores
Determinar:
Determine las dependencias funcionales
Represente el diagrama de dependencias funcionales

1 Forma Normal
Una relacin es primera forma normal si y solo si sus tuplas (filas) contienen
valores atmicos, es decir, no contienen valores que a su vez sean conjuntos.
En resumen, que todos los atributos (columnas) deben tener todos sus valores,
o lo que es lo mismo, no debe haber celdas en blanco.

Ejemplo de relacin que no cumple la primera forma normal

S# P# QTY
s1 p1 300
p2 200
p3 400
s2 p1 200
p2 100

Ejemplo de relacin que si cumple la primera forma normal


S# P# QTY
s1 p1 300
s1 p2 200
s1 p3 400
s2 p1 200
s2 p2 100

EJEMPLO:

ANOMALIAS

Por la insercin: no se puede adicionar el suministrador en su ciudad


hasta que se suministre al menos un producto
Por la eliminacin: si se elimina un suministrador que es el nico en una
terminada ciudad que es nica se eliminara tambin la situacin
Con la modificacin: si un proveedor se cambia de ciudad es necesario
cambiar todas las tuplas donde aparece este suministrador, lo mismo
pasa con la situacin de una ciudad cuando cambia

2da Forma Normal


Una relacin est en segunda forma normal si y solo si:
Es primera forma normal.
Cualquier atributo (columna) no perteneciente a una clave (primaria o
extranjera) tiene dependencia funcional total de la clave primaria, es
decir, que a cada valor de dicho atributo solo le corresponde un valor de
la clave primaria.

Ejemplo de relacin que no cumple la segunda forma normal:

En segunda forma normal:

A,B ->C
A->D

R1(A,B,C)
R2(A, D)

3 Forma Normal
Una relacin est en tercera forma normal si y solo si:
Es segunda forma normal.
Los atributos (columna) no pertenecientes a una clave (primaria o
extranjera) son mutuamente independientes funcionalmente.

Ejemplo:
SUM(SNUM, SNOM, CIUDAD, SITUACION)

SNUM -> SNOM, CIUDAD, SITUACIN


CIUDAD -> SITUACIN
Las tablas quedan como:

R1(SNUM, SNOM,CIUDAD)
R2(CIUDAD, SITUACIN)

FORMA NORMAL DE BOYCE CODD


Es ms fuerte que la 3FN.
Ocurre cuando existen claves candidatas que se solapan.
Las relaciones en 3FN pueden tener todava anomalas de actualizacin

EJEMPLO.
R(CIUDAD, CALLE, CODPOSTAL)

El problema se reduce:
R1(CODPOSTAL, CIUDAD)
R2(CALLE, CODPOSTAL)

4 Forma Normal
Una relacin es cuarta forma normal si y solo si:
Es forma normal de BCNF.
Para toda la dependencia multivalor todos los atributos (columna)
distintos de A dependen funcionalmente de A, es decir, A es clave.

Es decir, si la relacin es BCNF y las nicas dependencias multivalor permitidas


son las definidas sobre las claves candidatas, entonces se cumple.

Dependencias multivalor
Tambin pueden aparecer dependencias multivalor, caso aplicable
exclusivamente a relaciones con al menos tres atributos.
Se dice que en una relacin con atributos A, B y C (estos atributos
tambin pueden ser compuestos) existe dependencia multivalor entre
los atributos A y B cuando tomada cualquier pareja de valores A, C de la
relacin el conjunto de valores de B que acompaan a esa pareja en
cualquier tupla (columna) de la relacin solo depende funcionalmente
del valor de A y no depende funcionalmente del valor de C.
Esta dependencia se representa: A -> B|C
Ejemplo de dependencia multivalor:

Asignatura Profesor Leccin


Fsica Lpez Mecnica
Fsica Lpez ptica
Fsica Martn Mecnica
Fsica Martn ptica
Fsica Moral Mecnica
Fsica Moral ptica
Matemticas Antn lgebra
Matemticas Antn Geometra

Asignatura --> profesor|leccin


Asignatura -/-> profesor|leccin

5 Forma Normal
Una relacin es quinta forma normal si y solo si:
Cada dependencia de JOIN que exista en dicha relacin est implicada
exclusivamente por claves candidatas.

Dependencias de JOIN
En ocasiones, no nos basta con realizar la descomposicin de una
relacin y unirla mediante un JOIN para recomponerla, sino que es
necesario descomponerla en tres o ms relaciones.
Existe entonces la llamada independencia de JOIN, en la cual sean X, Y,
... Z un subconjunto del conjunto de atributos de una relacin R.
Se dice que la relacin satisface la dependencia de JOIN si y solo si la
relacin R queda recompuesta a su estado original efectuando el JOIN
de las relaciones obtenidas proyectando R en X, Y... Z respectivamente.
Por ejemplo: descomponemos la relacin SPJ en tres relaciones:

SPJ
s# p# j#
s1 p1 j2
s1 p2 j1
s2 p1 j1
s1 p1 j1
SP PJ JS
s# p# p# j# j# s#
s1 p1 p1 j2 j2 s1
s1 p2 p2 j1 j1 s1
s2 p1 p1 j1 j1 s2

Si hacemos un JOIN sobre p# entre la tabla SP y la PJ obtenemos la siguiente


tabla:

s# p# j#
s1 p1 j2
s1 p1 j1
s1 p2 j1
s2 p1 j2
s2 p1 j1

Si con esta tabla realizamos un JOIN con JS sobre j#,s# volveremos a la tabla
original:

SPJ
s# p# j#
s1 p1 j2
s1 p2 j1
s2 p1 j1
s1 p1 j1

Consejos para obtener relaciones normalizadas


Es aconsejable...
Que todas las relaciones sean de la 1 forma normal.
Tomar las proyecciones (columnas) que aseguren la eliminacin de las
dependencias funcionales en las que los determinantes no sean al
mismo tiempo claves candidatas, es decir, obtencin de relaciones
BCNF.
Tomar proyecciones de estas relaciones BCNF que aseguren la
eliminacin de las dependencias multivalor que no se produzcan sobre
claves candidatas. Es decir, obtencin de relaciones 4 forma normal.
Tomar proyecciones de estas relaciones 4 forma normal que aseguren
la eliminacin de las dependencias de JOIN que no estn exclusivamente
involucradas por las claves candidatas.

EJERCICIOS
Se desea disear una base de datos para controlar la disponibilidad
de materiales de construccin. De cada proveedor de materiales se
conocen su cdigo que lo identifica, su nombre, y el municipio en que
radica. De cada material se sabe su cdigo que lo identifica, su
descripcin, la unidad de medida que se aplica al material y el precio
por unidad de medida. Para guardar estos materiales hasta su
posterior distribucin existen diverso almacenes. De cada almacn
se conoce su cdigo que lo identifica, su direccin y la capacidad de
almacenamiento. Un proveedor puede suministrar varios materiales
y un material puede ser suministrado por diferentes proveedores se
sabe que un material suministrado por un proveedor en un almacn
lo almacena en una determinada cantidad. En un almacn se
almacena distintos materiales que pueden proceder de distintos
proveedores y un mismo material puede existir en varios almacenes.
Determinar las dependencias funcionales
Obtenga el diagrama de dependencias funcionales
Normalice hasta la FNBC

En una editora se quiere controlar la actividad de lanzamiento de los


libros que este organismo realiza durante todo el ao. Cada libro tiene
una fecha de lanzamiento y se conoce la cantidad de ejemplares
firmados por cada autor que se le entrega al pblico en su lanzamiento.
Un libro pude ser escrito por varios autores y a su vez un autor lo puede
ser de muchos libros. Cada autor de un libro recibe un derecho de
autor. De cada autor se conoce su nmero de identidad, su nombre
(que puede coincidir con el de otro autor) y el organismo al que
pertenece. De cada libro se conoce su cdigo que la identifica, su ttulo,
y cantidad de pginas. Un libro tiene un ttulo pero un ttulo puede ser
de varios libros.
Determinar las dependencias funcionales
Obtenga el diagrama de dependencias funcionales
Normalice hasta la FNBC

Se desea controlar la participacin de deportistas en eventos deportivos


de cada evento se conoce su cdigo que lo identifica, su descripcin y su
tipo. Un evento se efecta en una fecha dada aunque en una fecha se
puede dar simultneamente varios eventos. Cada evento se realiza en
un pas y en un pas pueden efectuar mltiples eventos. De cada pas se
conoce su cdigo que lo identifica. Un deportista participa en diferentes
eventos a lo largo de su vida pero en una fecha dada solo puede
participar en un solo evento. En un evento participan muchos
deportistas, de cada deportista se conoce nmero de identidad, su
nombre, el deporte que prctica, su peso, y su talla.
Determinar las dependencias funcionales
Obtenga el diagrama de dependencias funcionales
Normalice hasta la FNBC

SQL Introduccin
El SQL es un lenguaje estndar de programacin para el acceso a bases de
datos.
El lenguaje SQL se utiliza para acceder y manipular datos en cualquier base
de datos del mercado, como por ejemplo, para las bases de datos MySQL,
Oracle, DB2, SQL Server, Access.

El SQL es un lenguaje estructurado y un estndar ANSI para el acceso y


manipulacin de los datos de cualquier base de datos.

El SQL se compone de sentencias SQL, cada una con una utilidad diferente,
como por ejemplo:
Creacin de una base de datos (CREATE DATABASE)
Creacin de una tabla (CREATE TABLE)
Creacin de una vista (CREATE VIEW)
Creacin de un ndice de una tabla (CREATE INDEX)
Creacin de procedimientos almacenados (CREATE PROCEDURE)
Creacin de disparadores (CREATE TRIGGER)
Consultar los datos almacenados en una tabla (SELECT)
Insertar datos en una tabla (INSERT)
Modificar datos ya existentes en una tabla (UPDATE)
Borrar datos almacenados en una tabla (DELETE)
Dar permiso de acceso a los datos de una tabla (GRANT)
Eliminar permisos de acceso a datos de una tabla (REVOKE)
Finalizar la transaccin de una sentencia SQL (COMMIT)
Retroceder la transaccin de una sentencia SQL (ROLLBACK).

SQL SINTAXIS
Un sistema de base de datos suele contener varias bases de datos. Cada base
de datos suele contener varias tablas. Las tablas almacenan los datos
organizados por filas. Cada fila contiene varios campos.

Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del
campo, su longitud, tipo de dato que se va a almacenar, etc.

Las sentencias SQL no son sensibles a maysculas y minsculas, es decir,


SELECT y select son dos palabras iguales para SQL.

Algunos sistemas de bases de datos necesitan un punto y coma despus de


cada sentencia SQL para ejecutarse correctamente

CREATE DATATABASE mibasedeatos;

Este punto y coma tambin puede servir para separar una sentencia SQL de
otra sentencia SQL en la misma lnea.

CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1;

Las sentencias SQL se pueden agrupar por funcionalidades:


1.- Lenguaje de definicin de datos (DDL).
DDL est compuesto por sentencias para la creacin (CREATE), modificacin
(ALTER) y borrado (DROP) de los componentes principales de una base de
datos:
Base de datos (DATABASE)
Tablas (TABLE)
Vistas (VIEW)
ndices (INDEX)
Procedimientos almacenados (PROCEDURE)
Disparadores (TRIGGER).

2.- Lenguaje de manipulacin de datos (DML).


DML est compuesto por sentencias que sirven para:
Consultar (SELECT)
Insertar (INSERT)
Modificar (UPDATE)
Borrar (DELETE)

3.- Lenguaje de control de datos (DCL).


DCL est compuesto por sentencias SQL para controlar las funciones de
administracin:
Confirmar la operacin (COMMIT)
Retroceder la operacin (ROLLBACK)
Dar permisos (GRANT)
Quitar permisos (REVOKE)

SQL Select
Una de las sentencias SQL ms importantes es SELECT, ya que permite
realizar consultas sobre los datos almacenados en la base de datos.

Sintaxis SQL SELECT

SELECT * FROM nombretabla


SELECT columna1, columna2 FROM nombretabla

Para los ejemplos, tendremos la siguiente tabla de personas denominada


personas

Estos son los datos almacenados en la tabla personas


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consultar todos los datos de la tabla personas


SELECT * FROM personas

Este ser el resultado:


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consulta todos los nombres y primer apellido de todas las


personas

SELECT nombre, apellido1 FROM personas

Esta ser el resultado:


nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ

SQL DISTINCT
Al realizar una consulta puede ocurrir que existan valores repetidos para
algunas columnas. Por ejemplo

SELECT nombre FROM personas


nombre
ANTONIO
LUIS
ANTONIO

Esto no es un problema, pero a veces queremos que no se repitan, por


ejemplo, si queremos saber los nombre diferentes que hay en la tabla
personas, entonces utilizaremos DISTINCT.

SELECT DISTINCT nombre FROM personas


nombre
ANTONIO
LUIS

SQL WHERE
La clusula WHERE se utiliza para hacer filtros en las consultas, es decir,
seleccionar solamente algunas filas de la tabla que cumplan una determinada
condicin.

El valor de la condicin debe ir entre comillas simples .


Por ejemplo:
Seleccionar las personas cuyo nombre sea ANTONIO

SELECT * FROM personas


WHERE nombre = ANTONIO
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO

SQL AND OR
Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.
El operador AND mostrar los resultados cuando se cumplan las 2 condiciones.

Condicin1 AND condicin2

El operador OR mostrar los resultados cuando se cumpla alguna de las 2


condiciones.

Condicion1 OR condicion2

En la tabla personas
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

La siguiente sentencia (ejemplo AND) dar el siguiente resultado:

SELECT * FROM personas


WHERE nombre = ANTONIO
AND apellido1 = GARCIA

nombre apellido1 apellido2


ANTONIO GARCIA BENITO

La siguiente sentencia (ejemplo OR) dar el siguiente resultado:

SELECT * FROM personas


WHERE nombre = ANTONIO
OR apellido1 = GARCIA

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO

Tambin se pueden combinar AND y OR, como el siguiente ejemplo:

SELECT * FROM personas


WHERE nombre = ANTONIO
AND (apellido1 = GARCIA OR apellido1 = LOPEZ)

nombre apellido1 apellido2


ANTONIO GARCIA BENITO

SQL ORDER BY
ORDER BY se utiliza para ordenar los resultados de una consulta, segn el
valor de la columna especificada.

Por defecto, se ordena de forma ascendente (ASC) segn los valores de la


columna. Si se quiere ordenar por orden descendente se utiliza la palabra DES

SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC

Por ejemplo, en la tabla personas:


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

SELECT nombre, apellido1


FROM personas
ORDER BY apellido1 ASC

Esta es la consulta resultante:


nombre apellido1
LUIS LOPEZ
ANTONIO GARCIA
ANTONIO PEREZ

Ejemplo de ordenacin descendiente (DES)

SELECT nombre, apellido1


FROM personas
ORDER BY apellido1 DESC

Esta es la consulta resultante:


nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ

SQL INSERT
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla. Es
posible insertar una nueva fila en una tabla de dos formas distintas:

INSERT INTO nombre_tabla


VALUES (valor1, valor2, valor3, )
INSERT INTO nombre_tabla (columna1, columna2, columna3,)
VALUES (valor1, valor2, valor3, )

Ejemplo:
Dada la siguiente tabla personas:
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer


con cualquiera de las dos sentencias siguientes:

INSERT INTO personas


VALUES (PEDRO, RUIZ, GONZALEZ)
INSERT INTO personas (nombre, apellido1, apellido2)
VALUES (PEDRO, RUIZ, GONZALEZ)

Cualquiera de estas sentencias anteriores produce que se inserte una nueva


fila en la tabla personas, quedando as dicha tabla:
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

SQL UPDATE
La sentencia UPDATE se utiliza para modificar valores en una tabla. La sintaxis
de SQL UPDATE es:

UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3

La clusula SET establece los nuevos valores para las columnas indicadas. La
clusula WHERE sirve para seleccionar las filas que queremos modificar.

Ojo: Si omitimos la clusula WHERE, por defecto, modificar los valores en


todas las filas de la tabla.

Ejemplo del uso de SQL UPDATE


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

Si queremos cambiar el apellido2 BENITO por RODRIGUEZ ejecutaremos:


UPDATE personas
SET apellido2 = RODRIGUEZ
WHERE nombre = ANTONIO
AND apellido1 = GARCIA
AND apellido2 = BENITO

Ahora la tabla personas quedar as:


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

SQL DELETE
La sentencia DELETE sirve para borrar filas de una tabla. La sintaxis de SQL
DELETE es:

DELETE FROM nombre_tabla


WHERE nombre_columna = valor

Si queremos borrar todos los registros o filas de una tabla, se utiliza la


sentencia:

DELETE * FROM nombre_tabla;

Ejemplo de SQL DELETE para borrar una fila de la tabla personas:


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Si queremos borrar a la persona LUIS LOPEZ PEREZ, podemos ejecutar el


comando:

DELETE FROM personas


WHERE nombre = LUIS
AND apellido1 = LOPEZ
AND apellido2 = PEREZ

La tabla personas resultante ser:


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

SQL LIKE
El operador LIKE se utiliza en la clusula WHERE para buscar por un patrn.
Sintaxis de SQL LIKE

SELECT columna(s) FROM tabla WHERE columna LIKE %patron%

Ejemplos del uso de SQL LIKE

Dada la siguiente tabla personas:


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Si quiero seleccionar los nombres que empiezan por AN en la tabla personas,


ejecutara el comando siguiente:

SELECT * FROM personas


WHERE nombre LIKE AN%

El character % es un comodn, que sirve para uno o ms caracteres.

Este es el resultado

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ

Otro ejemplo de SQL LIKE

Para seleccionar las personas que tienen un Z en su apellido1, ejecutaramos:

SELECT * FROM personas


WHERE apellido1 LIKE %Z%

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ

SQL WILDCARDS
Los caracteres Wildcards (comodines) son caracteres especiales que se utilizan
para realizar bsquedas especiales, como por ejemplo, buscar palabras que
empiecen por una letra determinada (letra%) o que contengan la letra a
(%a%), o que contengan alguna vocal ([aeiou]), etc.

Los caracteres Wildcards se utilizan con el operador SQL LIKE en una sentencia
SELECT.Los caracteres Wildcards son :

% sustituye a cero o ms caracteres


_ sustituye a 1 carcter cualquiera
[lista] sustituye a cualquier carcter de la lista
sustituye a cualquier carcter excepto los caracteres de la
[^lista] o [!lista]
lista

Ejemplos:

Dada la siguiente tabla personas


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Ejemplos Wildcards

Seleccionar las personas cuyo nombre contenga una R

SELECT * FROM personas


WHERE nombre LIKE %R%

Resultado:
nombre apellido1 apellido2
PEDRO RUIZ GONZALEZ

Seleccionar las personas cuyo apellido1 empiece por GA

SELECT * FROM personas


WHERE apellido1 LIKE PE_EZ

Resultado:
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ

Seleccionar las personas cuyo apellido1 empiece por P o G

SELECT * FROM personas


WHERE apellido1 LIKE [PG]%

Resultado:
nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ

SQL IN
El operador IN permite seleccionar mltiples valores en una clusula WHERE.
Sintaxis SQL IN
SELECT columna
FROM tabla
WHERE columna
IN (valor1, valor2, valor3, )

Ejemplo SQL IN

Dada la siguiente tabla personas


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Queremos seleccionar a las personas cuyo apellido1 sea PEREZ o RUIZ

SELECT * FROM personas


WHERE apellido1
IN (PEREZ,RUIZ)

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ

SQL BETWEEN
El operador BETWEEN se utiliza en la clusula WHERE para seleccionar valores
entre un rango de datos.

Sintaxis de SQL BETWEEN

SELECT columna
FROM tabla WHERE columna
BETWEEN valor1 AND valor2

Ejemplo de SQL BETWEEN

Dada la siguiente tabla personas


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Seleccionar personas cuyo apellido1 est entre FERNANDEZ y HUERTAS

SELECT *
FROM personas
WHERE apellido1
BETWEEN FERNANDEZ AND HUERTAS
nombre apellido1 apellido2
ANTONIO GARCIA RODRIGUEZ

Seleccionar personas cuyo apellido1 no est entre FERNANDEZ y HUERTAS

SELECT *
FROM personas
WHERE apellido1
NOT BETWEEN FERNANDEZ AND HUERTAS

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ

SQL ALIAS
Un alias, es otra forma de llamar a una tabla o a una columna, y se utiliza para
simplificar las sentencias SQL cuando los nombre de tablas o columnas son
largos o complicados. Sintaxis SQL ALIAS para una tabla:

SELECT columna
FROM nombretabla
AS aliastabla

Sintaxis SQL ALIAS para una columna

SELECT nombrecolumna
AS aliascolumna
FROM tabla

Ejemplos SQL ALIAS

Dada la siguiente tabla personas


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Utilizamos el alias p para la tabla personas, para simplificar la sentencia


SELECT

SELECT p.apellido1, p.apellido2


FROM personas
AS p
WHERE p.nombre = ANTONIO

apellido1 apellido2
PEREZ GOMEZ
GARCIA RODRIGUEZ
Sin utilizar el alias, la sentencia SELECT quedara un poco ms larga:

SELECT personas.apellido1, personas.apellido2


FROM personas
WHERE personas.nombre = ANTONIO

apellido1 apellido2
PEREZ GOMEZ
GARCIA RODRIGUEZ

SQL UNION
La sentencia SQL UNION es utilizada para acumular los resultados de dos
sentencias SELECT. Las dos sentencias SELECT tienen que tener el mismo
nmero de columnas, con el mismo tipo de dato y en el mismo orden.

Sintaxis SQL UNION

SELECT columna1, columna2 FROM tabla1


UNION
SELECT columna1, columna2 FROM tabla2

Ejemplo SQL UNION

Tabla personas_empresa1
per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ

Tabla personas_empresa2
per nombre apellido1 apellido2
1 JUAN APARICIO TENS
2 ANTONIO GARCIA RODRIGUEZ
3 LUIS LOPEZ VAZQUEZ

SELECT nombre, apellido1 FROM personas_empresa1


UNION
SELECT nombre, apellido1 FROM personas_empresa2

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
PEDRO RUIZ
JUAN APARICIO
LUIS LOPEZ
La persona ANTONIO GARCIA RODRIGUEZ aparecer solo una vez en el
resultado, porque no aparecern las filas repetidas.

SQL UNION ALL


La sentencia SQL UNION ALL es utilizada para acumular los resultados de dos
sentencias SELECT, incluso aparecern las filas que estn repetidas en los
resultados de ambas SELECT.

Las dos sentencias SELECT tienen que tener el mismo nmero de columnas,
con el mismo tipo de dato y en el mismo orden.

Sintaxis SQL UNION

SELECT columna1, columna2 FROM tabla1


UNION ALL
SELECT columna1, columna2 FROM tabla2

Ejemplo SQL UNION ALL

Tabla personas_empresa1
per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ

Tabla personas_empresa2
per nombre apellido1 apellido2
1 JUAN APARICIO TENS
2 ANTONIO GARCIA RODRIGUEZ
3 LUIS LOPEZ VAZQUEZ

SELECT nombre, apellido1 FROM personas_empresa1


UNION ALL
SELECT nombre, apellido1 FROM personas_empresa2

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
PEDRO RUIZ
JUAN APARICIO
ANTONIO GARCIA
LUIS LOPEZ

La persona ANTONIO GARCIA RODRIGUEZ aparecer dos veces, porque est


en los dos resultados de las sentencias SELECT.
SQL SELECT INTO
La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y
copiarlos en otra tabla diferente. Se suele utilizar para hacer una copia de
seguridad (backup) de los datos de una tabla.

Sintaxis SQL SELECT INTO

SELECT * INTO nuevatabla FROM tablaactual

Esta sentencia copiar todos los registros de la tabla tablaactual en la tabla


nuevatabla.

La nueva tabla puede incluso estar en una base de datos diferente

SELECT *
INTO nuevatabla [IN nuevabasedatos]
FROM tablaactual

Si queremos hacer un backup de una tabla en otra

SELECT *
INTO personasBackup
FROM personas

Tambin se pueden seleccionar slo algunas columnas

SELECT columna1, columna2


INTO personasBackup
FROM personas

Tambin se puede incluir una condicin (WHERE)

SELECT *
INTO personasBackup
FROM personas
WHERE nombre = ANTONIO

Se puede utilizar SELECT INTO con JOIN

SELECT personas.nombre, personas.apellido1, departamentos.departamento


INTO personasInformatica
FROM personas INNER JOIN departamentos
ON personas.dep = INFORMATICA

SQL CREATE DATABASE


La sentencia CREATE DATABASE se utiliza para crear bases de datos.
Sintaxis CREATE DATABASE:

CREATE DATABASE nombreBaseDatos

Ejemplo CREATE DATABASE

CREATE DATABASE mibasededatos

SQL CREATE TABLE


La sentencia CREATE TABLE se utiliza para crear una tabla en una base de
datos existente.

Sintaxis CREATE TABLE

CREATE TABLE nombretabla


{
nombrecolumna1 tipodato1,
nombrecolumna2 tipodato2,
nombrecolumna3 tipodato3,
.
}

Ejemplo CREATE TABLE

CREATE TABLE personas


{
nombre varchar(255),
apellido1 varchar(255),
apellido2 varchar(255),
dep int
}

Esta sentencia crear la base de datos personas con 4 columnas. Las


columnas nombre, apellido1 y apellido2 son de tipo varchar, es decir,
acepta valores alfanumricos hasta una longitud mxima de 255 caracteres.

La columna dep es de tipo int, es decir, acepta slo nmeros. Existen


diferentes tipos de datos, algunos son iguales en todas las bases de datos
(MySQL, ORACLE, DB2, ..) y otros pueden ser particulares para ser usados
nicamente en alguna de estas bases de datos.

SQL RESTRICCIONES (CONSTRAINTS)


Las CONSTRAINTS son restricciones que se utilizan para limitar el tipo de dato
que puede recibir una columna de una tabla.

Las restricciones se puede definir cuando creamos la tabla (CREATE TABLE) o


posteriormente con la sentencia ALTER TABLE. Las posibles restricciones son:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT

SQL NOT NULL


La restriccin NOT NULL sirve para especificar que una columna no acepta el
valor NULL, es decir, que esa columna siempre tiene que tener algn valor, no
puede estar vaca.

Ejemplo SQL NULL

CREATE TABLE personas { nombre varchar(255) NOT NULL, apellido1


varchar(255) NOT NULL, apellido2 varchar(255) }

Esta sentencia crea una tabla denominada personas, donde tenemos 3


columnas.

Las columnas nombre y apellido llevan NOT NULL, esto quiere decir que
cualquier fila insertada en esta tabla tiene que tener algn valor para las
columnas nombre y apellido1.

SQL UNIQUE
La restriccin UNIQUE identifica de manera nica a cada fila de una tabla.
Puede haber varias restricciones UNIQUE en diferentes columnas de una tabla.

Existen varias formas diferentes de sintaxis segn el sistema de base de datos


utilizado: Ejemplo SQL UNIQUE para la base de datos MySQL

CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255)


NOT NULL, apellido1 varchar(255) NOT NULL, apellido2 varchar(255), UNIQUE
(identificador) }

La sentencia anterior crea la tabla personas con 4 columnas, donde la


columna identifcador tiene un valor diferente para cada fila de la tabla. Si
intentamos insertar un fila con un identificador que ya exista, nos dar un
error, y no nos dejar insertarlo.

Ejemplo SQL UNIQUE para las bases de datos ORACLE, SQLSERVIR, ACCESS

CREATE TABLE personas { identificador int NOT NULL UNIQUE, nombre


varchar(255) NOT NULL, apellido1 varchar(255) NOT NULL, apellido2
varchar(255), }
SQL UNIQUE ALTER TABLE
La restriccin UNIQUE se puede aadir a una columna de una tabla, despus
de ser creada, mediante la sentencia ALTER TABLE. Sintaxis de UNIQUE ALTER
TABLE

ALTER TABLE personas


ADD UNIQUE (identificador)

Crea una restriccin UNIQUE (valor nico en toda la tabla) para la columna
identificador. Se puede crear tambin restricciones para varias columnas a la
vez

ALTER TABLE peronas


ADD CONSTRAINT copersonas
UNIQUE (identificador, apellido1)

Para eliminar una restriccin en la base de datos MySQL

ALTER TABLE personas


DROP INDEX copersonas

Para eliminar una restriccin en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas


DROP CONSTRAINT copersonas

SQL PRIMARY KEY


La clave primaria, PRIMARY KEY, identifica de manera nica cada fila de una
tabla. La columna definida como clave primaria (PRIMARY KEY) debe ser
UNIQUE (valor nico) y NOT NULL (no puede contener valores nulos).

Cada tabla slo puede tener una clave primaria (PRIMARY KEY). Ejemplo
PRIMARY KEY , clave primaria en MySQL

CREATE TABLE personas


{
identificador int NOT NULL,
nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL,
PRIMARY KEY (identificador)
}

Ejemplo PRIMARY KEY , clave primaria en ORACLE, SQLSERVER, ACCESS

CREATE TABLE personas


{
identificador int NOT NULL PRIMARY KEY,
nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL,
}

La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas,
por ejemplo por las columnas identificador y nombre, entonces se define as:

CREATE TABLE personas


{
identificador int NOT NULL,
nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL,
CONSTRAINT pers PRIMARY KEY (identificador, nombre)
}

La clave primaria tambin se puede definir despus de haber creado la tabla,


para eso utilizaremos el comando ALTER TABLE

Ejemplo PRIMARY KEY con ALTER TABLE ALTER TABLE personas


ADD PRIMARY KEY (identificador)

Ejemplo PRIMARY KEY multiple ALTER TABLE ALTER TABLE personas


CONSTRAINT pers PRIMARY KEY (identificador, nombre)

SQL FOREIGN KEY


La clave externa o FOREIGN KEY, es una columna o varias columnas, que
sirven para sealar cual es la clave primaria de otra tabla. La columna o
columnas sealadas como FOREIGN KEY, solo podrn tener valores que ya
existan en la clave primaria PRIMARY KEY de la otra tabla.

Ejemplo de FOREIGN KEY

Tabla departamentos, con la clave primaria dep


dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

Tabla personas, con una clave externa FOREIGN KEY dep, que hace referencia
a la clave primaria dep de la tabla anterior departamentos y por tanto, solo
puede tener un valor de los que tiene en esa tabla.
per nombre apellido1 apellido2 dep
1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Definiciones de FOREIGN KEY en CREATE TABLE para MySQL

CREATE TABLE departamentos { dep int NOT NULL,


departamento varchar(255),
PRIMARY KEY (dep)
}

CREATE TABLE personas


{
per int NOT NULL,
nombre varchar(255),
apellido1 varchar(255),
dep int NOT NULL,
PRIMARY KEY (per),
FOREIGN KEY (dep) REFERENCES departamentos(dep)
}

Definiciones de FOREIGN KEY en CREATE TABLE para ORACLE, ACCESS,


SQLSERVER

CREATE TABLE departamentos


{
dep int NOT NULL PRIMARY KEY,
departamento varchar(255),
}

CREATE TABLE personas


{
per int NOT NULL PRIMARY KEY,
nombre varchar(255),
apellido1 varchar(255),
dep int FOREIGN KEY REFERENCES departamentos (dep)
}

Si la clave externa o fornea (FOREIGN KEY) est compuesta por varias


columnas o queremos ponerle un nombre, utilizaremos la frmula siguiente:

CONSTRAINT fkpersonas FOREIGN KEY (dep, id) REFERENCES


departamentos(dep,id).

Ejemplo FOREIGN KEY con ALTER TABLE

ALTER TABLE ADD FOREIGN KEY (dep) REFERENCES departamentos(dep)

Ejemplo FOREIGN KEY mltiple (varias columnas) con ALTER TABLE:

ALTER TABLE ADD CONSTRAINT fkpersonas FOREIGN KEY (dep) REFERENCES


departamentos(dep)

Para borrar un clave externa (FOREIGN KEY) utilizamos DROP, pero vara
segn la base de dato:
Borrar FOREIGN KEY en MySQL ALTER TABLE personas DROP FOREIGN KEY
dep

Borrar FOREIGN KEY en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas DROP CONSTRAINT dep

SQL CHECK
La restriccin CHECK se utiliza para limitar el rango de valores que puede tener
una columna.

Se pueden definir varias restricciones CHECK en una tabla.

Ejemplo CHECK en MySQL

CREATE TABLE departamentos { dep int NOT NULL, departamento


varchar(255), CHECK (dep>0) }

Ejemplo CHECK en ORACLE, SQLSERVER y ACCESS:

CREATE TABLE departamentos { dep int NOT NULL CHECK (dep>0)


departamento varchar(255), }

Ejemplo CHECK en ALTER TABLE en MySQL

ALTER TABLE departamentos ADD CHECK (dep>0)

Ejemplo CHECK (con mltiples columnas) en ALTER TABLE en MySQL

ALTER TABLE personas ADD CHECK (per>0, edad>35)

Ejemplo CHECK en ALTER TABLE en ORACLE, SQLSERVER y ACCESS

ALTER TABLE departamentos ADD CONSTRAINT ckdepart CHECK (dep>0)

Ejemplo CHECK en ALTER TABLE con varias columnas

ALTER TABLE personas ADD CONSTRAINT ckpersona CHECK (pers>0,


nombre=antonio)

SQL DEFAULT
La restriccin DEFAULT se utiliza para establecer un valor por defecto a una
columna. Si no se especifica un valor al insertar una fila, entonces se podr el
valor por defecto (DEFAULT) que tenga cada columna.

SQL DEFAULT en la sentencia CREATE TABLE


CREATE TABLE pedidos { idpedido int, producto int, cantidad int, fecha date
DEFAULT GETDATE() }

Si al crear un pedido, no especificamos el valor de la columna fecha, entonces


para esa columna se insertar por defecto obtenido de ejecutar la funcion
GETDATE(), que devuelve la fecha del sistema

En lugar de una funcin, podemos insertar una valor concreto 2001-01-01 o


cualquier otro valor.

SQL DEFAULT en la sentencia ALTER TABLE para MySQL

ALTER TABLE pedidos ALTER fecha DEFAULT 2012-01-01

SQL DEFAULT en la sentencia ALTER TABLE para ORACLE, SQLSERVER,


ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha SET DEFAULT 2012-01-01

Para borrar DEFAULT en MySQL

ALTER TABLE pedidos ALTER fecha DROP DEFAULT

Para borrar DEFAULT en ORACLE, SQLSERVER, ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha DROP DEFAULT

SQL CREATE INDEX


CREATE INDEX se utiliza para crear ndices en una tabla.

Un ndice sirve para buscar datos rpidamente, y no tener que recorrer toda la
tabla secuencialmente en busca alguna fila concreta. Si una columna es ndice
de una tabla, al buscar por un valor de esa columna, iremos directamente a la
fila correspondiente. La bsqueda as es mucho ms ptima en recursos y ms
rpida en tiempo.

Si esa columna de bsqueda no fuese ndice, entonces tendramos que recorrer


de forma secuencial la tabla en busca de algn dato. Por eso, es importante
crear un ndice por cada tipo de bsqueda que queramos hacer en la tabla.

Actualizar una tabla con ndices tarda ms tiempo porque tambin hay que
actualizar los ndices, as que solo se deben poner ndices en las columnas por
las que buscamos frecuentemente.

Se pueden crear ndices NICOS, es decir, ndices que no admiten valores


duplicados.

Sintaxis para SQL CREATE INDEX


CREATE INDEX nombreindice
ON nombretabla (nombrecolumna)

La columna que forma parte de este ndice admite valores duplicados en su


columna.

Sintaxis para SQL CREATE UNIQUE INDEX

CREATE UNIQUE INDEX nombreindice


ON nombretabla (nombrecolumna)

La columna que forma parte de este ndice NO admite valores duplicados en su


columna, porque es una clave nica.

Ejemplos para SQL CREATE INDEX

Creamos la ndice indicepersonas sobre la columna persona de la tabla


personas

CREATE INDEX indicepersonas


ON personas (persona)

Si queremos crear un ndice sobre varias columnas, por ejemplo, apellido1 y


apellido2

CREATE INDEX indice2personas


ON personas(apellido1, apellido2)

SQL DROP
La sentencia DROP se utiliza para borrar definitivamente un ndice, tabla o
base de datos.

DROP INDEX
Sintaxis DROP INDEX para MySQL

ALTER TABLE nombretabla


DROP INDEX nombreindice

Sintaxis DROP INDEX para DB2 y ORACLE

DROP INDEX nombreindice

Sintaxis DROP INDEX para ACCESS

DROP INDEX nombreindice


ON nombretabla
Sintaxis DROP INDEX para SQLSERVER

DROP INDEX nombretabla.nombreindice

DROP TABLE
Se utiliza DROP TABLE para borrar definitivamente una tabla

DROP TABLE nombretabla

DROP DATABASE
Se utiliza para borrar una base de datos definitivamente.
DROP DATABASE nombrebasededatos

SQL ALTER
La sentencia SQL ALTER se utiliza para aadir, eliminar o modificar columnas
de una tabla.

Sintaxis SQL ALTER. Para aadir una nueva columna a una tabla

ALTER TABLE nombretabla


ADD nombrecolumna tipodatocolumna

Para borrar una columna de una tabla

ALTER TABLE nombretabla


DROP COLUMN nombrecolumna

Para modificar el tipo de dato de una columna de una tabla

ALTER TABLE nombretabla


ALTER COLUMN nombrecolumna tipodatocolumna

Ejemplos de SQL ALTER


per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ

Dada la siguiente tabla de personas, queremos aadir una nueva columna,


denominada 'fechadenacimiento'

ALTER TABLE personas


ADD fechadenacimiento date

per nombre apellido1 apellido2 fechadenacimiento


1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ
Si queremos modificar el tipo de dato de la columna fecha, y ponerle tipo
'year' en lugar de tipo 'date'

ALTER TABLE personas


ALTER COLUMN fechadenacimiento year

Si queremos borrar la columna fechadenacimiento, y dejarlo igual que al


principio

ALTER TABLE personas


DROP COLUMN fechadenacimiento
per nombre apellido1 apellido2
1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ

SQL AUTO INCREMENT


AUTO INCREMENT permite generar un nmero nico cuando insertamos un
nuevo registro en la tabla. Se utiliza para tener una clave primaria de una
tabla mediante la generacin automtica de un nmero secuencial nico en la
tabla.

Sintaxis SQL AUTO INCREMENT

CREATE TABLE personas { persona int NOT NULL AUTO_INCREMENT, nombre


varchar(255), apellido1 varchar(255), apellido2 varchar(255) }

El valor inicial de una valor auto incremental (AUTO_INCREMENT) es 1, y se le


va sumando 1 cada nuevo registro grabado en la tabla.

Si queremos que el valor inicial sea 100 en lugar de 1

ALTER TABLE personas AUTO_INCREMENT=100

Para SQL SERVER se utiliza IDENTITY en lugar de AUTO_INCREMENT

Para ACCESS se utiliza AUTOINCREMENT en lugar de AUTO_INCREMENT

Para ORACLE se define de forma diferente

CREATE SEQUENCE persona MINVALUE 1 START WITH 1 INCREMENT BY 1


CACHE 10

SQL VIEWS
Una vista es una tabla virtual.

SQL CREATE VIEW


Una vista es una tabla virtual basada en el resultado de una consulta (SELECT)
a una tabla.

CREATE VIEW nombrevista AS


SELECT nombrecolumna(s)
FROM nombretabla
WHERE condicin

Las vista muestran siempre datos reales de una o varias tablas. Cada vez que
un usuario pregunta o consulta una vista, el sistema de base de datos,
actualiza los datos de la vista, para mostrar siempre datos reales.

Ejemplo SQL CREATE VIEW

En la tabla personas
nombre apellido1 apellido2 edad
ANTONIO PEREZ GOMEZ 30
ANTONIO GARCIA RODRIGUEZ 45
PEDRO RUIZ GONZALEZ 50

Creamos una vista con las personas que se llaman ANTONIO

CREATE VIEW [personas que se llaman ANTONIO] AS


SELECT nombre, apellido1, apellido2,edad
FROM personas
WHERE nombre = ANTONIO

Para consultar los datos de una vista

SELECT * FROM [personas que se llama ANTONIO]

En la vista [personas que se llama ANTONIO] tenemos los datos siguientes:


nombre apellido1 apellido2 edad
ANTONIO PEREZ GOMEZ 30
ANTONIO GARCIA RODRIGUEZ 45

SQL REPLACE VIEW


Para reemplazar o modificar los datos de una vista:

REPLACE VIEW [personas que se llama ANTONIO] AS


SELECT nombre, apellido1, apellido2, edad
FROM personas
WHERE edad > 20

SQL DROP VIEW


Para borrar una vista
DROP VIEW nombrevista

Ejemplo borrado de la vista antes creada:

DROP VIEW [personas que se llama ANTONIO]

SQL DATE
Existen diferentes formatos para almacenar las fechas y horas en los distintos
sistemas de bases de datos.
Los tipos de datos de cada columna se definen cuando se crea la tabla.
Tipos de Datos para las fechas y horas en la base de datos MySQL

Tipo Formato Ejemplo


DATE YYYY-MM-DD 2008-11-11
DATETIME YYYY-MM-DD HH:MM:SS 2008-11-11 13:23:44
TIMESTAMP YYYY-MM-DD HH:MM:SS
YEAR YYYY o YY

Funciones para MySQL sobre estos tipos de datos de fecha anteriores

Muestra la fecha y hora actuales. Por ejemplo: 2008-11-11


NOW
12:45:34
CURDATE Muestra la fecha actual. Por ejemplo: 2008-11-11
CURTIME Muestra la hora actual. Por ejemplo: 12:45:34
DATE Muestra la parte fecha de una expresin fecha/hora
EXTRACT Muestra una parte de una expresin fecha/hora
Muestra una fecha como suma de un intervalo de tiempo a
DATE_ADD
una fecha
Muestra una fecha como resta de un intervalo de tiempo a
DATE_SUB
una fecha
DATEDIFF Muestra el nmero de das entre 2 fechas
DATE_FORMAT Muestra una fecha y hora con diferentes formatos

Tipos de Datos para fechas y horas en la base de datos SQL Server


DATE Formato YYYY-MM-DD
DATETIME Formato YYYY-MM-DD HH:MM:SS
SMALLDATETIME Formato YYYY-MM-DD HH:MM:SS
Se genera un valor basado en la hora del sistema. Se
TIMESTAMP
actualiza automticamente.

Funciones para SQL Server sobre los tipos de datos de fecha y hora anteriores
GETDATE Muestra la fecha y hora actuales
DATEPART Muestra parte de una fecha y hora
Muestra una fecha como suma o resta de un intervalo de tiempo
DATEADD
sobre una fecha
DATEDIFF Muestra el tiempo entre 2 fechas
CONVERT Muestra la fecha y hora en diferentes formatos
Ejemplos del uso de fecha y hora
CREATE TABLE pedidos
(
idpedido int NOT NULL,
nombreproducto varchar(50) NOT NULL,
fechapedido datetime NOT NULL
PRIMARY KEY (idpedido)
)
idpedido nombreproducto fechapedido
1 papel oficina 2012-02-23 14:05:00
Si queremos almacenar solo la fecha (y no la hora) utilizaremos el tipo de
datos date en lugar de datetime.

SQL VALORES NULL


El valor NULL representa a un valor desconocido.

Este valor NULL puede ser asignado como valor a cualquier columna de una
tabla. Si el valor de una columna es opcional, quiere decir, que podemos
insertar una fila en la tabla sin asignarle ningn valor a esa columna opcional,
as que esa columna tomar el valor NULL.

El valor NULL es un valor especial, y por tanto, no se puede comparar con los
operadores aritmticos normales (=, >, <, <>), y en su lugar debemos utilizar
los operadores IS y IS NOT.

En la tabla personas, tenemos la columna apellido2 que es opcional y puede


tener valores nulos:

nombre apellido1 apellido2 edad


ANTONIO PEREZ 30
LUIS LOPEZ PEREZ 45
ANTONIO GARCIA 50

Ejemplo de uso de IS NULL

SELECT * FROM personas WHERE apellido2 IS NULL


nombre apellido1 apellido2 edad
ANTONIO PEREZ 30
ANTONIO GARCIA 50

Ejemplo de uso de IS NOT NULL

SELECT * FROM personas WHERE apellido2 IS NOT NULL

nombre apellido1 apellido2 edad


LUIS LOPEZ PEREZ 45
SQL Tipos de datos de texto en MySQL
Tipos de datos y rango de datos para el sistema de gestin de bases de datos
MySQL

Tipos de datos de TEXTO en MySQL

CHAR El tipo de dato CHAR sirve para almacenar una cadena de


datos de longitud fija. Puede contener caracteres, nmeros y
caracteres especiales. La longitud fija se define entre
parntesis, y siempre reservar espacio para esta longitud
aunque no se utilice.
Por ejemplo, CHAR(50), ser un campo de longitud fija de
50 posiciones.
La longitud mxima que podemos definir un campo CHAR es
de 255.
VARCHAR El tipo de datos VARCHAR sirve para almacenar una cadena
de datos (caracteres, nmeros y caracteres especiales) de
longitud variable. La longitud mxima es de 255 caracteres.

Hace un buen uso del espacio en disco, porque no reserva el


espacio de la longitud mxima definida, si no que solo ocupa
espacio el tamao real de los datos almacenados en ese
campo. Es el tipo de dato ms utilizado para campos
pequeos.
TINYTEXT El tipo de datos TINYTEXT sirve para almacenar una cadena
de datos (solo caracteres, no admite nmero ni caracteres
especiales) de una longitud mxima de 255 caracteres.
TEXT El tipo de dato TEXT sirve para almacenar una cadena de
caracteres de longitud mxima de 65,535 caracteres
BLOB El tipo de datos BLOB sirve para almacenar datos de tipo
BLOB (Binary Large Object). Admite una longitud mxima
de 65,535 bytes de datos
MEDIUMTEXT El tipo de dato MEDIUMTEXT sirve para almacenar una
cadena con una longitud mxima de 16.777.215 caracteres.
MEDIUMBLOB El tipo de datos MEDIUMBLOB Sirve para almacenar datos
tipo BLOB con longitud mxima 16.777.215 bytes
LONGTEXT El tipo de dato LONGTEXT sirve para almacenar una cadena
de longitud mxima de 4.294.967.295 caracteres
LONGBLOB El tipo de dato LONGBLOB sirve para almacenar un BLOB de
longitud mxima de de 4.294.967.295 bytes
ENUM El tipo de dato ENUM sirve para introducir una lista de
posibles valores. La longitud mxima es de 65.535 posibles
valores. Si se intenta introducir un valor en este campo, que
no est incluido en la lista, no se insertar nada y tendr un
valor vaco (). Por ejemplo si definimos una columna como
ENUM(uno, dos), entonces en esta columna solo puede
almacenar los valores uno o dos. Si queremos insertar
cualquier otro valor (por ejemplo tres), no se grabar tres
y en su lugar quedar el campo vaco, sin valor ().
SET El tipo de dato SET es similar a ENUM pero la longitud
mxima de valores posibles es de 64, y los valores posibles
se pueden combinar. Por ejemplo, si definimos una columna
como SET (uno, dos) entonces esa columna podr tomar
los siguientes valores uno o dos o uno,dos, dos,uno.

SQL Tipos de datos de numricos en MySQL


Tipos de datos numricos para el sistema de gestin de bases de datos MySQL
MySQL admite los siguientes tipos de datos numricos para sus columnas.

TINYINT El tipo de dato numrico TINYINT permite nmeros desde -


128 hasta 127. Tambin se puede definir como UNSIGNED
(sin signo), entonces los valores posibles empiezan en 0
hasta 255. Opcionalmente, se puede definir el nmero
mximo de dgitos entre parntesis (tamao).
SMALLINT El tipo de dato numrico SMALLINT permite nmeros desde
-32768 hasta 32767. Tambin se puede definir como
UNSIGNED (sin signo), entonces los valores posibles
empiezan en 0 hasta 65535. Opcionalmente, se puede
definir el nmero mximo de dgitos entre parntesis.
MEDIUMINT El tipo de dato numrico MEDIUMINT permite nmeros
desde -8388608 hasta 8388607. Tambin se puede definir
como UNSIGNED (sin signo), entonces los valores posibles
empiezan en 0 hasta 16777215. Opcionalmente, se puede
definir el nmero mximo de dgitos entre parntesis

INT El tipo de dato numrico INT permite nmeros desde -


2147483648 hasta 2147483647. Tambin se puede definir
como UNSIGNED (sin signo), entonces los valores posibles
empiezan en 0 hasta 4294967295. Opcionalmente, se
puede definir el nmero mximo de dgitos entre parntesis
BIGINT El tipo de dato numrico BIGINT permite nmeros desde -
9223372036854775808 hasta 9223372036854775807.
Tambin se puede definir como UNSIGNED (sin signo),
entonces los valores posibles empiezan en 0 hasta
18446744073709551615. Opcionalmente, se puede definir
el nmero mximo de dgitos entre parntesis
FLOAT El tipo de dato numrico FLOAT permite almacenar
pequeos nmeros decimales (de punto flotante). Al ser de
punto flotante, sus clculos son aproximados. Podemos
especificar el nmero mximo de dgitos (tamao) y el
nmero de decimales (decimal). FLOAT(6,2) tendr 4 dgitos
enteros y 2 decimales, por ejemplo, 5467.67
DOUBLE El tipo de dato numrico DOUBLE permite almacenar
grandes nmeros decimales (de punto flotante). Al ser de
punto flotante, sus clculos son aproximados. Podemos
especificar el nmero mximo de dgitos (tamao) y el
nmero de decimales (decimal). DOUBLE(5,1) tendr 4
dgitos enteros y 1 dgito decimal, por ejemplo, 5467.1
DECIMAL El tipo de dato numric DECIMAL permite almacenar
grandes nmeros decimales de punto fijo, por tanto, los
clculos con este tipo DECIMAL son exactos. Podemos
especificar el nmero mximo de dgitos (tamao) y el
nmero de decimales (decimal). El nmero mximo de
dgitos es de 65.
Por ejemplo DECIMAL(20,6) quiere decir que tendr 14
dgitos enteros y 4 dgitos decimales.

SQL Tipos de datos fecha en MySQL


En MySQL pueden existir los siguientes tipos de datos para fechas

DATE El tipo de dato DATE sirve para almacenar una fecha con el
formato YYYY-MM-DD (4 dgitos para el ao, guin, 2 dgitos
para el mes, guin, 2 dgitos para el da).
DATETIME El tipo de dato DATETIME sirve para almacenar fecha y hora,
con el formato YYYY-MM-DD HH:MM:SS
TIMESTAMP El tipo de dato TIMESTAMP es equivalente al tipo anterior,
DATETIME, YYYY-MM-DD HH:MM:SS
TIME El tipo de dato TIME sirve para almacenar la hora con el
formato HH:MM:SS
YEAR El tipo de dato YEAR sirve para almacenar el ao con el
formato YYYY

Funcin SQL AVG


La funcin AVG devuelve el valor medio de una columna de tipo numrico.

Sintaxis SQL AVG:

SELECT AVG(columna) FROM tabla

Ejemplo SQL AVG:

Tabla pedidos
id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

Si quieres saber el valor medio del campo precio, usa la siguiente funcin SQL
SELECT AVG(precio)
AS preciomedio
FROM pedidos

La tabla resultante sera


preciomedio
240

Si quieres seleccionar los clientes con el precio del pedido superior al precio
medio de los pedidos.

SELECT * FROM pedidos


WHERE precio > (SELECT AVG(precio) FROM pedidos)

id pedido cliente precio


2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490

Funcin SQL COUNT


La funcin COUNT devuelve el nmero de filas de la consulta, es decir, el
nmero de registros que cumplen una determinada condicin.

Los valores nulos no sern contabilizados.

Sintaxis de SQL COUNT:

SELECT COUNT(columna) FROM tabla

Para obtener el nmero de filas de una tabla

SELECT COUNT(*) FROM tabla

Para obtener el nmero de valores distintos de la columna especificada.

SELECT COUNT(DISTINCT columna) FROM tabla.

Ejemplos de SQL COUNT:

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT COUNT(*) FROM pedidos


Devolver el nmero de filas de la tabla, es decir, 5

SELECT COUNT(*) FROM pedidos


WHERE cliente = RUIZ

Devolver el nmero de filas del resultado de la consulta, es decir, 1

SELECT COUNT(*) FROM pedidos


WHERE precio > 270

Devolver el nmero de filas del resultado de la consulta, es decir, 2

Funcin SQL FIRST


La funcin SQL FIRST devuelve el primer valor de la columna seleccionada.

Sintaxis SQL FIRST:

SELECT FIRST(columna) FROM table

Ejemplo SQL FIRST:

Dada la siguiente tabla pedidos

id pedido cliente precio


1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT FIRST(precio) FROM pedidos

Devolver el valor 100, que es el valor de la columan precio de la primera fila


de la tabla.

Funcin SQL LAST


La funcin SQL LAST sirve para obtener el valor de una columna de la ltima
fila de la seleccin.

Sintaxis SQL LAST:

SELECT LAST(columna) FROM table

Ejemplo SQL LAST:

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT LAST(precio) FROM pedidos

Devolver el valor 60, que es el valor de la columna precio de la ltima fila de


la tabla.

Funcin SQL MAX


La funcin MAX sirve para obtener el mayor valor para una columna
determinada.

Sintaxis SQL MAX:

SELECT MAX(columna) FROM tabla

Ejemplo SQL MAX:

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT MAX(precio) FROM pedidos

Devolver el valor 490, que es mximo valor de la columna precio de la


consulta.

Funcin SQL MIN


La funcin MIN sirve para obtener el valor ms pequeo para una columna
determinada.

Sintaxis SQL MIN:

SELECT MIN(columna) FROM tabla

Ejemplo SQL MIN:

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT MIN(precio) FROM pedidos

Devolver el valor 60, que es valor ms pequeo de la columna precio de la


consulta.

Funcin SQL SUM


La funcin SUM permite obtener la suma total de los valores de una columna
de tipo numrico.

Sintaxis SQL SUM

SELECT SUM(columna) FROM tabla

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT SUM(precio) FROM pedidos

Devolver el valor 1200, que es la suma de todos los valores de la columna


precio de la consulta realizada, en este caso, de toda la tabla.

FUNCION SQL GROUP BY


La funcin GROUP BY se utiliza para juntar filas de resultados que coincidan en
el valor de alguna columna seleccionada.

Sintaxis GROUP BY

SELECT columna, funcion(columna)


FROM tabla
GROUP BY columna

Ejemplo de uso de GROUP BY

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT cliente, SUM(precio)


FROM pedidos
GROUP BY cliente
El resultado ser el siguiente:
cliente SUM(precio)
RUIZ 590
PEREZ 300
GOMEZ 310
El cliente RUIZ se repite 2 veces, se suman sus valores para la columna
precio 490 + 100 = 590

El cliente PEREZ se queda igual, con el valor para precio de 300.

El cliente GOMEZ se repite 2 veces, y se suman sus valores para la columna


precio 250 + 60 = 310

Nota: Se puede agrupar tambin por varias columnas.

GROUP BY columna1, columna2

FUNCION SQL HAVING


La funcin HAVING se utiliza para incluir condiciones con alguna funcin SQL
del tipo SUM, MAX, ..

Como la clusula WHERE no se puede utilizar con funciones SQL del tipo SUM,
MAX, entonces utilizamos en su lugar, HAVING.

Sintaxis HAVING

SELECT columna1, SUM(columna2)


FROM tabla
GROUP BY columna1
HAVING SUM(columna2) < nmero

Ejemplo de SQL HAVING

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 RUIZ 100
2 p2 PEREZ 300
3 p3 GOMEZ 250
4 p4 RODRIGUEZ 490
5 p5 LOPEZ 60

SELECT cliente, SUM(precio)


FROM pedidos
GROUP BY cliente
HAVING SUM(precio) > 500

El resultado ser:
cliente SUM(precio)
RUIZ 590

Solamente el cliente RUIZ suma en sus valores para precio 490 + 100 = 590
un valor superior a 500

El cliente GOMEZ suma en sus valores para la columna precio 250 + 60 =


310, que tambin es menor de 500, y por tanto, no aparece en la tabla
resultante.

El cliente PEREZ obtiene un valor de 300, y tampoco aparece en la tabla,


porque es menor de 500.

Funcin SQL UCASE


La funcin UCASE sirve para convertir a maysculas el valor de una columna.

Sintaxis SQL UCASE

SELECT UCASE(columna)
FROM tabla

Ejemplo SQL UCASE:

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 Ruiz 100
2 p2 Perez 300
3 p3 Gomez 250

SELECT UCASE(cliente)
FROM pedidos

El resultado ser:
cliente
RUIZ
PEREZ
GOMEZ
Funcin SQL LCASE
La funcin LCASE sirve para convertir a minsculas el valor de una columna.
Sintaxis SQL LCASE
SELECT LCASE (columna) FROM tabla
Ejemplo SQL LCASE:
Dada la siguiente tabla pedidos
id pedido cliente precio
1 p1 Ruiz 100
2 p2 Perez 300
3 p3 Gomez 250
SELECT LCASE (cliente) FROM pedidos

El resultado ser:
cliente
ruiz
perez
gomez

Funcin SQL MID


La funcin MID se utiliza para extraer caracteres de un campo de texto

Sintaxis SQL MID

SELECT MID(columna, inicio, longitud)


FROM tabla

columna es la columna donde se quiere extraer datos de su valor.


inicio es la posicin desde la que empezar a extraer.
longitud es el nmero de caracteres a extraer. En caso de no especificarlo,
coger hasta el final del campo de texto.

Ejemplo de SQL MID:

Dada la siguiente tabla pedidos:


id pedido cliente precio
1 p1 Ruiz 100
2 p2 Perez 300
3 p3 Gomez 250

Si queremos extraer los primeros 3 caracteres de los valores de la columna


cliente:

SELECT MID(cliente,1,3) FROM pedidos

El resultado ser:
cliente
Rui
Per
Gom

Funcin SQL LEN


La funcin LEN sirve para calcular la longitud del valor de un campo de texto.
Sintaxis SQL LEN

SELECT LEN(columna) FROM tabla

Ejemplo SQL LEN

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 Ruiz 100
2 p2 Perez 300
3 p3 Rodriguez 250

Si queremos saber la longitud de cada valor de la columna cliente:

SELECT LEN(cliente) AS cliente FROM pedidos


cliente
4
5
9

Funcin SQL ROUND


La funcin ROUND se utiliza para redondear un campo numrico en un nmero
de decimales especificado.

Sintaxis SQL ROUND

SELECT ROUND(columna, decimales) FROM tabla

Ejemplo SQL ROUND

Dada la siguiente tabla pedidos


id pedido cliente precio
1 p1 Ruiz 100.25
2 p2 Perez 305.57
3 p3 Rodriguez 250.84

Si queremos los precios de los pedidos sin nmeros decimales, ejecutaremos:


SELECT ROUND(precio,0) AS rprecio
FROM pedidos
El resultado ser:
precio
100
306
251
Funcin SQL NOW
La funcin NOW devuelve la fecha y hora actuales.
Sintaxis SQL NOW

SELECT NOW() FROM table

Ejemplo SQL NOW

Dada la siguiente tabla productos


id producto precio
1 ordenador 1200.25
2 impresora 65.57
3 teclado 10.84

Si queremos saber los precios de los productos a fecha de hoy

SELECT producto, precio, NOW() AS fecha


FROM productos

El resultado ser:
producto precio fecha
ordenador 900.25 10/2/2012 10:15:42 AM
impresora 65.57 10/2/2012 10:15:42 AM
teclado 10.84 10/2/2012 10:15:42 AM

Funcin SQL FORMAT


La funcin FORMAT se utiliza para especificar como se mostrar un campo en
el resultado de la consulta.

Sintaxis SQL FORMAT

SELECT FORMAT(columna, formato) FROM tabla

Ejemplo SQL FORMAT

Dada la siguiente tabla productos

id producto precio
1 ordenador 1200.25
2 impresora 65.57
3 teclado 10.84

Si queremos saber los precios de los productos a fecha de hoy, pero queremos
que la fecha tenga el formato YYYY-MM-DD, es decir, 4 caracteres para el
ao, guin, 2 caracteres para el mes, guin y 2 caracteres para el da.

SELECT producto, precio,


FORMAT(NOW(), YYYY-MM-DD)
AS fecha
FROM productos
El resultado ser:

producto precio fecha


ordenador 900.25 2012-02-10
impresora 65.57 2012-02-10
teclado 10.84 2012-02-10

insert into estudiante


values('6','Estefano','10/10/1987','3')

insert into copiaest


select *
from estudiante
where codigo = 3;

update copiaest
set nivel =nivel +2
where nombre ='Maria';

update copiaest
set nivel =nivel +2,
fecna = '12/12/2000'
where nombre ='Maria';

update copiaest
set nivel =null
where nombre ='Maria';

Delete from copiaest;

INSTRUCCIONES PARA CREAR UNA TABLA

Para cada campo ejemplo:


Edad int not null,

TABLA:
uses prueba

CREATE TABLE nueva


(Pimer_nombre char(10),
Apellido char(10),
direccion char(10),
edad int,
nacimiento date);

Create table estudiante

(codigo int not null,

Nombre VARCHAR (10),

Fecna date

Primary key (codigo));

CREAR RELACIONES ENTRE TABLAS

Create table estudiante

(codigo int not null,

Nombre VARCHAR (10) CONSTRAINT df_nombre


DEFAULT 'ABC',
Fecna date

Primary key (codigo));

Create table materia

(codigoM int not null,

NombreM char(10),

nivel int

Primary key (codigoM));

Create table calificacin


(nota int not null,
Codigoest int not null,
Codigomat int not null
Constraint pk_em PRIMARY KEY(Codigoest,
Codigomat),
Constraint fk_e FOREIGN KEY (codigoest)
REFERENCES estudiante(codigo),
Constraint fk_M FOREIGN KEY (codigomat)
REFERENCES materia(codigoM));
CREATE TABLE abc
(Pimer_nombre char(10),
Apellido char(10),
direccion char(10),
sexo char(1) CHECK( sexo in ('m',
'f') )
not null ,
edad int CHECK( edad > 16 and edad
<100) not null,
nacimiento date);
CREACIN EN ORACLE

CREATE table facturas

(numero int primary key,

Total int,

Iva int,

Fecha date,

Cliente,

Sucursal,

Constraint fk_c foreing key (cliente) references clientes (cedula),

Constraint fk_s foreinga key (sucursal) references sucursales(codigos);

Constraint en la creacin de tablas:


CREATE TABLE usuario (

codigoPersona char(5)not null,

apellido varchar(80) not null,

nombre varchar(60)not null,

edad char(3) CHECK( edad > 0 and edad <>

not null,

sexo char(1) CHECK( sexo in ('m', 'f') )

not null ,

dni char(8) CHECK( dni LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-


9]')

not null,

direccion varchar(100) not null

ALTERAR UNA TABLA

Para realizar cualquiera de los puntos listados se emplea la instruccin

ALTER.

alter table "nombre_tabla"

[cdigo de modificacin]

[cdigo modificacin] depende del tipo de modificacin que deseamos


realizar. Para los usos mencionados anteriormente, las instrucciones

[cdigo modificacin] son:

Agregar un campo: ADD campo 1 tipo de datos campo 1


Eliminar un campo: DROP campo 1
Cambiar el nombre de un campo: CHANGE nombre antiguo del
campo nuevo nombre del campo tipo de datos para el nuevo
campo"
Cambiar el tipo de datos para un campo: MODIFY campo 1
nuevo tipo de datos

ALTER TABLE nueva ADD col3 int;

ALTER TABLE nueva drop column col3;


Constraint despus de definir las tablas:

ALTER TABLE usuario

ADD CONSTRAINT CK_datos_sexo

CHECK( sexo in ('m', 'f') )

ALTER TABLE usuario

ADD CONSTRAINT CK_usuario_nombreUsuario

UNIQUE (nombreUsuario)

ALTER TABLE datos

ADD CONSTRAINT CK_datos_dni

CHECK( dni LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

ALTER TABLE datos

ADD CONSTRAINT CK_datos_edad

CHECK( edad > 0 and edad <>


EJEMPLO
1. Create Table Statement to create Primary Key
a. Column Level
USE AdventureWorks2008
GO
CREATE TABLE Products
(
ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,
ProductName VARCHAR(25)
);
GO

b. Table Level
CREATE TABLE Products
(
ProductID INT,
ProductName VARCHAR(25)
CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)
);
GO

2) Alter Table Statement to create Primary Key


ALTER TABLE Products
ADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)
GO

3) Alter Statement to Drop Primary key


ALTER TABLE Products
DROP CONSTRAINT pk_products_pid;
GO

Create Table Statement to create Foreign Key


a. Column Level
USE AdventureWorks2008
GO
CREATE TABLE ProductSales
(
SalesID INT CONSTRAINT pk_productSales_sid PRIMARY KEY,
ProductID INT CONSTRAINT fk_productSales_pid
FOREIGN KEY REFERENCES Products(ProductID),
SalesPerson VARCHAR(25)
);
GO

b. Table Level
CREATE TABLE ProductSales
(
SalesID INT,
ProductID INT,
SalesPerson VARCHAR(25)
CONSTRAINT pk_productSales_sid PRIMARY KEY(SalesID),
CONSTRAINT fk_productSales_pid
FOREIGN KEY(ProductID)REFERENCES Products(ProductID)
);
GO
1) Alter Table Statement to create Foreign Key
ALTER TABLE ProductSales
ADD CONSTRAINT fk_productSales_pid
FOREIGN KEY(ProductID)REFERENCES Products(ProductID)
GO
2) Alter Table Statement to Drop Foreign Key
ALTER TABLE ProductSales
DROP CONSTRAINT fk_productSales_pid;
GO

Default Constraint: Default constraint when created on some column


will have the default data which is given in the constraint when no
records or data is inserted in that column.

1) Create Table Statement to create Default Constraint


a. Column Level

USE AdventureWorks2008
GO
CREATE TABLE Customer
(
CustomerID INT CONSTRAINT pk_customer_cid PRIMARY KEY,
CustomerName VARCHAR(30),
CustomerAddress VARCHAR(50) CONSTRAINT df_customer_Add
DEFAULT 'UNKNOWN'
);
GO

b. Table Level : Not applicable for Default Constraint


2) Alter Table Statement to Add Default Constraint
ALTER TABLE Customer
ADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR
CustomerAddress
GO

3) Alter Table to Drop Default Constraint


ALTER TABLE Customer
DROP CONSTRAINT df_customer_Add
GO

http://blog.sqlauthority.com/2008/09/08/sql-server-%E2%80%93-
2008-creating-primary-key-foreign-key-and-default-constraint/

VISTAS EN SQL

CREATE VIEW
Una vista es una alternativa para mostrar datos de varias tablas. Una vista es
como una tabla virtual que almacena una consulta. Los datos accesibles a
travs de la vista no estn almacenados en la base de datos como un objeto.
Entonces, una vista almacena una consulta como un objeto para utilizarse
posteriormente. Las tablas consultadas en una vista se llaman tablas base. En
general, se puede dar un nombre a cualquier consulta y almacenarla como una
vista.

Una vista suele llamarse tambin tabla virtual porque los resultados que
retorna y la manera de referenciarlas es la misma que para una tabla.
Las vistas permiten:
Ocultar informacin: permitiendo el acceso a algunos datos y
manteniendo oculto el resto de la informacin que no se incluye en la
vista. El usuario opera con los datos de una vista como si se tratara de
una tabla, pudiendo modificar tales datos.
Simplificar la administracin de los permisos de usuario: se
pueden dar al usuario permisos para que solamente pueda acceder a los
datos a travs de vistas, en lugar de concederle permisos para acceder a
ciertos campos, as se protegen las tablas base de cambios en su
estructura.
Mejorar el rendimiento: se puede evitar tipear instrucciones
repetidamente almacenando en una vista el resultado de una consulta
compleja que incluya informacin de varias tablas.
Podemos crear vistas con: un subconjunto de registros y campos de una tabla;
una unin de varias tablas; una combinacin de varias tablas; un resumen
estadstico de una tabla; un subconjunto de otra vista, combinacin de vistas y
tablas.

Disear e implementar vistas


Antes de crear una vista, considere las siguientes indicaciones:
Slo puede crear vistas en la base de datos actual. Sin embargo, las
tablas y las vistas a las que se haga referencia desde la nueva vista
pueden encontrarse en otras bases de datos e, incluso, en otros
servidores, si la vista se define mediante consultas distribuidas.

Los nombres de las vistas deben seguir las reglas que se aplican a los
identificadores y ser nicos para cada esquema. Adems, el nombre
debe ser distinto del de las tablas incluidas en ese esquema.

Es posible generar vistas dentro de otras vistas. Microsoft SQL Server


permite anidar vistas. El anidamiento no debe superar los 32 niveles. Es
posible que el lmite real del anidamiento de vistas sea inferior en
funcin de la complejidad de la vista y de la memoria disponible.

Debe especificar el nombre de todas las columnas de la vista en el caso


de que:

Alguna de las columnas de la vista derive de una expresin


aritmtica, una funcin integrada o una constante.

Dos o ms columnas de la vista tuviesen, en caso contrario, el mismo


nombre (normalmente, debido a que la definicin de la vista incluye
una combinacin y las columnas de dos o ms tablas diferentes
tienen el mismo nombre).

Desee darle a una columna de la vista un nombre distinto del de la


columna de la que deriva. (Tambin puede cambiar el nombre de las
columnas en la vista). Una columna de una vista hereda los tipos de
datos de la columna de la que deriva, aunque no cambie su nombre.

Las vistas pueden considerarse como tablas virtuales. Generalmente hablando,


una tabla tiene un conjunto de definiciones, y almacena datos fsicamente. Una
vista tambin tiene un conjunto de definiciones, que se construye en la parte
superior de la(s) tabla(s) u otra(s) vista(s), y no almacena datos fsicamente.

La sintaxis para la creacin de una vista es la siguiente:


CREATE VIEW "NOMBRE_VISTA" AS "Instruccin SQL"

Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la


siguiente tabla:
Tabla Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

Y deseamos crear una vista denominada V_Customer que contiene slo las
columnas First_Name, Last_Name y Pas de esta tabla, ingresaramos
CREATE VIEW V_Customer
AS SELECT First_Name, Last_Name, Country
FROM Customer

Ahora tenemos una vista llamada V_Customer con la siguiente estructura:


View V_Customer
(First_Name char(50),
Last_Name char(50),
Country char(25))

Podemos utilizar tambin una vista para aplicar uniones a dos tablas. En este
caso, los usuarios slo ven una vista en vez de dos tablas, y la instruccin SQL
que los usuarios necesitan emitir se vuelve mucho ms simple. Digamos que
tenemos las siguientes dos tablas:

Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999

Tabla Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

Y deseamos construir una vista que tenga ventas organizadas segn la regin.
Colocaramos la siguiente instruccin SQL:
CREATE VIEW V_REGION_SALES
AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

Esto nos brinda una vista, V_REGION_SALES, que se ha definido para las
ventas de los negocios segn los registros de la regin. Si deseamos saber el
contenido de esta vista, ingresamos:
SELECT * FROM V_REGION_SALES
Resultado:
REGION SALES
East 700
West 2050

CREATE INDEX
Los ndices nos ayudan a obtener datos de las tablas en forma ms rpida.
Utilicemos un ejemplo para ilustrar este punto: Digamos que estamos
interesados en leer en un libro de jardinera acerca de cmo cultivar pimientos.
En vez de leer el libro desde el comienzo hasta que encontremos una seccin
sobre pimientos, es mucho ms rpido para nosotros ir a la seccin ndice al
final del libro, ubicar qu pginas contienen la informacin sobre pimientos, y
luego dirigirnos a esas pginas directamente. Al dirigirnos al ndice primero
ahorramos tiempo y seguramente es el mtodo ms eficiente para ubicar la
informacin que necesitamos.

El mismo principio se aplica para la obtencin de datos desde una tabla de


base de datos. Sin un ndice, el sistema de base de datos lee a travs de toda
la tabla (este proceso se denomina escaneo de tabla) para localizar la
informacin deseada. Con el ndice correcto en su lugar, el sistema de base de
datos puede entonces primero dirigirse al ndice para encontrar de dnde
obtener los datos, y luego dirigirse a dichas ubicaciones para obtener los datos
necesarios. Esto es mucho ms rpido.

Un ndice es una estructura de disco asociada con una tabla o una vista que
acelera la recuperacin de filas de la tabla o de la vista. Un ndice contiene
claves generadas a partir de una o varias columnas de la tabla o la vista.
Dichas claves estn almacenadas en una estructura (rbol b) que permite que
SQL Server busque de forma rpida y eficiente la fila o filas asociadas a los
valores de cada clave.

Por lo tanto, generalmente se recomienda crear ndices en tablas. Un ndice


puede cubrir una o ms columnas. La sintaxis general para la creacin de un
ndice es:

CREATE INDEX "NOMBRE_NDICE" ON "NOMBRE_TABLA"


(NOMBRE_COLUMNA)
nbindi: nombre del ndice que estamos definiendo. En una tabla no pueden
haber dos ndices con el mismo nombre de lo contrario da error.

nbtabla: nombre de la tabla donde definimos el ndice. A continuacin entre


parntesis se indica la composicin del ndice (las columnas que lo forman).

nbcol: nombre de la columna que indexamos. Despus del nombre de la


columna podemos indicar cmo queremos que se ordenen las filas segn el
ndice mediante las clusulas ASC/DESC.

ASC: la clusula ASC es la que se asume por defecto e indica que el orden
elegido para el ndice es ascendente (en orden alfabtico si la columna es de
tipo texto, de menor a mayor si es de tipo numrico, en orden cronolgico si es
de tipo fecha).

DESC: indica orden descendente, es decir el orden inverso al ascendente.

Podemos formar un ndice basado en varias columnas, en este caso despus


de indicar la primera columna con su orden, se escribe una coma y la segunda
columna tambin con su orden, as sucesivamente hasta indicar todas las
columnas que forman el ndice.

Opcionalmente se pueden indicar las clusulas:

WITH PRIMARY indica que el ndice define la clave principal de la tabla, si la


tabla ya tiene una clave principal, la sentencia CREATE INDEX dar error.

WITH DISALLOW NULL indica que no permite valores nulos en las columnas
que forman el ndice.

WITH IGNORE NULL indica que las filas que tengan valores nulos en las
columnas que forman el ndice se ignoran, no aparecen cuando recuperamos
las filas de la tabla utilizando ese ndice.

Ejemplo:

CREATE UNIQUE INDEX ind1 ON clientes (provincia, poblacion ASC,


fecha_nacimiento DESC)

Crea un ndice llamado ind1 sobre la tabla clientes formado por las columnas
provincia, poblacin y fecha_nacimiento. Este ndice permite tener ordenadas
las filas de la tabla clientes de forma que aparezcan los clientes ordenados por
provincia, dentro de la misma provincia por poblacin y dentro de la misma
poblacin por edad y del ms joven al ms mayor.
Al aadir la clusula UNIQUE el ndice no permitir duplicados por lo que no
podra tener dos clientes con la misma fecha de nacimiento en la misma
poblacin y misma provincia, para evitar el poblema sera mejor utilizar:

CREATE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento


DESC)

Digamos que tenemos la siguiente tabla:


Tabla Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

Si deseamos crear un ndice tanto en Ciudad como en Pas, ingresaramos,

CREATE INDEX IDX_CUSTOMER_LAST_NAME


on CUSTOMER (Last_Name)

Crear un ndice por ciudad y pas :

CREATE INDEX IDX_CUSTOMER_LOCATION


on CUSTOMER (City, Country)

No hay una regla estricta respecto de cmo nombrar un ndice. El mtodo


generalmente aceptado es colocar un prefijo, tal como IDX_, antes del
nombre de un ndice para evitar la confusin con otros objetos de la base de
datos. Tambin es una buena idea brindar informacin sobre qu tabla y
columna(s) se utilizar el ndice.

Note que la sintaxis exacta para CREATE INDEX puede ser distinta segn las
diferentes bases de datos. Debera consultar con su manual de referencia de
base de datos para obtener la sintaxis precisa.

ndices y restricciones
Los ndices se crean automticamente cuando las restricciones PRIMARY KEY y
UNIQUE se definen en las columnas de tabla. Por ejemplo, cuando crear una
tabla e identifica una columna particular a la clave primaria, SQL Server
Database Engine (Motor de base de datos de SQL Server) crea
automticamente una restriccin PRIMARY KEY y un ndice en esa columna.

DROP INDEX
La sentencia DROP INDEX sirve para eliminar un ndice de una tabla. Se
elimina el ndice pero no las columnas que lo forman.
La sintaxis es la siguiente:

Ejemplo:

DROP INDEX ind1 ON clientes;

ELIMINAR UNA TABLA


La declaracin DROP Table se usa para borrar una tabla
DROP TABLE table_name

ELIMINAR UNA BASE DE DATOS


La declaracin DROP DATABASE se usa para eliminar toda una base de datos.
DROP DATABASE database_name

CONSTRAINT
Se utiliza la clusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE
TABLE para crear o eliminar ndices. Existen dos sintaxis para esta clusula
dependiendo si desea Crear Eliminar un ndice de un nico campo o si se
trata de un campo multindice. Si se utiliza el motor de datos de Microsoft, slo
podr utilizar esta clusula con las bases de datos propias de dicho motor. Para
los ndices de campos nicos:

CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES tabla externa


[(campo externo1, campo externo2)]}

Para los ndices de campos mltiples:


CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [,...]]) |
UNIQUE (nico1[, nico2 [, ...]]) |
FOREIGN KEY (ref1[, ref2 [,...]]) REFERENCES tabla externa
[(campo externo1 ,campo externo2 [,...])]}

En donde:
nombre Es el nombre del ndice que se va a crear.
primarioN Es el nombre del campo o de los campos que forman el
ndice primario
nicoN Es el nombre del campo o de los campos que forman el
ndice de clave nica.
refN Es el nombre del campo o de los campos que forman el
ndice externo (hacen referencia a campos de otra tabla).
tabla externa Es el nombre de la tabla que contiene el campo o los
campos referenciados en refN
campos Es el nombre del campo o de los campos de la tabla externa
externos especificados por ref1, ref2,... , refN

Si se desea crear un ndice para un campo cuando se est utilizando las


instrucciones ALTER TABLE o CREATE TABLE la clusula CONTRAINT debe
aparecer inmediatamente despus de la especificacin del campo indexado.
Si se desea crear un ndice con mltiples campos cuando se est utilizando las
instrucciones ALTER TABLE o CREATE TABLE la clusula CONSTRAINT debe
aparecer fuera de la clusula de creacin de tabla.

Indice Descripcin
UNIQUE Genera un ndice de clave nica. Lo que implica que los registros
de la tabla no pueden contener el mismo valor en los campos
indexados.
PRIMARY Genera un ndice primario el campo o los campos especificados.
KEY Todos los campos de la clave principal deben ser nicos y no
nulos, cada tabla slo puede contener una nica clave principal
FOREIGN Genera un ndice externo (toma como valor del ndice campos
KEY contenidos en otras tablas). Si la clave principal de la tabla
externa consta de ms de un campo, se debe utilizar una
definicin de ndice de mltiples campos, listando todos los
campos de referencia, el nombre de la tabla externa, y los
nombres de los campos referenciados en la tabla externa en el
mismo orden que los campos de referencia listados. Si los
campos referenciados son la clave principal de la tabla externa,
no tiene que especificar los campos referenciados,
predeterminado por valor, el motor Jet se comporta como si la
clave principal de la tabla externa estuviera formada por los
campos referenciados.

PROCEDIMIENTOS ALMACENADOS
Es un conjunto de cdigo puro del lenguaje que utilizamos dentro de las bases
de datos como por ejemplo: create table, insert into, Select from. Que se
almacena fsicamente en la base de datos y de la misma forma se exportan
cuando creamos una copia de seguridad de nuestra base de datos.

Como funcionan: Los procedimientos almacenados se basan en una estructura


definida por SQL SERVER

Iniciamos con:

CREATE PROCEDURE nombre_del_procedimiento @variables tipo(longitud) }


AS
BEGIN
Todo el cdigo puro de base de datos
END

Como probamos: Esto es lo ms fcil de realizar solo necesitamos lo siguiente:

Escribimos EXEC nombre_del_procedimiento ' variables',12,' variables'

Nota: Cabe destacar que no necesariamente se deben definir variables en el


caso de un Select * From solo pondremos EXEC y nombre del procedimiento
Vamos a realizar un ejemplo:

Creemos una base de datos con el nombre que decidamos


Creemos la siguiente tabla:

Ahora definimos el procedimiento almacenado para insertar un nuevo


registro(Recordemos que todo lo que est dentro del Begin puede ser
cualquier sentencia de cdigo puro de SQL SERVER: Insert into, Delete
From, Update set, etc)

Ejecutamos el cogido y ahora probamos con los siguientes datos:

Codigo: 001
Nombre: Fabian
Apellido: Bermeo
Edad: 19
Universidad: Tecnolgico Sudamericano

Ejecutamos el procedimiento almacenado con los datos anteriores


tomando en consideracin que: los campos tipo int se envan sin comilla
el resto dentro de comilla.
Para ejecutar el procedimiento almacenado escribimos EXEC + el
nombre del procedimiento + las variables si fuera el caso y clic en
ejecutar

Ahora revisamos en nuestra tabla y tenemos lo siguiente:


create procedure almacena_est1 @codigo char(15),
@nombre varchar(20), @apellido varchar(20), @fecna
date
as
begin
insert into estudiante(ci, nombre, apellido,
fechanac)
values(@codigo, @nombre, @apellido, @fecna)
end
exec almacena_est1 '100','Prueba','Prueva','01/01/2000';

create procedure pa
@mes int, @cant int output
as
begin

select @cant = COUNT(*)


from estudiante
where nombre like '%a%' and MONTH
(fechanac)= @mes

end
declare @s int
exec pa 1, @s output
select @s as cantidad;

CREATE TRIGGER insertaest


ON dbo.estudiante
FOR insert, update
AS
BEGIN
declare @ed int
declare @nom varchar(10)
declare @ape varchar(10)
select @ed = year(getdate()- inserted.fecna),
@nom = inserted.nombre,
@ape = inserted.apellido
from inserted
insert into dbo.tabla2
values(@nom, @ape,@ed)
END

Tabla2(codigo, nombre, edad)

TRIGGERS
Un "trigger" (disparador o desencadenador) es un tipo de procedimiento
almacenado que se ejecuta cuando se intenta modificar los datos de una tabla
(o vista).

Se definen para una tabla (o vista) especfica.

Se crean para conservar la integridad referencial y la coherencia entre los


datos entre distintas tablas.

Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la


que se defini un disparador para alguna de estas acciones (insercin,
actualizacin y eliminacin), el disparador se ejecuta (se dispara) en forma
automtica.

Un trigger se asocia a un evento (insercin, actualizacin o borrado) sobre una


tabla.

La diferencia con los procedimientos almacenados del sistema es que los


triggers:

No pueden ser invocados directamente; al intentar modificar los


datos de una tabla para la que se ha definido un disparador, el
disparador se ejecuta automticamente.

No reciben y retornan parmetros.

Son apropiados para mantener la integridad de los datos, no para


obtener resultados de consultas.

Los disparadores, a diferencia de las restricciones "check", pueden hacer


referencia a campos de otras tablas. Por ejemplo, puede crearse un trigger de
insercin en la tabla "ventas" que compruebe el campo "stock" de un artculo
en la tabla "articulos"; el disparador controlara que, cuando el valor de "stock"
sea menor a la cantidad que se intenta vender, la insercin del nuevo registro
en "ventas" no se realice.

Los disparadores se ejecutan DESPUES de la ejecucin de una instruccin


"insert", "update" o "delete" en la tabla en la que fueron definidos. Las
restricciones se comprueban ANTES de la ejecucin de una instruccin "insert",
"update" o "delete". Por lo tanto, las restricciones se comprueban primero, si
se infringe alguna restriccin, el desencadenador no llega a ejecutarse.

Los triggers se crean con la instruccin "create trigger". Esta instruccin


especifica la tabla en la que se define el disparador, los eventos para los que
se ejecuta y las instrucciones que contiene.

Sintaxis bsica:
create triggre NOMBREDISPARADOR
on NOMBRETABLA
for EVENTO- insert, update o delete
as
SENTENCIAS

Analizamos la sintaxis:
"Create trigger" junto al nombre del disparador.

"on" seguido del nombre de la tabla o vista para la cual se


establece el trigger.

Luego de "for", se indica la accin (evento, el tipo de


modificacin) sobre la tabla o vista que activar el trigger. Puede
ser "insert", "update" o "delete". Debe colocarse al menos UNA
accin, si se coloca ms de una, deben separarse con comas.

Luego de "as" viene el cuerpo del trigger, se especifican las


condiciones y acciones del disparador; es decir, las condiciones
que determinan cuando un intento de insercin, actualizacin o
borrado provoca las acciones que el trigger realizar.

Consideraciones generales:
"Create trigger" debe ser la primera sentencia de un bloque y slo
se puede aplicar a una tabla.

Un disparador se crea solamente en la base de datos actual pero


puede hacer referencia a objetos de otra base de datos.

Las siguientes instrucciones no estn permitidas en un


desencadenador: create database, alter database, drop database,
load database, restore database, load log, reconfigure, restore
log, disk init, disk resize.
Se pueden crear varios triggers para cada evento, es decir, para
cada tipo de modificacin (insercin, actualizacin o borrado) para
una misma tabla. Por ejemplo, se puede crear un "insert trigger"
para una tabla que ya tiene otro "insert trigger".

Un ejemplo de triggers para el control de Stock


USE master
GO
IF EXISTS (SELECT NAME FROM sys.databases
WHERE name = StockArticulos)
BEGIN
DROP DATABASE StockArticulos
END

CREATE DATABASE StockArticulos


GO

USE StockArticulos
GO

CREATE TABLE dbo.Articulos (ID INT PRIMARY KEY, NOMBRE


VARCHAR(100),STOCK DECIMAL (18,2))
GO

CREATE TABLE dbo.Movimientos (TRANSACCION INT,FECHA DATE


DEFAULT(GETDATE()),ARTICULO_ID INT FOREIGN KEY
REFERENCES DBO.ARTICULOS(ID),CANTIDAD DECIMAL(18,2), TIPO CHAR(1)
CHECK (TIPO =I OR TIPO = O))
GO

Insertamos registros a la tabla Articulos


INSERT INTO dbo.Articulos(ID,NOMBRE,STOCK) VALUES
(1,Monitores,0),(2,CPU,0),(3,Mouse,0)
GO

Creamos los triggers para tener actualizado los articulos


CREATE TRIGGER dbo.MovimientosInsert ON dbo.Movimientos
FOR INSERT
AS
BEGIN
No retorna el mensaje de cantidad de registros afectados
SET NOCOUNT ON
UPDATE DBO.ARTICULOS
SET STOCK = STOCK + T.PARCIAL
FROM DBO.ARTICULOS A
INNER JOIN
( SELECT ARTICULO_ID,
SUM(CASE WHEN TIPO=I THEN CANTIDAD ELSE -CANTIDAD END)
AS PARCIAL FROM INSERTED
GROUP BY ARTICULO_ID
)T
ON
A.ID = T.ARTICULO_ID
END
GO

CREATE TRIGGER dbo.MovimientosDelete ON dbo.Movimientos


FOR DELETE
AS
BEGIN
No retorna el mensaje de cantidad de registros afectados
SET NOCOUNT ON
UPDATE dbo.Articulos
SET STOCK = STOCK T.PARCIAL
FROM dbo.Articulos A
INNER JOIN
( SELECT ARTICULO_ID,
SUM(CASE WHEN TIPO=I THEN CANTIDAD ELSE -CANTIDAD END)
AS PARCIAL FROM DELETED
GROUP BY ARTICULO_ID
)T
ON
A.ID = T.ARTICULO_ID
END
GO

Probemos el ejercicio
Mostremos el Stock actual
SELECT A.ID,A.NOMBRE,A.STOCK FROM dbo.Articulos A

Insertemos un registro para el articulo 1


INSERT INTO dbo.Movimientos
(TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO)
VALUES (1,1,GETDATE(),100,I')

Mostremos el Stock actual para el ID 1


SELECT A.ID,A.NOMBRE,A.STOCK FROM dbo.Articulos A WHERE A.ID = 1

Insertemos otros registros


INSERT INTO dbo.Movimientos
(TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO)
VALUES (2,1,GETDATE(),10,I'), (3,1,GETDATE(),5,O'), (4,2,GETDATE(),5,I')

Mostremos el Stock actual para el ID 1


SELECT A.ID,A.NOMBRE,A.STOCK FROM dbo.Articulos A WHERE A.ID = 1

Eliminemos la transaccion (1) de cantidad = 100


DELETE FROM dbo.Movimientos WHERE TRANSACCION = 1

Eliminemos la transaccion (3) de cantidad = 5


DELETE FROM dbo.Movimientos WHERE TRANSACCION = 3

Mostremos el stock actual de la tabla Articulos


SELECT A.ID,A.NOMBRE,A.STOCK FROM dbo.Articulos A

Elkiminamos todos los movimientos realizados


DELETE FROM dbo.Movimientos

Deshabilitar los triggers


ALTER TABLE dbo.Movimientos DISABLE TRIGGER ALL

Mostremos lo que pasa se insertamos un registro en la tabla


Movimientos que tiene deshabilitados los triggers
INSERT INTO dbo.Movimientos
(TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO)
VALUES (1,1,GETDATE(),100,I')

Mostremos el stock actual de la tabla Articulos


SELECT A.ID,A.NOMBRE,A.STOCK FROM dbo.Articulos A

Gestin de privilegios
GRANT: Asignar privilegios
Esta instruccin sirve para asignar permisos a un usuario. Su sintaxis resumida
es:

GRANT privilegios
ON elemento
TO nombreUsuario IDENTIFIED BY 'contrasea'
[ WITH GRANT OPTION ];

Privilegios puede ser ALL PRIVILEGES, para asignar todos los privilegios
excepto GRANT, o una lista de rdenes SQL separadas por coma (SELECT,
INSERT, DELETE, UPDATE).

Elemento puede ser:

* para sealar todas las bases de datos.


baseDeDatos *
Todas las tablas de la base de datos.

baseDeDatos.Tabla
Una tabla determinada de una base de datos concreta

En cuanto a al nombre de usuario, siempre se escribe


nombreUsuario@nombrehost.

IDENTIFIED, sirve para definir la contrasea del usuario.

WITH GRANT OPTION, es opcional y permite asignar al usuario privilegios


para crear otros usuarios.

EJEMPLO:
GRANT ALL PRIVILEGES ON * to administrador@localhost IDENTIFIED
BY "inorik"

GRANT SELECT, INSERT, UPDATE ON hezigune.* to web@localhost


IDENTIFIED BY "inorik"

GRANT SELECT, INSERT, UPDATE ON facturacion.clientes to


comercial@localhost IDENTIFIED BY "inorik"

REVOKE: Quitar privilegios

REVOKE privilegios
ON elemento
FROM nombre_de_usuario;

Los privilegios son los mismos que en el caso de GRANT, ms el GRANT


OPTION.

EJEMPLO:
REVOKE ALL PRIVILEGES ON * FROM administrador@localhost

REVOKE GRANT OPTION hezigune.* to web@localhost IDENTIFIED BY


"inorik"

REVOKE SELECT, INSERT, UPDATE ON facturacion.clientes FROM


comercial@localhost

BACKUPS Y RESTAURACIN DE BASES DE DATOS CON SQL SERVER


2008 R2

Proceso de Backup:
Escogemos la base de datos para realizar su respaldo, hacemos clic derecho,
tareas, copia de seguridad.
En la pestaa General escribimos el nombre del respaldo, en este caso
compania_backup y un tipo de copia completa.

En la parte de Destino hacemos clic en el botn Agregar y copiamos el path


donde se almacenar el archivo de backup de la base de datos.

Vamos a la pestaa de Opciones y hacemos clic en las siguientes opciones:


1) Sobrescribir todos los conjuntos de copias existentes
2) Comprobar copia de seguridad al finalizar.
3) Realizar suma de comprobacin antes de escribir en los medios.

Finalmente damos clic en Aceptar y esperamos a que SQL Server haga la copia
de seguridad.

Vamos al explorador de Windows y colocamos el path anteriormente copiado.


Este archivo .bak podemos almacenarlo en cualquier medio seguro, pues
contiene nuestra base de datos.

En el proceso de restauracin lo utilizaremos, por lo que es recomendable


copiarlo en una ubicacin donde se lo pueda hallar fcilmente (solo por
cuestiones didcticas, jams almacene su base de datos en la raz en la vida
real).

Proceso de Recuperacin
Hacemos clic en Base de datos del panel principal de la izquierda. Damos clic
en Restaurar base de datos.
Escribimos el nombre de la base de datos, en este caso compania y elegimos
desde donde vamos a restaurar, en el ejemplo elegimos desde dispositivo y
buscamos el archivo .bak
Finalmente hacemos una consulta para comprobar los datos.
http://darwinproanioorellana.blogspot.com/2011/02/backups-y-restauracion-
de-bases-de.html

Você também pode gostar