Sei sulla pagina 1di 50

Instituto de Educacin Superior

San Ignacio de Monterrico

DISEO DE BASES DE DATOS

1. CONCEPTOS

- Base de Datos.- Cualquier conjunto de datos organizados para su


respectivo almacenamiento en la memoria de un ordenador o computador,
diseado para facilitar su mantenimiento y acceso de forma estndar. Los
datos suelen aparecer en forma de texto, nmeros o grficos. Hay cuatro
modelos principales de bases de datos: el modelo jerrquico, el modelo en
Red, el modelo relacional (el ms extendido hoy en da).

- Base de Datos Relacional.- Tipo de base de datos o sistema de


administracin de bases de datos, que almacena informacin estrictamente
en tablas de valores (filas y columnas de datos) y realiza bsquedas
utilizando los datos de columnas especificadas de una tabla para encontrar
datos adicionales en otra tabla, en donde todas las operaciones de la base de
datos operan sobre estas mismas tablas.

Estas bases de datos, son percibidas por los usuarios como una coleccin de
relaciones normalizadas de diversos grados que varan con el tiempo.

2. MODELO DE DATOS
Es un conjunto de herramientas conceptuales para describir los datos, las
relaciones entre ellos, su semntica y sus limitantes.

Clases de Modelos de Datos:

Modelos Lgicos Basados en Objetos.- Son aquellos que nos permiten una
definicin clara y concisa de los esquemas conceptuales y de visin. Su
caracterstica principal es que permiten definir en forma detallada las limitantes
de los datos.
Modelos Lgicos Basados en Registros.- Operan sobre niveles conceptuales
y de visin. Se caracterizan principalmente porque permiten una descripcin ms

Formando Emprendedores de Calidad para un Mundo Empresarial 1


Instituto de Educacin Superior
San Ignacio de Monterrico

amplia de la implantacin, pero no son capaces de especificar con claridad las


limitantes de los datos.

Modelos Fsicos de Datos.- Describen los datos en el nivel ms bajo y permiten


identificar algunos detalles de implantacin para el manejo del hardware de
almacenamiento.

3. SISTEMAS DE GESTIN DE BASES DE DATOS

Arquitectura de Red.- La infraestructura de comunicacin por medio de redes.


La red ms sencilla es una conexin directa entre dos computadoras. Usando la
terminologa de redes, una relacin es llamada conjunto, y cada conjunto est
compuesto por al menos dos tipos de registros:

- Un registro propietario, que es el equivalente al padre en el


modelo jerrquico.
- Un registro miembro, equivalente a un registro hijo en el modelo
jerrquico.

La diferencia entre el modelo jerrquico y el de red es que este ltimo incluye una
condicin en la cual un miembro puede aparecer en ms de un conjunto. Es
decir, un miembro puede tener muchos propietarios.

Lo que distingue a este modelo de los dems es que, en este todos los registros
mantienen una interconexin entre si, y tambin pueden existir relaciones de
muchos a muchos.

Arquitectura Jerrquica.- La estructura de base de datos jerrquica puede ser


representada como un rbol hacia abajo. El usuario percibe la base de datos
como una jerarqua de segmentos. Un segmento, tambin llamado nodo, es el
equivalente al tipo registro de un sistema de archivos, es decir que es una
coleccin de registros que se perciben organizados para conformar la estructura
de un rbol. Jerrquicamente, el nivel superior (la raz) es percibido como el
padre del segmento que directamente depende de l. En cambio, los segmentos

Formando Emprendedores de Calidad para un Mundo Empresarial 2


Instituto de Educacin Superior
San Ignacio de Monterrico

abajo de otros segmentos son hijos de los segmentos que se encuentran arriba
de ellos. Una de sus caractersticas principales es que un segmento padre puede
tener varios segmentos hijos. Y al mismo tiempo se dan problemas como la
redundancia de informacin, que es superado por otros modelos.

Arquitectura Relacional.- El gran salto en la administracin de bases de datos


se produce con el modelo relacional, basado en la proposicin de Edgar Codd,
en 1970. La proposicin del diagrama Entidad-Relacin hizo que los diseadores
y programadores prefirieran la implantacin de este nuevo modelo. Entendemos
al diagrama entidad-relacin como una propuesta de ver los datos como objetos
del mundo real, diferenciables unos de otros por sus caractersticas. Un objeto o
entidad es describible por la coleccin de caractersticas que tienen y, a la vez,
es diferenciable de otros objetos por las mismas caractersticas o atributos.
Entonces, se tiene una serie de entidades que comparten elementos
caractersticos comunes, o un conjunto de entidades. Estos conjuntos de
entidades pueden ser ilimitados, pero los atributos que los diferencian son
limitables. Actualmente este modelo es el ms utilizado en la prctica, esto es
debido a la facilidad de entendimiento y de manipulacin por parte de
diseadores y administradores.
Para entender este modelo de base de datos hay que tener claros ciertos
conceptos sencillos que son importantes a la hora de disear la base de datos y
sus relaciones.
Entidad: es una persona, cosa o transaccin de la cual se puede guardar
informacin. Las entidades, en la fase de diseo (diagrama E-R), llegarn a
convertirse posteriormente en las tablas de la base de datos.
Atributos: son las caractersticas que se desean almacenar de las entidades.
Relacin: una relacin es una asociacin entre dos entidades.
Conectividad: Se utiliza para clasificar el tipo de relacin que une a las dos
entidades (uno a uno, un a muchos muchos a muchos).
Especifica el nmero especfico de ocurrencias de la entidad asociadas con una
ocurrencia de la entidad relacionada.

Formando Emprendedores de Calidad para un Mundo Empresarial 3


Instituto de Educacin Superior
San Ignacio de Monterrico

4. ADMINISTRADOR DE LA BASE DE DATOS (DBA)

El administrador de datos (DA) es la persona identificable que tendr la


responsabilidad central (de gestionar y controlar todas las actividades que tienen
que ver con los datos de la empresa y con la base de datos). Ya que los datos
son uno de los activos ms valiosos de la empresa, es imperativo que exista una
persona que los entienda junto con las necesidades de la empresa con respecto
a esos datos, a un nivel de administracin superior. Por lo tanto, es labor del
administrador decidir en primer lugar qu datos deben ser almacenados en la
base de datos y establecer polticas para mantener y manejar esos datos una vez
almacenados.
El administrador de base de datos (DBA) es el tcnico responsable de
implementar las decisiones del administrador de datos. Por lo tanto, debe ser un
profesional en IT. El trabajo del DBA consiste en crear la base de datos real e
implementar los controles tcnicos necesarios para hacer cumplir las diversas
decisiones de las polticas hechas por el DA. El DBA tambin es responsable de
asegurar que el sistema opere con el rendimiento adecuado y de proporcionar
una variedad de otros servicios tcnicos.

El administrador de datos juega un papel ms importante que el administrador de


la base de datos en las siguientes etapas del ciclo de vida: planificacin de la
base de datos, definicin del sistema, recoleccin y anlisis de los requisitos,
diseo conceptual y diseo lgico de la base de datos. En el resto de las etapas
es donde el administrador de la base de datos tiene el papel ms importante:
seleccin del SGBD, diseo de las aplicaciones, diseo fsico, prototipo,
implementacin, conversin y carga de datos, prueba y mantenimiento.

5. DICCIONARIO DE DATOS
El diccionario de datos guarda y organiza los detalles del Diagrama de Flujo de
Datos (DFD). Es el segundo componente del anlisis estructurado. Tambin se
conoce como "Data Repository". Incluye el contenido de los data flow (flujos de
datos), los "data store", las entidades externas y los procesos.

Formando Emprendedores de Calidad para un Mundo Empresarial 4


Instituto de Educacin Superior
San Ignacio de Monterrico

Data elements (elementos de datos).- Es la parte ms pequea de los datos


que tiene significado en el sistema de informacin. Se combinan varios
elementos de datos para hacer los registros o "data structures". Ejemplo:
Nombre, Direccin, Dni.

Las caractersticas que se describen en el diccionario de datos son:

Name.- Es el nombre del elemento de datos; debe ser significativo.


Alias.- Cualquier otro nombre que se pueda usar para referirse al elemento de
datos. Por ejemplo, el nombre de un elemento de datos puede ser Balance
actual, y el alias puede ser Deuda. Solo se incluye el alias si realmente es
necesario utilizarlo.
Type y Size.- se refiere a si el elemento de datos contiene valor numrico,
caracteres o alfabtico. Size o tamao se refiere al mximo de caracteres o de
dgitos que puede tener el elemento de datos.
Formato de salida o mascara de edicin.- Indica cmo se presenta el dato al
mostrarse en pantalla o al imprimirse en un reporte. Por ejemplo, el nmero de
telfono del cliente se puede guardar en el disco usando solo nmeros
7878889999, pero presentarse editado en la pantalla o en el reporte (787) 888-
9999.
Default value.- Es el valor que el elemento de datos tiene si no se cambia
entrando otro valor.
Prompt, column header or field caption.- Es el nombre que se presenta en la
pantalla o el ttulo del dato en el reporte.
Source (fuente).- De dnde se origina el valor del elemento de datos. Puede ser
una forma, un departamento, otro sistema, etc.
Security.- Identifica los individuos o departamentos que pueden modificar el
elemento de datos. Por ejemplo, la lnea de crdito puede ser cambiada por el
gerente de crdito.
Responsible user(s).- Identifica el (los) usuarios responsables de entrar o
cambiar los valores del elemento de datos.
Acceptable Data and Data validation.- Se especifica el dominio o valores
permitidos. Pueden ser valores especficos, una lista de valores, los valores que

Formando Emprendedores de Calidad para un Mundo Empresarial 5


Instituto de Educacin Superior
San Ignacio de Monterrico

se encuentren en otro archivo, etc. El valor puede tener reglas de validacin; por
ejemplo, el salario debe estar entre lo permitido para la posicin que el empleado
ocupa.
Derivation formula.- Si el valor es el resultado de un clculo, se muestra la
frmula que se utiliza.
Description or comments.- Para proveer informacin adicional, notas o
descripciones.

Data Structure (Estructura de datos)


Tambin se conocen como record. Es la combinacin de elementos de datos
relacionados que se incluye en un flujo de datos o se retiene en un "data store".

Data flows (Flujo de datos) - Las caractersticas que se describen en el flujo de


datos son:

Name El nombre del flujo de datos tal y como aparece en el DFD.


Alias Otro nombre con que se conozca el flujo de datos.
Abbreviation or ID Cdigo que provee acceso rpido al flujo de datos en un
diccionario de datos automatizado.
Description Describe el flujo de datos y su propsito.
Origin De donde sale (la fuente) el flujo de datos. Puede ser un proceso, un
data store o una entidad.
Destination El punto final del flujo de datos en el DFD. Puede ser un proceso,
un data store o una entidad.
Record Cada flujo de datos representa un grupo de elementos de datos
relacionados, o un record. Los records y los flujos de datos se definen por
separado para que ms de un flujo de datos o data store pueda hacer
referencia al mismo record.
Volume and frequency Describe el nmero esperado de ocurrencias para el
flujo de datos por unidad de tiempo.

Data store Las caractersticas que se describen en el data store son:


Name El nombre del data store segn aparece en el DFD.
Alias Otro nombre con el que se pueda llamar al data store.

Formando Emprendedores de Calidad para un Mundo Empresarial 6


Instituto de Educacin Superior
San Ignacio de Monterrico

Abbreviation or ID Cdigo que provee un acceso rpido al data store en un


diccionario de datos automatizado.
Description Describe el data store y su propsito.
Input data flows Los nombres de los flujos de datos que entran al data store.
Output data flows Los nombres de los flujos de datos que salen del data store.
Record El nombre del record en el diccionario de datos para el data store.
Volume and Frequency El nmero estimado de records guardados en el data
store, al igual que el aumento o cambio esperado.

Proceso Se documenta cada funcin primitiva. Se incluye:


Process name or label El nombre del proceso como aparece en el DFD.
Purpose or description Un resumen del propsito general del proceso. Los
detalles se documentan en el Process Description.
Process number Nmero de referencia que identifica el proceso y su relacin
con los niveles del sistema.
Input data flows Los nombres de los flujos de datos que entran al proceso.
Output data flows Los nombres de los flujos de datos que salen del proceso.
Process Description Se explican los detalles del proceso.

Entidades Externas Las caractersticas que se describen son:


Name
Alias
Description Describe a la entidad y su propsito.
Input data flow
Output data flow

Record (Registro) Se describe lo siguiente:


Record name
Alias
Description
Record content or composition Una lista de todos los elementos de datos
incluidos en el record. Se identifica cualquier LLAVE primaria, o sea un
elemento de datos en el record que identifica en forma nica al record.

Formando Emprendedores de Calidad para un Mundo Empresarial 7


Instituto de Educacin Superior
San Ignacio de Monterrico

DISEO LOGICO DE BASE DE DATOS

El objetivo del diseo lgico es convertir los esquemas conceptuales locales en un


esquema lgico global que se ajuste al modelo de SGBD sobre el que se va a
implementar el sistema. Mientras que el objetivo fundamental del diseo conceptual
es la complecin y expresividad de los esquemas conceptuales locales, el objetivo
del diseo lgico es obtener una representacin que use de modo ms eficiente
posible, los recursos que el modelo de SGBD posee para estructurar los datos y
para modelar las restricciones.

Los modelos de bases de datos ms extendidos son el modelo relacional, el modelo


de red y el modelo jerrquico. El modelo orientado a objetos es tambin muy
popular, pero no existe un modelo estndar orientado a objetos.

En un primer paso en la fase del diseo lgico consistir en la conversin de esos


mecanismos de representacin de alto nivel en trminos de las estructuras de bajo
nivel disponibles en el modelo relacional.

Metodologa de diseo lgico en el modelo relacional

La metodologa que se va a seguir para el diseo lgico en el modelo relacional


consta de dos fases, cada una de ellas compuesta por varios pasos que se detallan
a continuacin.

1. Convertir los esquemas conceptuales locales en esquemas lgicos locales

En este paso, se eliminan de cada esquema conceptual las estructuras de datos


que los sistemas relacionales no modelan directamente:

(a) Eliminar las relaciones de muchos a muchos, sustituyendo cada una de ellas
por una nueva entidad intermedia y dos relaciones de uno a muchos de esta
nueva entidad con las entidades originales. La nueva entidad ser dbil, ya que
sus ocurrencias dependen de la existencia de ocurrencias en las entidades
originales.

(b) Eliminar las relaciones entre tres o ms entidades, sustituyendo cada una de
ellas por una nueva entidad (dbil) intermedia que se relaciona con cada una de

Formando Emprendedores de Calidad para un Mundo Empresarial 8


Instituto de Educacin Superior
San Ignacio de Monterrico

las entidades originales. La cardinalidad de estas nuevas relaciones binarias


depender de su significado.

(c) Eliminar las relaciones recursivas, sustituyendo cada una de ellas por una
nueva entidad (dbil) y dos relaciones binarias de esta nueva entidad con la
entidad original. La cardinalidad de estas relaciones depender de su significado.

(d) Eliminar las relaciones con atributos, sustituyendo cada una de ellas por una
nueva entidad (dbil) y las relaciones binarias correspondientes de esta nueva
entidad con las entidades originales. La cardinalidad de estas relaciones
depender del tipo de la relacin original y de su significado.

(e) Eliminar los atributos multievaluados, sustituyendo cada uno de ellos por una
nueva entidad (dbil) y una relacin binaria de uno a muchos con la entidad
original.

(f) Revisar las relaciones de uno a uno, ya que es posible que se hayan
identificado dos entidades que representen el mismo objeto (sinnimos). Si as
fuera, ambas entidades deben integrarse en una sola.

(g) Eliminar las relaciones redundantes. Una relacin es redundante cuando se


puede obtener la misma informacin que ella aporta mediante otras relaciones. El
hecho de que haya dos caminos diferentes entre dos entidades no implica que
uno de los caminos corresponda a una relacin redundante, eso depender del
significado de cada relacin.

Una vez finalizado este paso, es ms correcto referirse a los esquemas


conceptuales locales refinados como esquemas lgicos locales, ya que se
adaptan al modelo de base de datos que soporta el SGBD escogido.

2. Derivar un conjunto de relaciones (tablas) para cada esquema lgico local

En este paso, se obtiene un conjunto de relaciones (tablas) para cada uno de los
esquemas lgicos locales en donde se representen las entidades y relaciones
entre entidades, que se describen en cada una de las vistas que los usuarios
tienen de la empresa. Cada relacin de la base de datos tendr un nombre, y el

Formando Emprendedores de Calidad para un Mundo Empresarial 9


Instituto de Educacin Superior
San Ignacio de Monterrico

nombre de sus atributos aparecer, a continuacin, entre parntesis. El atributo o


atributos que forman la clave primaria se subrayan. Las claves ajenas,
mecanismo que se utiliza para representar las relaciones entre entidades en el
modelo relacional, se especifican aparte indicando la relacin (tabla) a la que
hacen referencia.

A continuacin, se describe cmo las relaciones (tablas) del modelo relacional


representan las entidades y relaciones que pueden aparecer en los esquemas
lgicos.

(a) Entidades fuertes. Crear una relacin para cada entidad fuerte que incluya
todos sus atributos simples. De los atributos compuestos incluir slo sus
componentes.

Cada uno de los identificadores de la entidad ser una clave candidata. De entre
las claves candidatas hay que escoger la clave primaria; el resto sern claves
alternativas. Para escoger la clave primaria entre las claves candidatas se
pueden seguir estas indicaciones:

- Escoger la clave candidata que tenga menos atributos.


- Escoger la clave candidata cuyos valores no tengan probabilidad de
cambiar en el futuro.
- Escoger la clave candidata cuyos valores no tengan probabilidad de
perder la unicidad en el futuro.
- Escoger la clave candidata con el mnimo nmero de caracteres (si es de
tipo texto).
- Escoger la clave candidata ms fcil de utilizar desde el punto de vista de
los usuarios.

(b) Entidades dbiles. Crear una relacin para cada entidad dbil incluyendo
todos sus atributos simples. De los atributos compuestos incluir slo sus
componentes. Aadir una clave ajena a la entidad de la que depende. Para ello,
se incluye la clave primaria de la relacin que representa a la entidad padre en la
nueva relacin creada para la entidad dbil. A continuacin, determinar la clave
primaria de la nueva relacin.

Formando Emprendedores de Calidad para un Mundo Empresarial 10


Instituto de Educacin Superior
San Ignacio de Monterrico

(c) Relaciones binarias de uno a uno. Para cada relacin binaria se incluyen
los atributos de la clave primaria de la entidad padre en la relacin (tabla) que
representa a la entidad hijo, para actuar como una clave ajena. La entidad hijo es
la que participa de forma total (obligatoria) en la relacin, mientras que la entidad
padre es la que participa de forma parcial (opcional). Si las dos entidades
participan de forma total o parcial en la relacin, la eleccin de padre e hijo es
arbitraria. Adems, en caso de que ambas entidades participen de forma total en
la relacin, se tiene la opcin de integrar las dos entidades en una sola relacin
(tabla). Esto se suele hacer si una de las entidades no participa en ninguna otra
relacin.

(d) Relaciones binarias de uno a muchos. Como en las relaciones de uno a


uno, se incluyen los atributos de la clave primaria de la entidad padre en la
relacin (tabla) que representa a la entidad hijo, para actuar como una clave
ajena. Pero ahora, la entidad padre es la de "la parte del muchos" (cada padre
tiene muchos hijos), mientras que la entidad hijo es la de "la parte del uno" (cada
hijo tiene un solo padre).

(e) Jerarquas de generalizacin. En las jerarquas, se denomina entidad padre


a la entidad genrica y entidades hijo a las sub-entidades. Hay tres opciones
distintas para representar las jerarquas. La eleccin de la ms adecuada se har
en funcin de su tipo (total/parcial, exclusiva/superpuesta).q

- Crear una relacin por cada entidad. Las relaciones de las entidades hijo
heredan como clave primaria la de la entidad padre. Por lo tanto, la clave
primaria de las entidades hijo es tambin una clave ajena al padre. Esta
opcin sirve para cualquier tipo de jerarqua, total o parcial y exclusiva o
superpuesta.
- Crear una relacin por cada entidad hijo, heredando los atributos de la
entidad padre. Esta opcin slo sirve para jerarquas totales y exclusivas.
- Integrar todas las entidades en una relacin, incluyendo en ella los atributos
de la entidad padre, los atributos de todos los hijos y un atributo discriminativo
para indicar el caso al cual pertenece la entidad en consideracin. Esta
opcin sirve para cualquier tipo de jerarqua. Si la jerarqua es superpuesta, el
atributo discriminativo ser multievaluado1.

Formando Emprendedores de Calidad para un Mundo Empresarial 11


Instituto de Educacin Superior
San Ignacio de Monterrico

Una vez obtenidas las relaciones con sus atributos, claves primarias y claves
ajenas, slo queda actualizar el diccionario de datos con los nuevos atributos que
se hayan identificado en este paso.

3. Validar cada esquema mediante la normalizacin

La normalizacin se utiliza para mejorar el esquema lgico, de modo que


satisfaga ciertas restricciones que eviten la duplicidad de datos. La normalizacin
garantiza que el esquema resultante se encuentra ms prximo al modelo de la
empresa, que es consistente y que tiene la mnima redundancia y la mxima
estabilidad.

La normalizacin es un proceso que permite decidir a qu entidad pertenece


cada atributo. Uno de los conceptos bsicos del modelo relacional es que los
atributos se agrupan en relaciones (tablas) porque estn relacionados a nivel
lgico. En la mayora de las ocasiones, una base de datos normalizada no
proporciona la mxima eficiencia, sin embargo, el objetivo ahora es conseguir
una base de datos normalizada por las siguientes razones:

- Un esquema normalizado organiza los datos de acuerdo a sus dependencias


funcionales, es decir, de acuerdo a sus relaciones lgicas.
- El esquema lgico no tiene porqu ser el esquema final. Debe representar lo
que el diseador entiende sobre la naturaleza y el significado de los datos de
la empresa. Si se establecen unos objetivos en cuanto a prestaciones, el
diseo fsico cambiar el esquema lgico de modo adecuado. Una posibilidad
es que algunas relaciones normalizadas se des-normalicen. Pero la des-
normalizacin no implica que se haya malgastado tiempo normalizando, ya
que mediante este proceso el diseador aprende ms sobre el significado de
los datos. De hecho, la normalizacin obliga a entender completamente cada
uno de los atributos que se han de representar en la base de datos.
- Un esquema normalizado es robusto y carece de redundancias, por lo que
est libre de ciertas anomalas que stas pueden provocar cuando se
actualiza la base de datos.
- Los equipos informticos de hoy en da son mucho ms potentes, por lo que
en ocasiones es ms razonable implementar bases de datos fciles de
manejar (las normalizadas), a costa de un tiempo adicional de proceso.

Formando Emprendedores de Calidad para un Mundo Empresarial 12


Instituto de Educacin Superior
San Ignacio de Monterrico

- La normalizacin produce bases de datos con esquemas flexibles que pueden


extenderse con facilidad.

El objetivo de este paso es obtener un conjunto de relaciones que se encuentren


en la forma normal de Boyce-Codd. Para ello, hay que pasar por la primera,
segunda y tercera formas normales.

4. Validar cada esquema frente a las transacciones del usuario

El objetivo de este paso es validar cada esquema lgico local para garantizar que
puede soportar las transacciones requeridas por los correspondientes usuarios.
Estas transacciones se encontrarn en las especificaciones de requisitos de
usuario. Lo que se debe hacer es tratar de realizar las transacciones de forma
manual utilizando el diagrama entidad-relacin, el diccionario de datos y las
conexiones que establecen las claves ajenas de las relaciones (tablas). Si todas
las transacciones se pueden realizar, el esquema queda validado. Pero si alguna
transaccin no se puede realizar, seguramente ser porque alguna entidad,
relacin o atributo no se ha incluido en el esquema.

5. Dibujar el diagrama entidad-relacin

En este momento, se puede dibujar el diagrama entidad-relacin final para cada


vista de usuario que recoja la representacin lgica de los datos desde su punto
de vista. Este diagrama habr sido validado mediante la normalizacin y frente a
las transacciones de los usuarios.

6. Definir las restricciones de integridad

Las restricciones de integridad son reglas que se quieren imponer para proteger
la base de datos, de modo que no pueda llegar a un estado inconsistente. Hay
cinco tipos de restricciones de integridad.

(a) Datos requeridos. Algunos atributos deben contener valores en todo


momento, es decir, no admiten nulos.

(b) Restricciones de dominios. Todos los atributos tienen un dominio


asociado, que es el conjunto los valores que cada atributo puede tomar.

Formando Emprendedores de Calidad para un Mundo Empresarial 13


Instituto de Educacin Superior
San Ignacio de Monterrico

(c) Integridad de entidades. El identificador de una entidad no puede ser nulo,


por lo tanto, las claves primarias de las relaciones (tablas) no admiten nulos.

(d) Integridad referencial. Una clave ajena enlaza cada tupla de la relacin hijo
con la tupla de la relacin padre que tiene el mismo valor en su clave primaria. La
integridad referencial dice que si una clave ajena tiene un valor (si es no nula),
ese valor debe ser uno de los valores de la clave primaria a la que referencia.
Hay varios aspectos a tener en cuenta sobre las claves ajenas para lograr que se
cumpla la integridad referencial.

- Admite nulos la clave ajena? Cada clave ajena expresa una relacin. Si la
participacin de la entidad hijo en la relacin es total, entonces la clave ajena
no admite nulos; si es parcial, la clave ajena debe aceptar nulos.
- Qu hacer cuando se quiere borrar una ocurrencia de la entidad padre que
tiene algn hijo? O lo que es lo mismo, qu hacer cuando se quiere borrar
una tupla que est siendo referenciada por otra tupla a travs de una clave
ajena? Hay varias respuestas posibles:
o Restringir: no se pueden borrar tuplas que estn siendo referenciadas
por otras tuplas.
o Propagar: se borra la tupla deseada y se propaga el borrado a todas
las tuplas que le hacen referencia.
o Anular: se borra la tupla deseada y todas las referencias que tena se
ponen, automticamente, a nulo (esta respuesta slo es vlida si la
clave ajena acepta nulos).
o Valor por defecto: se borra la tupla deseada y todas las referencias
toman, automticamente, el valor por defecto (esta respuesta slo es
vlida si se ha especificado un valor por defecto para la clave ajena).
o No comprobar: se borra la tupla deseada y no se hace nada para
garantizar que se sigue cumpliendo la integridad referencial.
- Qu hacer cuando se quiere modificar la clave primaria de una tupla que
est siendo referenciada por otra tupla a travs de una clave ajena? Las
respuestas posibles son las mismas que en el caso anterior. Cuando se
escoge propagar, se actualiza la clave primaria en la tupla deseada y se
propaga el cambio a los valores de clave ajena que le hacan referencia.

Formando Emprendedores de Calidad para un Mundo Empresarial 14


Instituto de Educacin Superior
San Ignacio de Monterrico

(e) Reglas de negocio. Cualquier operacin que se realice sobre los datos debe
cumplir las restricciones que impone el funcionamiento de la empresa.

Todas las restricciones de integridad establecidas en este paso se deben reflejar


en el diccionario de datos para que puedan ser tenidas en cuenta durante la fase
del diseo fsico.

7. Revisar cada esquema lgico local con el usuario correspondiente

Para garantizar que cada esquema lgico local es una fiel representacin de la
vista del usuario lo que se debe hacer es comprobar con l que lo reflejado en el
esquema y en la documentacin es correcto y est completo.

Relacin entre el esquema lgico y los diagramas de flujo de datos

El esquema lgico refleja la estructura de los datos a almacenar que maneja la


empresa. Un diagrama de flujo de datos muestra cmo se mueven los datos en
la empresa y los almacenes en donde se guardan. Si se han utilizado diagramas
de flujo de datos para modelar las especificaciones de requisitos de usuario, se
pueden utilizar para comprobar la consistencia y completitud del esquema lgico
desarrollado. Para ello:

- Cada almacn de datos debe corresponder con una o varias entidades


completas.
- Los atributos en los flujos de datos deben corresponder a alguna entidad.

Los esquemas lgicos locales obtenidos hasta este momento se integrarn en un


solo esquema lgico global en la siguiente fase para modelar los datos de toda la
empresa.

8. Mezclar los esquemas lgicos locales en un esquema lgico global

En este paso, se deben integrar todos los esquemas locales en un solo esquema
global. En un sistema pequeo, con dos o tres vistas de usuario y unas pocas
entidades y relaciones, es relativamente sencillo comparar los esquemas locales,
mezclarlos y resolver cualquier tipo de diferencia que pueda existir. Pero en los

Formando Emprendedores de Calidad para un Mundo Empresarial 15


Instituto de Educacin Superior
San Ignacio de Monterrico

sistemas grandes, se debe seguir un proceso ms sistemtico para llevar a cabo


este paso con xito:

- Revisar los nombres de las entidades y sus claves primarias.


- Revisar los nombres de las relaciones.
- Mezclar las entidades de las vistas locales.
- Incluir (sin mezclar) las entidades que pertenecen a una sola vista de
usuario.
- Mezclar las relaciones de las vistas locales.
- Incluir (sin mezclar) las relaciones que pertenecen a una sola vista de
usuario.
- Comprobar que no se ha omitido ninguna entidad ni relacin.
- Comprobar las claves ajenas.
- Comprobar las restricciones de integridad.
- Dibujar el esquema lgico global.
- Actualizar la documentacin.

9. Validar el esquema lgico global

Este proceso de validacin se realiza, de nuevo, mediante la normalizacin y


mediante la prueba frente a las transacciones de los usuarios. Pero ahora slo
hay que normalizar las relaciones que hayan cambiado al mezclar los esquemas
lgicos locales y slo hay que probar las transacciones que requieran acceso a
reas que hayan sufrido algn cambio.

10. Estudiar el crecimiento futuro

En este paso, se trata de comprobar que el esquema obtenido puede acomodar


los futuros cambios en los requisitos con un impacto mnimo. Si el esquema
lgico se puede extender fcilmente, cualquiera de los cambios previstos se
podr incorporar al mismo con un efecto mnimo sobre los usuarios existentes.

11. Dibujar el diagrama entidad-relacin final

Una vez validado el esquema lgico global, ya se puede dibujar el diagrama


entidad-relacin que representa el modelo de los datos de la empresa que son de

Formando Emprendedores de Calidad para un Mundo Empresarial 16


Instituto de Educacin Superior
San Ignacio de Monterrico

inters. La documentacin que describe este modelo (incluyendo el esquema


relacional y el diccionario de datos) se debe actualizar y completar.

12. Revisar el esquema lgico global con los usuarios

Una vez ms, se debe revisar con los usuarios el esquema global y la
documentacin obtenida para asegurarse de que son una fiel representacin de
la empresa.

Formando Emprendedores de Calidad para un Mundo Empresarial 17


Instituto de Educacin Superior
San Ignacio de Monterrico

NORMALIZACION

La normalizacin es una tcnica para disear la estructura lgica de los datos de un


sistema de informacin en el modelo relacional, desarrollada por E. F. Codd en
1972. Es una estrategia de diseo de abajo a arriba: se parte de los atributos y stos
se van agrupando en relaciones (tablas) segn su afinidad. Aqu no se utilizar la
normalizacin como una tcnica de diseo de bases de datos, sino como una etapa
posterior a la correspondencia entre el esquema conceptual y el esquema lgico,
que elimine las dependencias entre atributos no deseadas. Las ventajas de la
normalizacin son las siguientes:

- Evita anomalas en inserciones, modificaciones y borrados.


- Mejora la independencia de datos.
- No establece restricciones artificiales en la estructura de los datos.

Uno de los conceptos fundamentales en la normalizacin es el de dependencia


funcional. Una dependencia funcional es una relacin entre atributos de una misma
relacin (tabla).

La dependencia funcional es una nocin semntica. Si hay o no dependencias


funcionales entre atributos no lo determina una serie abstracta de reglas, sino, ms
bien, los modelos mentales del usuario y las reglas de negocio de la organizacin o
empresa para la que se desarrolla el sistema de informacin. Cada dependencia
funcional es una clase especial de regla de integridad y representa una relacin de
uno a muchos.

En el proceso de normalizacin se debe ir comprobando que cada relacin (tabla)


cumple una serie de reglas que se basan en la clave primaria y las dependencias
funcionales. Cada regla que se cumple aumenta el grado de normalizacin. Si una
regla no se cumple, la relacin se debe descomponer en varias relaciones que s la
cumplan.

La normalizacin se lleva a cabo en una serie pasos. Cada paso corresponde a una
forma normal que tiene unas propiedades. Conforme se va avanzando en la
normalizacin, las relaciones tienen un formato ms estricto (ms fuerte) y, por lo
tanto, son menos vulnerables a las anomalas de actualizacin. El modelo relacional
slo requiere un conjunto de relaciones en primera forma normal. Las restantes

Formando Emprendedores de Calidad para un Mundo Empresarial 18


Instituto de Educacin Superior
San Ignacio de Monterrico

formas normales son opcionales. Sin embargo, para evitar las anomalas de
actualizacin, es recomendable llegar al menos a la tercera forma normal.

Primera forma normal (1FN)

Una relacin est en primera forma normal si, y slo si, todos los dominios de la
misma contienen valores atmicos, es decir, no hay grupos repetitivos. Si se ve la
relacin grficamente como una tabla, estar en 1FN si tiene un solo valor en la
interseccin de cada fila con cada columna.

Si una relacin no est en 1FN, hay que eliminar de ella los grupos repetitivos. Un
grupo repetitivo ser el atributo o grupo de atributos que tiene mltiples valores para
cada tupla de la relacin. Hay dos formas de eliminar los grupos repetitivos. En la
primera, se repiten los atributos con un solo valor para cada valor del grupo
repetitivo. De este modo, se introducen redundancias ya que se duplican valores,
pero estas redundancias se eliminarn despus mediante las restantes formas
normales. La segunda forma de eliminar los grupos repetitivos consiste en poner
cada uno de ellos en una relacin aparte, heredando la clave primaria de la relacin
en la que se encontraban.

Un conjunto de relaciones se encuentra en 1FN si ninguna de ellas tiene grupos


repetitivos.

Segunda forma normal (2FN)

Una relacin est en segunda forma normal si, y slo si, est en 1FN y, adems,
cada atributo que no est en la clave primaria es completamente dependiente de la
clave primaria.

La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o
ms atributos. Si una relacin est en 1FN y su clave primaria es simple (tiene un
solo atributo), entonces tambin est en 2FN. Las relaciones que no estn en 2FN
pueden sufrir anomalas cuando se realizan actualizaciones.

Para pasar una relacin en 1FN a 2FN hay que eliminar las dependencias parciales
de la clave primaria. Para ello, se eliminan los atributos que son funcionalmente
dependientes y se ponen en una nueva relacin con una copia de su determinante
(los atributos de la clave primaria de los que dependen).

Formando Emprendedores de Calidad para un Mundo Empresarial 19


Instituto de Educacin Superior
San Ignacio de Monterrico

Tercera forma normal (3FN)

Una relacin est en tercera forma normal si, y slo si, est en 2FN y, adems, cada
atributo que no est en la clave primaria no depende transitivamente de la clave
primaria. La dependencia es transitiva si existen las dependencias , , siendo , ,
atributos o conjuntos de atributos de una misma relacin.

Aunque las relaciones en 2FN tienen menos redundancias que las relaciones en
1FN, todava pueden sufrir anomalas frente a las actualizaciones. Para pasar una
relacin de 2FN a 3FN hay que eliminar las dependencias transitivas. Para ello, se
eliminan los atributos que dependen transitivamente y se ponen en una nueva
relacin con una copia de su determinante (el atributo o atributos no clave de los que
dependen).

Forma normal de Boyce-Codd (BCFN)

Una relacin est en la forma normal de Boyce-Codd si, y slo si, todo determinante
es una clave candidata.

La 2FN y la 3FN eliminan las dependencias parciales y las dependencias transitivas


de la clave primaria. Pero este tipo de dependencias todava pueden existir sobre
otras claves candidatas, si stas existen. La BCFN es ms fuerte que la 3FN, por lo
tanto, toda relacin en BCFN est en 3FN.

La violacin de la BCFN es poco frecuente ya que se da bajo ciertas condiciones


que raramente se presentan. Se debe comprobar si una relacin viola la BCFN si
tiene dos o ms claves candidatas compuestas que tienen al menos un atributo en
comn.

Resumen

El diseo de bases de datos consta de tres etapas: diseo conceptual, lgico y


fsico. El diseo lgico es el proceso mediante el que se construye un esquema que
representa la informacin que maneja una empresa, basndose en un modelo lgico
determinado, pero independientemente del SGBD concreto que se vaya a utilizar
para implementar la base de datos e independientemente de cualquier otra
consideracin fsica.

Formando Emprendedores de Calidad para un Mundo Empresarial 20


Instituto de Educacin Superior
San Ignacio de Monterrico

Las dos fases de que consta el diseo lgico son la construccin y validacin de los
esquemas lgicos locales para cada vista de usuario, y la construccin y validacin
de un esquema lgico global. Cada una de estas fases consta de una serie de
pasos.

Un paso importante es la conversin del esquema conceptual a un esquema lgico


adecuado al modelo relacional. Para ello, se deben hacer algunas transformaciones:
eliminar las relaciones de muchos a muchos, eliminar las relaciones complejas,
eliminar las relaciones recursivas, eliminar las relaciones con atributos, eliminar los
atributos multievaluados, reconsiderar las relaciones de uno a uno y eliminar las
relaciones redundantes.

Los esquemas lgicos se pueden validar mediante la normalizacin y frente a las


transacciones de los usuarios. La normalizacin se utiliza para mejorar el esquema,
de modo que ste satisface ciertas restricciones que evitan la duplicidad de datos.
La normalizacin garantiza que el esquema resultante est ms prximo al modelo
de la empresa, es consistente, tiene la mnima redundancia y la mxima estabilidad.

Las restricciones de integridad son las restricciones que se imponen para que la
base de datos nunca llegue a un estado inconsistente. Hay cinco tipos de
restricciones de integridad: datos requeridos, restricciones de dominio, integridad de
entidades, integridad referencial y reglas de negocio.

Para garantizar la integridad referencial se debe especificar el comportamiento de


las claves ajenas: si aceptan nulos y qu hacer cuando se borra la tupla a la que se
hace referencia, o cuando se modifica el valor de su clave primaria.

6. SISTEMA DE GESTION DE BASE DE DATOS

Para plasmar los niveles en el enfoque o modelo de datos seleccionado, es


necesario disponer de una aplicacin que acte de interfaz entre el usuario, los
modelos y el sistema fsico. Esta es la funcin que desempean los SGBD
(Sistemas de Gestin de Base de Datos), y que pueden definirse como un
paquete generalizado de software, que se ejecuta en un sistema computacional
anfitrin, centralizando los accesos a los datos y actuando de interfaz entre los
datos fsicos y el usuario. Las principales funciones que debe cumplir un SGBD

Formando Emprendedores de Calidad para un Mundo Empresarial 21


Instituto de Educacin Superior
San Ignacio de Monterrico

se relacionan con la creacin y mantenimiento de la base de datos, el control de


accesos, manipulacin de datos de acuerdo a las necesidades del usuario,
cumplimiento de las normas de tratamiento de datos, evitar redundancias e
inconsistencias y mantener la integridad. Se han sealado como componentes
bsicos los siguientes:

1. Un lenguaje de definicin de esquema conceptual.


2. Un sistema de diccionario de datos.
3. Un lenguaje de especificacin de paquetes de entrada/salida.
4. Un lenguaje de definicin de esquemas de base de datos.
5. Una estructura simtrica de almacenamiento de datos.
6. Un mdulo de transformacin lgica a fsica.
7. Un subsistema de privacidad de propsito general.
8. Un subsistema de integridad de propsito general
9. Un subsistema de reserva y recuperacin de propsito general.
10. Un generador de programas de aplicacin.
11. Un generador de programas de informes.
12. Un lenguaje de consulta de propsito general.

El SGBD incorpora como herramienta fundamental 2 lenguajes:

1. El lenguaje de definicin de datos (DDL, Data Definition Language) provee de


medios necesarios para definir los datos con precisin, especificando las
distintas estructuras. De acuerdo con el modelo de arquitectura de tres
niveles, habr un lenguaje de definicin de la estructura lgica global, otro
para la definicin de la estructura interna, y un tercero para la definicin de las
estructuras externas.

2. El lenguaje de manipulacin de datos (DML, Data Manipulation/ Management


Language), es el encargado de facilitar a los usuarios el acceso y
manipulacin de los datos. Pueden diferenciarse en procedimentales
(aquellos que requieren qu datos se necesitan y cmo obtenerlos) y no
procedimentales (que datos se necesitan, sin especificar como obtenerlos), y

Formando Emprendedores de Calidad para un Mundo Empresarial 22


Instituto de Educacin Superior
San Ignacio de Monterrico

se encargan de recuperar los datos almacenados, de la insercin y supresin


de datos en la base de datos, y de la modificacin de los existentes.

Fig.1. Arquitectura de un Sistema de Bases de Datos.

7. VENTAJAS DE LAS BASES DE DATOS

Todas las ventajas que se obtienen a causa de la implantacin de una base de datos
son enormemente importantes para una empresa u organizacin y vienen a
contribuir en el desarrollo y la funcionalidad de estas mismas.

A continuacin se mencionan las ms importantes y sobresalientes:

Se puede compartir toda la informacin necesaria.


La informacin puede ser globalizada dentro de una empresa.
Se mantiene la integridad en la informacin, es decir, que elimina la
informacin redundante y la informacin inconsistente.
Existe independencia de datos (ventaja mas notable), no es necesario
cambiar programas o aplicaciones a la hora de cambiar datos.

Formando Emprendedores de Calidad para un Mundo Empresarial 23


Instituto de Educacin Superior
San Ignacio de Monterrico

OPERACIN DE LAS SENTENCIAS DE SQL

A continuacin se indican las principales operaciones que se implementan a travs


de sentencias SQL.

a. Creacin de tablas

La sentencia CREATE TABLE permite definir una nueva tabla y prepararla para
aceptar datos. Su sintaxis es la siguiente:

CREATE TABLE nombre de tabla <definicin de columnas>

Las columnas de la tabla recin creada se definen en el cuerpo de la sentencia


CREATE TABLE. Las definiciones de columnas aparecen en una lista separada por
comas y encerrada entre parntesis. El orden de las definiciones de las columnas
determina el orden de izquierda a derecha de las columnas en la tabla. Cada
definicin especifica el nombre de la columna y el tipo de datos que la columna
almacena.

b. Insercin de datos en una tabla

Crea una nueva fila de datos se aade a una base de datos relacional cuando una
nueva entidad representada por una fila aparece en el mundo exterior. Una fila es la
unidad de datos ms pequea que puede aadirse a una tabla.

La sentencia INSERT permite aadir una nueva fila a una tabla. Su sintaxis es:

INSERT INTO nombre tabla <Lista de columnas> VALUES >Lista de valores>

La clusula INTO especifica la tabla que recibir la nueva fila y las columnas que
almacenarn los datos Insertados. La clusula VALUES especifica los valores de los
datos que la nueva fila contendr. Los nombres de columna y los valores de los
datos se separan utilizando comas.

c. Modificacin de datos de una tabla

Formando Emprendedores de Calidad para un Mundo Empresarial 24


Instituto de Educacin Superior
San Ignacio de Monterrico

Los valores de los datos almacenados en una base de datos se modifican cuando se
producen cambios correspondientes, de tal forma que en todo momento la
informacin almacenada en la base de datos sea un modelo exacto del mundo real.
La unidad ms pequea que puede modificarse es una columna de una fila.

La sentencia UPDATE permite modificar los valores de una o ms columnas de las


filas seleccionadas de una tabla. Debe respetarse la siguiente sintaxis:

UPDATE nombre de tabla SET nombre de columna =expresin WHERE condicin

El nombre de tabla identifica la tabla en que se realizar la actualizacin. La


condicin que acompaa a la clusula WHERE sirve para seleccionar las filas de la
tabla que sern modificadas. La clusula SET es una lista de asignaciones
separadas por comas. Cada asignacin identifica una columna destino a actualizar y
especifica cmo calcular el nuevo valor para dicha columna.

d. Eliminacin de registros y datos

Normalmente, una fila de datos se suprime de una tabla cuando la entidad


representada por la fila desaparece del mundo exterior. La unidad ms pequea de
datos que puede ser suprimida es una nica fila.

La sentencia DELETE permite eliminar filas seleccionadas de una sola tabla. La


sintaxis de la sentencia DELETE es como sigue:

DELETE FROM nombre de tabla WHERE condicin

La clusula FROM especifica el nombre de la tabla de la que se eliminarn filas. La


condicin de la clusula WHERE selecciona las filas que sern suprimidas.
Obviamente si ninguna de las filas satisface dicha condicin, ninguna de ellas ser
eliminada.

e. Consultas de datos

Formando Emprendedores de Calidad para un Mundo Empresarial 25


Instituto de Educacin Superior
San Ignacio de Monterrico

Las consultas de seleccin se utilizan para obtener informacin de las bases de


datos, esta informacin es devuelta en forma de conjunto de registros.

La sintaxis bsica de una consulta de seleccin es la siguiente:

SELECT Lista de campos FROM Nombre de tabla WHERE Condicion

En donde Lista de Campos es la relacin de campos que se desean recuperar y


Nombre de Tabla identifica a la tabla, origen de los mismos.

El resultado de una consulta SQL es siempre una tabla de datos, semejante a las
tablas almacenadas en la base de datos. Generalmente los resultados de la consulta
generarn una tabla con varas columnas y varias filas. Las consultas ms sencillas
solicitan columnas de datos de una nica tabla en la base de datos.

f. Eliminacin de tablas

Cuando se quiere destruir una tabla existente que ya no es necesaria se debe


utilizar la sentencia DROP TABLE cuya sintaxis es:

DROPTABLE nombre de tabla

El nombre de la tabla en la sentencia identifica la tabla a eliminar.

Formando Emprendedores de Calidad para un Mundo Empresarial 26


Instituto de Educacin Superior
San Ignacio de Monterrico

TIPOS DE DATOS

El tipo de datos de integridad es la definicin del tipo de datos que cada columna de
la tabla (entidad) permite almacenar. Los siguientes tipos de datos son los
que proporciona el MBD SQL Server

Tamao de
Tipo de datos Intervalo
almacenamiento
Byte 1 byte 0 a 255
Boolean 2 bytes True o False
Integer 2 bytes -32,768 a 32,767
Long 4 bytes -2,147,483,648 a 2,147,483,647
(entero largo)
Single 4 bytes -3,402823E38 a 1,401298E-45 para valores
(coma flotante/ negativos; 1,401298E-45 a 3,402823E38 para valores
precisin simple) positivos
Double 8 bytes -1.79769313486231E308 a
(coma flotante/ -4,94065645841247E-324 para valores negativos;
precisin doble) 4,94065645841247E-324 a 1,79769313486232E308
para valores positivos
Currency 8 bytes -922.337.203.685.477,5808 a
(entero a escala) 922.337.203.685.477,5807
Decimal 14 bytes +/-79.228.162.514.264.337.593.543.950.335 sin punto
decimal;
+/-7,9228162514264337593543950335 con 28
posiciones a la derecha del signo decimal; el nmero
ms pequeo distinto de cero es
+/-0,0000000000000000000000000001
Datetime 8 bytes 1 de enero de 100 a 31 de diciembre de 9999
Varchar 10 bytes + longitud Desde 0 a 2.000 millones
(longitud de la cadena
variable)
Char Longitud de la Desde 1 a 65.400 aproximadamente
(longitud fija) cadena
Definido por el Nmero requerido El intervalo de cada elemento es el mismo que el
usuario por los elementos intervalo de su tipo de datos.

Formando Emprendedores de Calidad para un Mundo Empresarial 27


Instituto de Educacin Superior
San Ignacio de Monterrico

(utilizando Type)
binary Imgenes

Formando Emprendedores de Calidad para un Mundo Empresarial 28


Instituto de Educacin Superior
San Ignacio de Monterrico

OPERADORES EN SQL

Operadores Lgicos
Operador Uso
Es el y lgico. Evala dos condiciones y devuelve un valor de
AND verdad slo si ambas son ciertas.
Es el o lgico. Evala dos condiciones y devuelve un valor de
OR verdad si alguna de las dos es cierta.

NOT Negacin lgica. Devuelve el valor contrario de la expresin.


1. Operadores de Comparacin
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor Igual que
>= Mayor Igual que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparacin de un modelo
In Utilizado para especificar registros de una base de datos

2. Funciones de Agregado
Las funciones de agregado se usan dentro de una clusula SELECT
en grupos de registros para devolver un nico valor que se aplica a un
grupo de registros.

Comando Descripcin

AVG Utilizada para calcular el promedio de los valores de un campo


determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin
Utilizada para devolver la suma de todos los valores de un campo
SUM
determinado
Utilizada para devolver el valor ms alto de un campo
MAX
especificado
Utilizada para devolver el valor ms bajo de un campo
MIN
especificado

EJEMPLOS
Lgicos:

Formando Emprendedores de Calidad para un Mundo Empresarial 29


Instituto de Educacin Superior
San Ignacio de Monterrico

SELECT *
FROM Empleados
WHERE Edad > 25 AND Edad < 50

SELECT *
FROM Empleados
WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100

SELECT *
FROM Empleados
WHERE NOT Estado = 'Soltero'

SELECT *
FROM Empleados
WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Trujillo' AND Estado =
'Casado')

Formando Emprendedores de Calidad para un Mundo Empresarial 30


Instituto de Educacin Superior
San Ignacio de Monterrico

OTROS OPERADORES

El operador Like

Se utiliza para comparar una expresin de cadena con un modelo en una expresin
SQL. Su sintaxis es: expresin Like modelo

En donde expresin es una cadena modelo o campo contra el que se compara


expresin. Se puede utilizar el operador Like para encontrar valores en los campos
que coincidan con el modelo especificado. Por modelo puede especificar un valor
completo (Ana Mara), o se puede utilizar una cadena de caracteres comodn como
los reconocidos por el sistema operativo para encontrar un rango de valores (Like An
%).

El operador Like se puede utilizar en una expresin para comparar un valor de un


campo con una expresin de cadena. Por ejemplo, si introduce Like C% en una
consulta SQL, la consulta devuelve todos los valores de campo que comiencen por
la letra C.

Ejemplos:

SELECT * FROM EMPLEADOS WHERE NOMBRES LIKE 'A%' Todo lo que comience por A
Todo lo que comience por cualquier
SELECT * FROM EMPLEADOS WHERE NOMBRES LIKE '%NG'
carcter y luego siga NG
SELECT * FROM EMPLEADOS WHERE NOMBRES LIKE '[AF]%' Todo lo que comience por A F
Todo lo que comience por cualquier
SELECT * FROM EMPLEADOS WHERE NOMBRES LIKE '[A-F]%'
letra comprendida entre la A y la F
Todo lo que comience por A y la
SELECT * FROM EMPLEADOS WHERE NOMBRES LIKE '[A^B]%'
segunda letra no sea una B

El Operador In

Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno
de los en una lista.

Su sintaxis es: expresin [Not] In(valor1, valor2, . . .)

SELECT *
FROM Pedidos
WHERE Provincia In (Trujillo, 'Arequipa', 'Abancay)

Formando Emprendedores de Calidad para un Mundo Empresarial 31


Instituto de Educacin Superior
San Ignacio de Monterrico

La clusula WHERE

La clusula WHERE puede usarse para determinar qu registros de las tablas


enumeradas en la clusula FROM aparecern en los resultados de la instruccin
SELECT. Despus de escribir esta clusula se deben especificar las condiciones
expuestas en los apartados anteriores. Si no se emplea esta clusula, la consulta
devolver todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe
ir a continuacin de FROM.

SELECT Apellidos, Salario


FROM Empleados
WHERE Salario = 21000

SELECT IdProducto, Existencias


FROM Productos
WHERE Existencias <= NuevoPedido

Formando Emprendedores de Calidad para un Mundo Empresarial 32


Instituto de Educacin Superior
San Ignacio de Monterrico

FUNCIONES

Existen en SQL muchas funciones que pueden complementar el manejo de los datos
en las consultas. Se utilizan dentro de las expresiones y actuan con los valores de
las columnas, variables o constantes.

Se pueden incluir en las clsulas SELECT, WHERE y ORDER BY.

Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de


funciones para cada tipo de datos:

Funciones Aritmticas

Funcin Cometido Ejemplo Resultado


select abs(-15) from
ABS(n) Calcula el valor absoluto de n. 15
dual;
Calcula el valor entero select ceil(15.7) from
CEIL(n) 16
inmediatamente superior o igual a n. dual;
Calcula el valor entero select floor(15.7) from
FLOOR(n) 15
inmediatamante inferior o igual a n. dual;
Calcula el resto resultante de dividir select mod(11,4) from
MOD(m,n) 3
m entre n. dual;
select power(3,2)
POWER(m,n) Calcula la potencia n-esima de m. 9
from dual;
Calcula el redondeo de m a n
select
decimales. Si n<0 el redondeo se
ROUND(m,n) round(123.456,1) 123.5
efectua a por la izquierda del punto
from dual;
decimal.
select sqrt(4) from
SQRT(n) Calcula la raz cuadrada de n. 2
dual;
select
Calcula m truncado a n decimales (n
TRUNC(m,n) trunc(123.456,1) from 123.4
puede ser negativo).
dual;
Calcula el signo de n, devolviendo -1 select sign(-12) from
SIGN(n) -1
si n<0, 0 si n=0 y 1 si n>0. dual;

Funciones de Cadenas de Caracteres

Funcin Cometido Ejemplo Resultado

Formando Emprendedores de Calidad para un Mundo Empresarial 33


Instituto de Educacin Superior
San Ignacio de Monterrico

Devuelve el carcter cuyo select chr(65) from


CHR(n) A
valor codificado es n. dual;
Devuelve el valor ascii de select ascii('A') from
ASCII(cad) 65
cad. dual;
Devuelve cad1
select
concatenada con cad2. Cano es
CONCAT(cad1,cad2) concat(concat(nombre,'
Esta funcin es Presidente, etc.
es '),oficio) from emp;
esquivalente al operador ||.
Devuelve la cadena cad select
LOWER(cad) con todas sus letras lower('MinUsCulAs') minusculas
convertidas a minsculas. from dual;
Devuelve la cadena cad select
UPPER(cad) con todas sus letras upper('maYuSCulAs') MAYUSCULAS
convertidas a maysculas. from dual;
Devuelve cad con el primer select initcap('isabel')
INITCAP(cad) Isabel
caracter en maysculas. from dual;
Devuelve cad1 con
longitud n, y ajustada a la select lpad('P',5,'*') from
LPAD(cad1,n,cad2) ****P
derecha, rellenando por la dual;
izquierda con cad2.
Devuelve cad1 con
longitud n, y ajustada a la select rpad('P',5,'*')
RPAD(cad1,n,cad2) P****
izquierda, rellenando por la from dual;
derecha con cad2.
Devuelve cad en la que
cada ocurrencia de la select
REPLACE(cad,ant,nue) cadena ant ha sido replace('digo','i','ie') diego
sustituida por la cadena from dual;
nue.
Devuelve la sudcadena de
select
cad compuesta por n
SUBSTR(cad,m,n) substr('ABCDEFG',3,2) CD
caracteres a partir de la
from dual;
posicion m.
Devuelve la longitud de select length('cadena')
LENGTH(cad) 6
cad. from dual;

Funciones de Manejo de Fechas

Formando Emprendedores de Calidad para un Mundo Empresarial 34


Instituto de Educacin Superior
San Ignacio de Monterrico

Funcin Cometido Ejemplo Resultado


Devuelve la fecha y
SYSDATE select sysdate from dual; 14-MAR-97
hora actuales.
Devuelve la fecha d
select add_months(sysdate,4)
ADD_MONTHS(d,n) incrementada en n 14-JUL-97
from dual;
meses.
Devuelve la fecha
select last_day(sysdate) from
LAST_DAY(d) del ltimo da del 31-MAR-97
dual;
mes de d.
Devuelve la
select
MONTHS_BETWEEN(d1, diferencia en meses
months_between(sysdate,'01- 2.43409424
d2) entre las fechas d1 y
JAN-97') from dual;
d2.
Devuelve la fecha
del primer da de la
select next_day(sysdate,
NEXT_DAY(d,cad) semana cad 16-MAR-97
'sunday') from dual;
despus de la fecha
d.

Funciones de Conversin de Tipos

Funcin Cometido Ejemplo Resultado


Convierte la cadena cad a un select
TO_NUMBER(cad,fmto) nmero, opcionalmente de to_number('12345') 124345
acuerdo con el formato fmto. from dual;
Convierte la fecha d a una
select
cadena de caracteres,
TO_CHAR(d, fmto) to_char(sysdate) from '14-MAR-97'
opcionalmente de acuerdo
dual;
con el formato fmto.
Convierte la cadena cad de
tipo varchar2 a fecha, select to_date('1-JAN-
TO_DATE(cad,fmto) 01-JAN-97
opcionalmente de acuerdo 97') from dual;
con el formato fmto.

Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar
la presentacin de una fecha. En la siguiente tabla se presentan algunos formatos
de fecha y el resultado que generan.

Mscaras de Formato Numricas

Formando Emprendedores de Calidad para un Mundo Empresarial 35


Instituto de Educacin Superior
San Ignacio de Monterrico

Formato Cometido Ejemplo Resultado


select to_char(sysdate,'cc') from
cc scc Valor del siglo. 20
dual;
Ao con coma, con o sin select to_char(sysdate,'y,yyy')
y,yyy sy,yyy 1,997
signo. from dual;
yyyy yyy yy Ao sin signo con cuatro, select to_char(sysdate,'yyyy')
1997
y tres, dos o un dgitos. from dual;
select to_char(sysdate,'q') from
q Trimestre. 1
dual;
Nmero de la semana del select to_char(sysdate,'ww') from
ww w 11
ao o del mes. dual;
select to_char(sysdate,'mm')
mm Nmero del mes. 03
from dual;
Nmero del da del ao, del select to_char(sysdate,'ddd')
ddd dd d 073
mes o de la semana. from dual;
La hora en formato 12h. o select to_char(sysdate,'hh') from
hh hh12 hh24 12
24h. dual;
select to_char(sysdate,'mi') from
mi Los minutos de la hora. 15
dual;
Los segundos dentro del select to_char(sysdate,'sssss')
ss sssss 44159
minuto, o desde las 0 horas. from dual;

Mscaras de Formato de Caracteres

Formato Cometido Ejemplo Resultado


select to_char(sysdate,'syear) nineteen ninety-
syear year Ao en Ingls
from dual; seven
month o Nombre del mes o su select to_char(sysdate,'month')
march
mon abreviatura de tres letras. from dual;
Nombre del da de la
select to_char(sysdate,'day')
day dy semana o su abreviatura de friday
from dual;
tres letras.
select to_char(sysdate,'a.m.')
a.m. p.m. El espacio del da. p.m.
from dual;
Indicador del ao respecto al select to_char(sysdate,'b.c.')
b.c. a.d. a.d.
del nacimiento de Cristo. from dual;

Otras Funciones

Formando Emprendedores de Calidad para un Mundo Empresarial 36


Instituto de Educacin Superior
San Ignacio de Monterrico

Funcin Cometido Ejemplo Resultado


DECODE(var, val1, Convierte el valor de select decode(oficio,
cod1, val2, cod2, ..., var, de acuerdo con 'Presidente', 'P', 'Director', 'D', P, D, X, ...
defecto) la codificacin. 'X') from emp;
GREATEST(exp1, exp2, Devuelve el mayor
sin ejemplo. sin ejemplo.
...) valor de una lista.
Devuelve el menor
LEAST(cad,fmto) sin ejemplo. sin ejemplo.
valor de una lista.
Devuelve la
expresin exp si val select salario+nvl(comision,0) 450000,
NVL(val, exp)
es NULL, y val si en from emp; 350000, ...
otro caso.

Formando Emprendedores de Calidad para un Mundo Empresarial 37


Instituto de Educacin Superior
San Ignacio de Monterrico

CONSULTAS Y SUBCONSULTAS

Definicin de subconsultas.
Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia
SELECT. Normalmente se utilizan para filtrar una clusula WHERE o HAVING con
el conjunto de resultados de la subconsulta, aunque tambin pueden utilizarse en la
lista de seleccin.
Por ejemplo podramos consultar el alquiler ltimo de un cliente.

SELECT COD_CLIENTE, NOMBRE, MARCA, MODELO


FROM ALQUILERES
WHERE COD_CLIENTE = 1
AND FECHA_ALQUILER = (SELECT MAX(FECHA_ALQUILER)
FROM ALQUILERES
WHERE COD_CLIENTE = 1)

En este caso, la subconsulta se ejecuta en primer lugar, obteniendo el valor de la


mxima fecha de alquiler, y posteriormente se obtienen los datos de la consulta
principal.

Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal
exceptuando que aparece encerrada entre parntesis.
La subconsulta se puede encontrar en la lista de seleccin, en la clusula WHERE o
en la clusula HAVING de la consulta principal.
Tiene las siguientes restricciones:
No puede contener la clusula ORDER BY
No puede ser la UNION de varias sentencias SELECT
Si la subconsulta aparece en la lista de seleccin, o esta asociada a un
operador igual "=" solo puede devolver un nico registro.
Referencias externas
A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia al
valor de una columna de la fila actual en la consulta principal, ese nombre de
columna se denomina referencia externa.
Una referencia externa es un campo que aparece en la subconsulta pero se refiere a
la una de las tablas designadas en la consulta principal.

Formando Emprendedores de Calidad para un Mundo Empresarial 38


Instituto de Educacin Superior
San Ignacio de Monterrico

Cuando se ejecuta una consulta que contiene una subconsulta con referencias
externas, la subconsulta se ejecuta por cada fila de la consulta principal.
En este ejemplo la subconsulta aparece en la lista de seleccin, ejecutndose una
vez por cada fila que devuelve la consulta principal.

SELECT COD_EMPLEADO,
NOMBRE,
(SELECT MIN(FECHA_NOMINA)
FROM NOMINAS
WHERE COD_EMPLEADO = EMPLEADOS.COD_EMPLEADO) PRIMERA_NOMINA
FROM EMPLEADOS;

Anidar subconsultas

Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la


clusula WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra
consulta principal.

SELECT COD_EMPLEADO,
EMPLEADOS
FROM EMPLEADOS
WHERE COD_EMPLEADO IN (SELECT COD_EMPLEADO
FROM NOMINAS
WHERE ESTADO IN ( SELECT ESTADO
FROM ESTADOS_NOMINAS
WHERE EMITIDO = 'S'
AND PAGADO = 'N')
)

Los resultados que se obtienen con subconsultas normalmente pueden conseguirse


a travs de consultas combinadas ( JOIN ).

SELECT COD_EMPLEADO,
NOMBRE
FROM EMPLEADOS
WHERE ESTADO IN (SELECT ESTADO
FROM ESTADOS
WHERE ACTIVO = 'S')

Podr escribirse como:

SELECT COD_EMPLEADO,

Formando Emprendedores de Calidad para un Mundo Empresarial 39


Instituto de Educacin Superior
San Ignacio de Monterrico

NOMBRE
FROM EMPLEADOS, ESTADOS
WHERE EMPLEADOS.ESTADO = ESTADOS.ESTADO
AND ESTADOS.ACTIVO = 'S'

Normalmente es ms rpido utilizar un JOIN en lugar de una subconsulta, aunque


esto depende sobre todo del diseo de la base de datos y del volumen de datos que
tenga.

Utilizacin de subconsultas con UPDATE

Podemos utilizar subconsultas tambin en consultas de actualizacin conjuntamente


con UPDATE. Normalmente se utilizan para "copiar" el valor de otra tabla.

UPDATE EMPLEADOS
SET SALARIO_BRUTO = (SELECT SUM(SALARIO_BRUTO)
FROM NOMINAS
WHERE NOMINAS.COD_EMPLEADO = EMPLEADOS.COD_EMPLEADO)
WHERE SALARIO_BRUTO IS NULL

La funcin EXISTS

EXISTS es una funcin SQL que devuelve verdadero cuando una subconsulta
retorna al menos una fila.

SELECT COD_CLIENTE, NOMBRE


FROM CLIENTES
WHERE EXISTS ( SELECT *
FROM MOROSOS
WHERE COD_CLIENTE = CLIENTES.COD_CLIENTE
AND PAGADO = 'N')

La funcin EXISTS puede ser utilizada en cualquier sentencia SQL vlida, SELECT,
UPDATE, INSERT o DELETE.

Formando Emprendedores de Calidad para un Mundo Empresarial 40


Instituto de Educacin Superior
San Ignacio de Monterrico

CONSULTAS DE SELECCION

Uso de ndices de las tablas

Si deseamos que la sentecia SQL utilice un ndice para mostrar los resultados se
puede utilizar la palabra reservada INDEX de la siguiente forma:

SELECT ... FROM Tabla (INDEX=Indice) ...

Normalmente los motores de las bases de datos deciden que ndice se debe utilizar
para la consulta, para ello utilizan criterios de rendimiento y sobre todo los campos
de bsqueda especificados en la clusula WHERE. Si se desea forzar a no utilizar
ningn ndice utilizaremos la siguiente sintaxis:

SELECT ... FROM Tabla (INDEX=0) ...

Consultas con Predicado

El predicado se incluye entre la clusula y el primer nombre del campo a recuperar,


los posibles predicados son:

Predicado Descripcin
ALL Devuelve todos los campos de la tabla
TOP Devuelve un determinado nmero de registros de la tabla
DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente
Omite los registros duplicados basndose en la totalidad del registro y
DISTINCTOW
no slo en los campos seleccionados.

ALL

Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de


datos selecciona todos los registros que cumplen las condiciones de la instruccin
SQL y devuelve todos y cada uno de sus campos. No es conveniente abusar de este
predicado ya que obligamos al motor de la base de datos a analizar la estructura de
la tabla para averiguar los campos que contiene, es mucho ms rpido indicar el
listado de campos deseados.

Formando Emprendedores de Calidad para un Mundo Empresarial 41


Instituto de Educacin Superior
San Ignacio de Monterrico

SELECT ALL
FROM Empleados

SELECT *
FROM Empleados

TOP

Devuelve un cierto nmero de registros que entran entre al principio o al final de un


rango especificado por una clusula ORDER BY. Supongamos que queremos
recuperar los nombres de los 25 primeros estudiantes del curso 1994:

SELECT TOP 25 Nombre, Apellido


FROM Estudiantes
ORDER BY
Nota DESC

Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario


de 25 registros de la tabla de Estudiantes. El predicado TOP no elige entre valores
iguales. En el ejemplo anterior, si la nota media nmero 25 y la 26 son iguales, la
consulta devolver 26 registros. Se puede utilizar la palabra reservada PERCENT
para devolver un cierto porcentaje de registros que caen al principio o al final de un
rango especificado por la clusula ORDER BY. Supongamos que en lugar de los 25
primeros estudiantes deseamos el 10 por ciento del curso:

SELECT TOP 10 PERCENT Nombre, Apellido


FROM Estudiantes
ORDER BY Nota DESC

El valor que va a continuacin de TOP debe ser un entero sin signo. TOP no afecta
a la posible actualizacin de la consulta.

DISTINCT

Omite los registros que contienen datos duplicados en los campos seleccionados.
Para que los valores de cada campo listado en la instruccin SELECT se incluyan en
la consulta deben ser nicos. Por ejemplo, varios empleados listados en la tabla

Formando Emprendedores de Calidad para un Mundo Empresarial 42


Instituto de Educacin Superior
San Ignacio de Monterrico

Empleados pueden tener el mismo apellido. Si dos registros contienen Lpez en el


campo Apellido, la siguiente instruccin SQL devuelve un nico registro:

SELECT DISTINCT Apellido


FROM
Empleados

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos


campos indicados en la clusula SELECT posean un contenido diferente. El
resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los
cambios subsiguientes realizados por otros usuarios.

Insertar cambios en tablas

USE BdEjemplo_02
GO

/* Tabla CATEGORIA */
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'cons_15')
ALTER TABLE Categoria
DROP CONSTRAINT cons_15
GO

ALTER TABLE Categoria


ADD IdCategoria Int IDENTITY(1,1)
CONSTRAINT cons_15 PRIMARY KEY (IdCategoria)
GO

Uso del Inner Join

USE Nwind
GO
SELECT P.IdProducto,P. NombreProducto, C.NombreCategora
FROM Productos AS P INNER JOIN Categoras AS C

Formando Emprendedores de Calidad para un Mundo Empresarial 43


Instituto de Educacin Superior
San Ignacio de Monterrico

ON P.IdCategora=C.IdCategora

USE Nwind
GO
SELECT P.IdPedido, P.FechaPedido, C.*
FROM Pedidos AS P INNER JOIN Clientes AS C
ON P.IdCliente = C.IdCliente
ORDER BY P.IdCliente

USE Nwind
GO
SELECT P.IdProducto,P. NombreProducto, C.NombreCategora,
PV.NombreCompaa
FROM Productos AS P INNER JOIN Categoras AS C
ON P.IdCategora=C.IdCategora INNER JOIN Proveedores AS PV
ON P.IdProveedor= PV.IdProveedor
WHERE P.IdProveedor= 1

USE Nwind
GO
SELECT C.IdCliente, C.NombreCompaa, P.IdPedido, P.FechaPedido
FROM Clientes AS C LEFT OUTER JOIN Pedidos AS P
ON P.IdCliente = C.IdCliente
ORDER BY P.IdCliente

Formando Emprendedores de Calidad para un Mundo Empresarial 44


Instituto de Educacin Superior
San Ignacio de Monterrico

OBJETOS DE BASE DE DATOS

VISTAS

Consultas

Las consultas sobre las vistas se tratan de igual modo que sobre las tablas.

Actualizaciones

La informacin puede ser actualizada en las vistas directamente o a travs de las


tablas sobre las que se definen.

Existen algunas restricciones:

Borrado de filas de una tabla a travs de una vista


La vista se debe crear con filas de una sola tabla; sin utilizar las clusulas
GROUP BY y DISTINCT; y sin utilizar funciones de grupo o referencias a
pseudos-columnas (ROWNUM).
Actualizacin de filas a travs de una vista
La vista ha de estar definida segn las restricciones anteriores y adems
ninguna de las columnas a actualizar debe haber sido definida como una
expresin.
Insercin de filas en una tabla a travs de una vista
Todas las restricciones y adems todas las columnas obligatorias de la tabla
asociada deben estar presentes en la vista.

9.2 Vistas de ms de una Tabla

Se pueden definir vistas sobre ms de una tabla. Por ejemplo, sobre la combinacin
de dos tablas.

Podemos querer ver todos los datos de los empleados del departamento
Administracin.

Formando Emprendedores de Calidad para un Mundo Empresarial 45


Instituto de Educacin Superior
San Ignacio de Monterrico

SQL> create view depAdmin (cod_emp, nombre_emp, nombre_dep, dir)


2 as select e.cod_emp, e.nombre, d.nombre, d.loc
3 from emp e, dep d
4 where e.cod_dep=d.cod_dep and d.nombre='Administracion';

SQL> select * from depAdmin;

COD_EMP NOMBRE_EMP NOMBRE_DEP DIR


---------- ---------- --------------- ----------
101 Cano Administracion Valladolid
102 Roncal Administracion Valladolid
103 Rueda Administracion Valladolid
104 Martin Administracion Valladolid
105 Sanz Administracion Valladolid
106 Lopez Administracion Valladolid

6 rows selected.

PROCEDIMIENTOS ALMACENADOS

Un procedimiento es un programa dentro de la base de datos que ejecuta una


accin o conjunto de acciones especficas.

Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un


bloque de cdigo.

En Transact SQL los procedimientos almacenados pueden devolver valores


(numrico entero) o conjuntos de resultados.

Para crear un procedimiento almacenado debemos emplear la sentencia CREATE


PROCEDURE.

CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]

AS

-- Sentencias del procedure

Formando Emprendedores de Calidad para un Mundo Empresarial 46


Instituto de Educacin Superior
San Ignacio de Monterrico

Para modificar un procedimiento almacenado debemos emplear la sentencia


ALTER PROCEDURE.

ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]

AS

-- Sentencias del procedure

El siguiente ejemplo muestra un procedimiento almacenado, denominado


spu_addCliente que inserta un registro en la tabla "CLIENTES".

CREATE PROCEDURE spu_addCliente @nombre varchar(100),

@apellido1 varchar(100),

@apellido2 varchar(100),

@nifCif varchar(20),

@fxNaciento datetime

AS

INSERT INTO CLIENTES

(nombre, apellido1, apellido2, nifcif, fxnacimiento) VALUES

(@nombre, @apellido1, @apellido2, @nifCif, @fxNaciento)

Para la ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC.


Cuando la ejecucin del procedimiento almacenado es la primera instruccin del
lote, podemos omitir el uso de EXEC.

El siguiente ejemplo muestra la ejecucin del procedimiento almacenado anterior.

Formando Emprendedores de Calidad para un Mundo Empresarial 47


Instituto de Educacin Superior
San Ignacio de Monterrico

DECLARE @fecha_nacimiento datetime

set @fecha_nacimiento = convert(datetime, '13/05/1975', 103)

EXEC spu_addCliente'Pedro','Herrarte','Sanchez','00000002323', @fecha_nacimiento

Siempre es deseable que las instrucciones del procedure esten dentro de un bloque
TRY CATCH y controlados por una transaccin.

ALTER PROCEDURE spu_addCliente

@ombre varchar(100),

@apellido1 varchar(100),

@apellido2 varchar(100),

@nifCif varchar(20),

@fxNaciento datetime

AS

BEGIN TRY

BEGIN TRAN

INSERT INTO CLIENTES

(nombre, apellido1, apellido2, nifcif, fxnacimiento) VALUES

(@nombre, @apellido1, @apellido2, @nifCif, @fxNaciento)

COMMIT

END TRY

BEGIN CATCH

ROLLBACK

PRINT ERROR_MESSAGE()

END CATCH

Formando Emprendedores de Calidad para un Mundo Empresarial 48


Instituto de Educacin Superior
San Ignacio de Monterrico

Si queremos que los parmetros de un procedimiento almacenado sean de entrada-


salida debemos especificarlo a travs de la palabra clave OUTPUT , tanto en la
definicin del procedure como en la ejecucin.

El siguiente ejemplo muestra la definicin de un procedure con parmetros de salida.

CREATE PROCEDURE spu_ObtenerSaldoCuenta

@numCuenta varchar(20),

@saldo decimal(10,2) output

AS

BEGIN

SELECT @saldo = SALDO

FROM CUENTAS

WHERE NUMCUENTA = @numCuenta

END

Y para ejecutar este procedure:

DECLARE @saldo decimal(10,2)

EXEC spu_ObtenerSaldoCuenta '200700000001', @saldo output

PRINT @saldo

Un procedimiento almacenado puede devolver valores numricos enteros a travs


de la instruccin RETURN. Normalmente debemos utilizar los valores de retorno
para determinar si la ejecucin del procedimiento ha sido correcta o no. Si queremos
obtener valores se recomienda utilizar parmetros de salida o funciones escalares

El siguiente ejemplo muestra un procedimiento almacenado que devuelve valores.

Formando Emprendedores de Calidad para un Mundo Empresarial 49


Instituto de Educacin Superior
San Ignacio de Monterrico

CREATE PROCEDURE spu_EstaEnNumerosRojos

@numCuenta varchar(20)

AS

BEGIN

IF (SELECT SALDO FROM CUENTAS WHERE NUMCUENTA = @numCuenta) <


0

BEGIN

RETURN 1

END

ELSE

RETURN 0

END

Formando Emprendedores de Calidad para un Mundo Empresarial 50

Potrebbero piacerti anche