diseño de bases de datos - Instituto Superior Tecnológico San

Anuncio
Instituto de Educación Superior
“San Ignacio de Monterrico”
DISEÑO 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,
diseñado para facilitar su mantenimiento y acceso de forma estándar. Los
datos suelen aparecer en forma de texto, números o gráficos. Hay cuatro
modelos principales de bases de datos: el modelo jerárquico, el modelo en
Red, el modelo relacional (el más extendido hoy en día).
-
Base de Datos Relacional.- Tipo de base de datos o sistema de
administración de bases de datos, que almacena información estrictamente
en tablas de valores (filas y columnas de datos) y realiza búsquedas
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 colección de
relaciones normalizadas de diversos grados que varían con el tiempo.
2. MODELO DE DATOS
Es un conjunto de herramientas conceptuales para describir los datos, las
relaciones entre ellos, su semántica y sus limitantes.
Clases de Modelos de Datos:
Modelos Lógicos Basados en Objetos.- Son aquellos que nos permiten una
definición clara y concisa de los esquemas conceptuales y de visión. Su
característica principal es que permiten definir en forma detallada las limitantes
de los datos.
Modelos Lógicos Basados en Registros.- Operan sobre niveles conceptuales
y de visión. Se caracterizan principalmente porque permiten una descripción más
Formando Emprendedores de Calidad para un Mundo Empresarial 1
Instituto de Educación Superior
“San Ignacio de Monterrico”
amplia de la implantación, pero no son capaces de especificar con claridad las
limitantes de los datos.
Modelos Físicos de Datos.- Describen los datos en el nivel más bajo y permiten
identificar algunos detalles de implantación para el manejo del hardware de
almacenamiento.
3. SISTEMAS DE GESTIÓN DE BASES DE DATOS
Arquitectura de Red.- La infraestructura de comunicación por medio de redes.
La red más sencilla es una conexión directa entre dos computadoras. Usando la
terminología de redes, una relación 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 jerárquico.
-
Un registro miembro, equivalente a un registro hijo en el modelo
jerárquico.
La diferencia entre el modelo jerárquico y el de red es que este último incluye una
condición en la cual un miembro puede aparecer en más de un conjunto. Es
decir, un miembro puede tener muchos propietarios.
Lo que distingue a este modelo de los demás es que, en este todos los registros
mantienen una interconexión entre si, y también pueden existir relaciones de
muchos a muchos.
Arquitectura Jerárquica.- La estructura de base de datos jerárquica puede ser
representada como un árbol hacia abajo. El usuario percibe la base de datos
como una jerarquía de segmentos. Un segmento, también llamado nodo, es el
equivalente al tipo registro de un sistema de archivos, es decir que es una
colección de registros que se perciben organizados para conformar la estructura
de un árbol. Jerárquicamente, el nivel superior (la raíz) 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 Educación Superior
“San Ignacio de Monterrico”
abajo de otros segmentos son hijos de los segmentos que se encuentran arriba
de ellos. Una de sus características principales es que un segmento padre puede
tener varios segmentos hijos. Y al mismo tiempo se dan problemas como la
redundancia de información, que es superado por otros modelos.
Arquitectura Relacional.- El gran salto en la administración de bases de datos
se produce con el modelo relacional, basado en la proposición de Edgar Codd,
en 1970. La proposición del diagrama Entidad-Relación hizo que los diseñadores
y programadores prefirieran la implantación de este nuevo modelo. Entendemos
al diagrama entidad-relación como una propuesta de ver los datos como objetos
del mundo real, diferenciables unos de otros por sus características. Un objeto o
entidad es describible por la colección de características que tienen y, a la vez,
es diferenciable de otros objetos por las mismas características o atributos.
Entonces, se tiene una serie de entidades que comparten elementos
característicos 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 más utilizado en la práctica, esto es
debido a la facilidad de entendimiento y de manipulación por parte de
diseñadores y administradores.
Para entender este modelo de base de datos hay que tener claros ciertos
conceptos sencillos que son importantes a la hora de diseñar la base de datos y
sus relaciones.
Entidad: es una persona, cosa o transacción de la cual se puede guardar
información. Las entidades, en la fase de diseño (diagrama E-R), llegarán a
convertirse posteriormente en las tablas de la base de datos.
Atributos: son las características que se desean almacenar de las entidades.
Relación: una relación es una asociación entre dos entidades.
Conectividad: Se utiliza para clasificar el tipo de relación que une a las dos
entidades (uno a uno, un a muchos ó muchos a muchos).
Especifica el número específico de ocurrencias de la entidad asociadas con una
ocurrencia de la entidad relacionada.
Formando Emprendedores de Calidad para un Mundo Empresarial 3
Instituto de Educación 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 más 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 administración superior. Por lo tanto, es labor del
administrador decidir en primer lugar qué datos deben ser almacenados en la
base de datos y establecer políticas para mantener y manejar esos datos una vez
almacenados.
El administrador de base de datos (DBA) es el técnico 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 técnicos necesarios para hacer cumplir las diversas
decisiones de las políticas hechas por el DA. El DBA también es responsable de
asegurar que el sistema opere con el rendimiento adecuado y de proporcionar
una variedad de otros servicios técnicos.
El administrador de datos juega un papel más importante que el administrador de
la base de datos en las siguientes etapas del ciclo de vida: planificación de la
base de datos, definición del sistema, recolección y análisis de los requisitos,
diseño conceptual y diseño lógico de la base de datos. En el resto de las etapas
es donde el administrador de la base de datos tiene el papel más importante:
selección del SGBD, diseño de las aplicaciones, diseño físico, prototipo,
implementación, conversión 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 análisis estructurado. También 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 Educación Superior
“San Ignacio de Monterrico”
Data elements (elementos de datos).- Es la parte más pequeña de los datos
que tiene significado en el sistema de información. Se combinan varios
elementos de datos para hacer los registros o "data structures". Ejemplo:
Nombre, Dirección, Dni.
Las características 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 numérico,
caracteres o alfabético. Size o tamaño se refiere al máximo de caracteres o de
dígitos que puede tener el elemento de datos.
Formato de salida o mascara de edición.- Indica cómo se presenta el dato al
mostrarse en pantalla o al imprimirse en un reporte. Por ejemplo, el número de
teléfono del cliente se puede guardar en el disco usando solo números
7878889999, pero presentarse editado en la pantalla o en el reporte (787) 8889999.
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 título del dato en el reporte.
Source (fuente).- De dónde 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 línea de crédito puede ser cambiada por el
gerente de crédito.
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 específicos, una lista de valores, los valores que
Formando Emprendedores de Calidad para un Mundo Empresarial 5
Instituto de Educación Superior
“San Ignacio de Monterrico”
se encuentren en otro archivo, etc. El valor puede tener reglas de validación; por
ejemplo, el salario debe estar entre lo permitido para la posición que el empleado
ocupa.
Derivation formula.- Si el valor es el resultado de un cálculo, se muestra la
fórmula que se utiliza.
Description or comments.- Para proveer información adicional, notas o
descripciones.
Data Structure (Estructura de datos)
También se conocen como record. Es la combinación 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 características 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 – Código que provee acceso rápido al flujo de datos en un
diccionario de datos automatizado.
Description – Describe el flujo de datos y su propósito.
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 más de un flujo de datos o “data store” pueda hacer
referencia al mismo record.
Volume and frequency – Describe el número esperado de ocurrencias para el
flujo de datos por unidad de tiempo.
“Data store” – Las características que se describen en el “data store” son:
Name – El nombre del “data store” según 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 Educación Superior
“San Ignacio de Monterrico”
Abbreviation or ID – Código que provee un acceso rápido al “data store” en un
diccionario de datos automatizado.
Description – Describe el “data store” y su propósito.
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 número estimado de records guardados en el “data
store”, al igual que el aumento o cambio esperado.
Proceso – Se documenta cada función primitiva. Se incluye:
Process name or label – El nombre del proceso como aparece en el DFD.
Purpose or description – Un resumen del propósito general del proceso. Los
detalles se documentan en el Process Description.
Process number – Número de referencia que identifica el proceso y su relación
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 características que se describen son:
Name
Alias
Description – Describe a la entidad y su propósito.
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 Educación Superior
“San Ignacio de Monterrico”
DISEÑO LOGICO DE BASE DE DATOS
El objetivo del diseño lógico es convertir los esquemas conceptuales locales en un
esquema lógico global que se ajuste al modelo de SGBD sobre el que se va a
implementar el sistema. Mientras que el objetivo fundamental del diseño conceptual
es la compleción y expresividad de los esquemas conceptuales locales, el objetivo
del diseño lógico es obtener una representación que use de modo más 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 más extendidos son el modelo relacional, el modelo
de red y el modelo jerárquico. El modelo orientado a objetos es también muy
popular, pero no existe un modelo estándar orientado a objetos.
En un primer paso en la fase del diseño lógico consistirá en la conversión de esos
mecanismos de representación de alto nivel en términos de las estructuras de bajo
nivel disponibles en el modelo relacional.
Metodología de diseño lógico en el modelo relacional
La metodología que se va a seguir para el diseño lógico en el modelo relacional
consta de dos fases, cada una de ellas compuesta por varios pasos que se detallan
a continuación.
1. Convertir los esquemas conceptuales locales en esquemas lógicos 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á débil, ya que
sus ocurrencias dependen de la existencia de ocurrencias en las entidades
originales.
(b) Eliminar las relaciones entre tres o más entidades, sustituyendo cada una de
ellas por una nueva entidad (débil) intermedia que se relaciona con cada una de
Formando Emprendedores de Calidad para un Mundo Empresarial 8
Instituto de Educación 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 (débil) 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 (débil) y las relaciones binarias correspondientes de esta nueva
entidad con las entidades originales. La cardinalidad de estas relaciones
dependerá del tipo de la relación original y de su significado.
(e) Eliminar los atributos multievaluados, sustituyendo cada uno de ellos por una
nueva entidad (débil) y una relación 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 (sinónimos). Si así
fuera, ambas entidades deben integrarse en una sola.
(g) Eliminar las relaciones redundantes. Una relación es redundante cuando se
puede obtener la misma información 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 relación redundante, eso dependerá del
significado de cada relación.
Una vez finalizado este paso, es más correcto referirse a los esquemas
conceptuales locales refinados como esquemas lógicos 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 lógico local
En este paso, se obtiene un conjunto de relaciones (tablas) para cada uno de los
esquemas lógicos 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 relación de la base de datos tendrá un nombre, y el
Formando Emprendedores de Calidad para un Mundo Empresarial 9
Instituto de Educación Superior
“San Ignacio de Monterrico”
nombre de sus atributos aparecerá, a continuación, entre paréntesis. 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 relación (tabla) a la que
hacen referencia.
A continuación, se describe cómo las relaciones (tablas) del modelo relacional
representan las entidades y relaciones que pueden aparecer en los esquemas
lógicos.
(a) Entidades fuertes. Crear una relación para cada entidad fuerte que incluya
todos sus atributos simples. De los atributos compuestos incluir sólo 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 serán 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 mínimo número de caracteres (si es de
tipo texto).
-
Escoger la clave candidata más fácil de utilizar desde el punto de vista de
los usuarios.
(b) Entidades débiles. Crear una relación para cada entidad débil incluyendo
todos sus atributos simples. De los atributos compuestos incluir sólo sus
componentes. Añadir una clave ajena a la entidad de la que depende. Para ello,
se incluye la clave primaria de la relación que representa a la entidad padre en la
nueva relación creada para la entidad débil. A continuación, determinar la clave
primaria de la nueva relación.
Formando Emprendedores de Calidad para un Mundo Empresarial 10
Instituto de Educación Superior
“San Ignacio de Monterrico”
(c) Relaciones binarias de uno a uno. Para cada relación binaria se incluyen
los atributos de la clave primaria de la entidad padre en la relación (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 relación, 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 relación, la elección de padre e hijo es
arbitraria. Además, en caso de que ambas entidades participen de forma total en
la relación, se tiene la opción de integrar las dos entidades en una sola relación
(tabla). Esto se suele hacer si una de las entidades no participa en ninguna otra
relación.
(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
relación (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) Jerarquías de generalización. En las jerarquías, se denomina entidad padre
a la entidad genérica y entidades hijo a las sub-entidades. Hay tres opciones
distintas para representar las jerarquías. La elección de la más adecuada se hará
en función de su tipo (total/parcial, exclusiva/superpuesta).q
-
Crear una relación 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 también una clave ajena al padre. Esta
opción sirve para cualquier tipo de jerarquía, total o parcial y exclusiva o
superpuesta.
-
Crear una relación por cada entidad hijo, heredando los atributos de la
entidad padre. Esta opción sólo sirve para jerarquías totales y exclusivas.
-
Integrar todas las entidades en una relación, 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 consideración. Esta
opción sirve para cualquier tipo de jerarquía. Si la jerarquía es superpuesta, el
atributo discriminativo será multievaluado1.
Formando Emprendedores de Calidad para un Mundo Empresarial 11
Instituto de Educación Superior
“San Ignacio de Monterrico”
Una vez obtenidas las relaciones con sus atributos, claves primarias y claves
ajenas, sólo queda actualizar el diccionario de datos con los nuevos atributos que
se hayan identificado en este paso.
3. Validar cada esquema mediante la normalización
La normalización se utiliza para mejorar el esquema lógico, de modo que
satisfaga ciertas restricciones que eviten la duplicidad de datos. La normalización
garantiza que el esquema resultante se encuentra más próximo al modelo de la
empresa, que es consistente y que tiene la mínima redundancia y la máxima
estabilidad.
La normalización es un proceso que permite decidir a qué entidad pertenece
cada atributo. Uno de los conceptos básicos del modelo relacional es que los
atributos se agrupan en relaciones (tablas) porque están relacionados a nivel
lógico. En la mayoría de las ocasiones, una base de datos normalizada no
proporciona la máxima 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 lógicas.
-
El esquema lógico no tiene porqué ser el esquema final. Debe representar lo
que el diseñador entiende sobre la naturaleza y el significado de los datos de
la empresa. Si se establecen unos objetivos en cuanto a prestaciones, el
diseño físico cambiará el esquema lógico de modo adecuado. Una posibilidad
es que algunas relaciones normalizadas se des-normalicen. Pero la desnormalización no implica que se haya malgastado tiempo normalizando, ya
que mediante este proceso el diseñador aprende más sobre el significado de
los datos. De hecho, la normalización 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 anomalías que éstas pueden provocar cuando se
actualiza la base de datos.
-
Los equipos informáticos de hoy en día son mucho más potentes, por lo que
en ocasiones es más razonable implementar bases de datos fáciles de
manejar (las normalizadas), a costa de un tiempo adicional de proceso.
Formando Emprendedores de Calidad para un Mundo Empresarial 12
Instituto de Educación Superior
“San Ignacio de Monterrico”
-
La normalización 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 lógico local para garantizar que
puede soportar las transacciones requeridas por los correspondientes usuarios.
Estas transacciones se encontrarán 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-relación, 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
transacción no se puede realizar, seguramente será porque alguna entidad,
relación o atributo no se ha incluido en el esquema.
5. Dibujar el diagrama entidad-relación
En este momento, se puede dibujar el diagrama entidad-relación final para cada
vista de usuario que recoja la representación lógica de los datos desde su punto
de vista. Este diagrama habrá sido validado mediante la normalización 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 Educación 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 relación hijo
con la tupla de la relación 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 relación. Si la
participación de la entidad hijo en la relación 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 algún hijo? O lo que es lo mismo, ¿qué hacer cuando se quiere borrar
una tupla que está siendo referenciada por otra tupla a través de una clave
ajena? Hay varias respuestas posibles:
o Restringir: no se pueden borrar tuplas que están 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 tenía se
ponen, automáticamente, a nulo (esta respuesta sólo es válida si la
clave ajena acepta nulos).
o Valor por defecto: se borra la tupla deseada y todas las referencias
toman, automáticamente, el valor por defecto (esta respuesta sólo es
válida 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 través 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 hacían referencia.
Formando Emprendedores de Calidad para un Mundo Empresarial 14
Instituto de Educación Superior
“San Ignacio de Monterrico”
(e) Reglas de negocio. Cualquier operación 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 diseño físico.
7. Revisar cada esquema lógico local con el usuario correspondiente
Para garantizar que cada esquema lógico local es una fiel representación de la
vista del usuario lo que se debe hacer es comprobar con él que lo reflejado en el
esquema y en la documentación es correcto y está completo.
Relación entre el esquema lógico y los diagramas de flujo de datos
El esquema lógico refleja la estructura de los datos a almacenar que maneja la
empresa. Un diagrama de flujo de datos muestra cómo 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 lógico
desarrollado. Para ello:
-
Cada almacén de datos debe corresponder con una o varias entidades
completas.
-
Los atributos en los flujos de datos deben corresponder a alguna entidad.
Los esquemas lógicos locales obtenidos hasta este momento se integrarán en un
solo esquema lógico global en la siguiente fase para modelar los datos de toda la
empresa.
8. Mezclar los esquemas lógicos locales en un esquema lógico global
En este paso, se deben integrar todos los esquemas locales en un solo esquema
global. En un sistema pequeño, 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 Educación Superior
“San Ignacio de Monterrico”
sistemas grandes, se debe seguir un proceso más sistemático 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 relación.
- Comprobar las claves ajenas.
- Comprobar las restricciones de integridad.
- Dibujar el esquema lógico global.
9.
Actualizar la documentación.
Validar el esquema lógico global
Este proceso de validación se realiza, de nuevo, mediante la normalización y
mediante la prueba frente a las transacciones de los usuarios. Pero ahora sólo
hay que normalizar las relaciones que hayan cambiado al mezclar los esquemas
lógicos locales y sólo hay que probar las transacciones que requieran acceso a
áreas que hayan sufrido algún 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 mínimo. Si el esquema
lógico se puede extender fácilmente, cualquiera de los cambios previstos se
podrá incorporar al mismo con un efecto mínimo sobre los usuarios existentes.
11. Dibujar el diagrama entidad-relación final
Una vez validado el esquema lógico global, ya se puede dibujar el diagrama
entidad-relación que representa el modelo de los datos de la empresa que son de
Formando Emprendedores de Calidad para un Mundo Empresarial 16
Instituto de Educación Superior
“San Ignacio de Monterrico”
interés. La documentación que describe este modelo (incluyendo el esquema
relacional y el diccionario de datos) se debe actualizar y completar.
12. Revisar el esquema lógico global con los usuarios
Una vez más, se debe revisar con los usuarios el esquema global y la
documentación obtenida para asegurarse de que son una fiel representación de
la empresa.
Formando Emprendedores de Calidad para un Mundo Empresarial 17
Instituto de Educación Superior
“San Ignacio de Monterrico”
NORMALIZACION
La normalización es una técnica para diseñar la estructura lógica de los datos de un
sistema de información en el modelo relacional, desarrollada por E. F. Codd en
1972. Es una estrategia de diseño de abajo a arriba: se parte de los atributos y éstos
se van agrupando en relaciones (tablas) según su afinidad. Aquí no se utilizará la
normalización como una técnica de diseño de bases de datos, sino como una etapa
posterior a la correspondencia entre el esquema conceptual y el esquema lógico,
que elimine las dependencias entre atributos no deseadas. Las ventajas de la
normalización son las siguientes:
-
Evita anomalías 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 normalización es el de dependencia
funcional. Una dependencia funcional es una relación entre atributos de una misma
relación (tabla).
La dependencia funcional es una noción semántica. Si hay o no dependencias
funcionales entre atributos no lo determina una serie abstracta de reglas, sino, más
bien, los modelos mentales del usuario y las reglas de negocio de la organización o
empresa para la que se desarrolla el sistema de información. Cada dependencia
funcional es una clase especial de regla de integridad y representa una relación de
uno a muchos.
En el proceso de normalización se debe ir comprobando que cada relación (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 normalización. Si una
regla no se cumple, la relación se debe descomponer en varias relaciones que sí la
cumplan.
La normalización 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
normalización, las relaciones tienen un formato más estricto (más fuerte) y, por lo
tanto, son menos vulnerables a las anomalías de actualización. El modelo relacional
sólo requiere un conjunto de relaciones en primera forma normal. Las restantes
Formando Emprendedores de Calidad para un Mundo Empresarial 18
Instituto de Educación Superior
“San Ignacio de Monterrico”
formas normales son opcionales. Sin embargo, para evitar las anomalías de
actualización, es recomendable llegar al menos a la tercera forma normal.
Primera forma normal (1FN)
Una relación está en primera forma normal si, y sólo si, todos los dominios de la
misma contienen valores atómicos, es decir, no hay grupos repetitivos. Si se ve la
relación gráficamente como una tabla, estará en 1FN si tiene un solo valor en la
intersección de cada fila con cada columna.
Si una relación no está en 1FN, hay que eliminar de ella los grupos repetitivos. Un
grupo repetitivo será el atributo o grupo de atributos que tiene múltiples valores para
cada tupla de la relación. 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 eliminarán después mediante las restantes formas
normales. La segunda forma de eliminar los grupos repetitivos consiste en poner
cada uno de ellos en una relación aparte, heredando la clave primaria de la relación
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 relación está en segunda forma normal si, y sólo si, está en 1FN y, además,
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
más atributos. Si una relación está en 1FN y su clave primaria es simple (tiene un
solo atributo), entonces también está en 2FN. Las relaciones que no están en 2FN
pueden sufrir anomalías cuando se realizan actualizaciones.
Para pasar una relación 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 relación 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 Educación Superior
“San Ignacio de Monterrico”
Tercera forma normal (3FN)
Una relación está en tercera forma normal si, y sólo si, está en 2FN y, además, 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 relación.
Aunque las relaciones en 2FN tienen menos redundancias que las relaciones en
1FN, todavía pueden sufrir anomalías frente a las actualizaciones. Para pasar una
relación 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
relación con una copia de su determinante (el atributo o atributos no clave de los que
dependen).
Forma normal de Boyce-Codd (BCFN)
Una relación está en la forma normal de Boyce-Codd si, y sólo 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 todavía pueden existir sobre
otras claves candidatas, si éstas existen. La BCFN es más fuerte que la 3FN, por lo
tanto, toda relación en BCFN está en 3FN.
La violación de la BCFN es poco frecuente ya que se da bajo ciertas condiciones
que raramente se presentan. Se debe comprobar si una relación viola la BCFN si
tiene dos o más claves candidatas compuestas que tienen al menos un atributo en
común.
Resumen
El diseño de bases de datos consta de tres etapas: diseño conceptual, lógico y
físico. El diseño lógico es el proceso mediante el que se construye un esquema que
representa la información que maneja una empresa, basándose en un modelo lógico
determinado, pero independientemente del SGBD concreto que se vaya a utilizar
para implementar la base de datos e independientemente de cualquier otra
consideración física.
Formando Emprendedores de Calidad para un Mundo Empresarial 20
Instituto de Educación Superior
“San Ignacio de Monterrico”
Las dos fases de que consta el diseño lógico son la construcción y validación de los
esquemas lógicos locales para cada vista de usuario, y la construcción y validación
de un esquema lógico global. Cada una de estas fases consta de una serie de
pasos.
Un paso importante es la conversión del esquema conceptual a un esquema lógico
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 lógicos se pueden validar mediante la normalización y frente a las
transacciones de los usuarios. La normalización se utiliza para mejorar el esquema,
de modo que éste satisface ciertas restricciones que evitan la duplicidad de datos.
La normalización garantiza que el esquema resultante está más próximo al modelo
de la empresa, es consistente, tiene la mínima redundancia y la máxima 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 aplicación que actúe de interfaz entre el usuario, los
modelos y el sistema físico. Esta es la función que desempeñan los SGBD
(Sistemas de Gestión de Base de Datos), y que pueden definirse como un
paquete generalizado de software, que se ejecuta en un sistema computacional
anfitrión, centralizando los accesos a los datos y actuando de interfaz entre los
datos físicos y el usuario. Las principales funciones que debe cumplir un SGBD
Formando Emprendedores de Calidad para un Mundo Empresarial 21
Instituto de Educación Superior
“San Ignacio de Monterrico”
se relacionan con la creación y mantenimiento de la base de datos, el control de
accesos, manipulación 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 señalado como componentes
básicos los siguientes:
1. Un lenguaje de definición de esquema conceptual.
2. Un sistema de diccionario de datos.
3. Un lenguaje de especificación de paquetes de entrada/salida.
4. Un lenguaje de definición de esquemas de base de datos.
5. Una estructura simétrica de almacenamiento de datos.
6. Un módulo de transformación lógica a física.
7. Un subsistema de privacidad de propósito general.
8. Un subsistema de integridad de propósito general
9. Un subsistema de reserva y recuperación de propósito general.
10. Un generador de programas de aplicación.
11. Un generador de programas de informes.
12. Un lenguaje de consulta de propósito general.
El SGBD incorpora como herramienta fundamental 2 lenguajes:
1. El lenguaje de definición de datos (DDL, Data Definition Language) provee de
medios necesarios para definir los datos con precisión, especificando las
distintas estructuras. De acuerdo con el modelo de arquitectura de tres
niveles, habrá un lenguaje de definición de la estructura lógica global, otro
para la definición de la estructura interna, y un tercero para la definición de las
estructuras externas.
2. El lenguaje de manipulación de datos (DML, Data Manipulation/ Management
Language), es el encargado de facilitar a los usuarios el acceso y
manipulación de los datos. Pueden diferenciarse en procedimentales
(aquellos que requieren qué datos se necesitan y cómo obtenerlos) y no
procedimentales (que datos se necesitan, sin especificar como obtenerlos), y
Formando Emprendedores de Calidad para un Mundo Empresarial 22
Instituto de Educación Superior
“San Ignacio de Monterrico”
se encargan de recuperar los datos almacenados, de la inserción y supresión
de datos en la base de datos, y de la modificación 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 implantación de una base de datos
son enormemente importantes para una empresa u organización y vienen a
contribuir en el desarrollo y la funcionalidad de estas mismas.
A continuación se mencionan las más importantes y sobresalientes:
•
Se puede compartir toda la información necesaria.
•
La información puede ser globalizada dentro de una empresa.
•
Se mantiene la integridad en la información, es decir, que elimina la
información redundante y la información 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 Educación Superior
“San Ignacio de Monterrico”
OPERACIÓN DE LAS SENTENCIAS DE SQL
A continuación se indican las principales operaciones que se implementan a través
de sentencias SQL.
a. Creación 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 <definición de columnas>
Las columnas de la tabla recién 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 paréntesis. El orden de las definiciones de las columnas
determina el orden de izquierda a derecha de las columnas en la tabla. Cada
definición especifica el nombre de la columna y el tipo de datos que la columna
almacena.
b. Inserción de datos en una tabla
Crea una nueva fila de datos se añade 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 más pequeña que puede añadirse a una tabla.
La sentencia INSERT permite añadir una nueva fila a una tabla. Su sintaxis es:
INSERT INTO nombre tabla <Lista de columnas> VALUES >Lista de valores>
La cláusula INTO especifica la tabla que recibirá la nueva fila y las columnas que
almacenarán los datos Insertados. La cláusula 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. Modificación de datos de una tabla
Formando Emprendedores de Calidad para un Mundo Empresarial 24
Instituto de Educación 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
información almacenada en la base de datos sea un modelo exacto del mundo real.
La unidad más pequeña que puede modificarse es una columna de una fila.
La sentencia UPDATE permite modificar los valores de una o más columnas de las
filas seleccionadas de una tabla. Debe respetarse la siguiente sintaxis:
UPDATE nombre de tabla SET nombre de columna =expresión WHERE condición
El nombre de tabla identifica la tabla en que se realizará la actualización. La
condición que acompaña a la cláusula WHERE sirve para seleccionar las filas de la
tabla que serán modificadas. La cláusula SET es una lista de asignaciones
separadas por comas. Cada asignación identifica una columna destino a actualizar y
especifica cómo calcular el nuevo valor para dicha columna.
d. Eliminación 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 más pequeña 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 condición
La cláusula FROM especifica el nombre de la tabla de la que se eliminarán filas. La
condición de la cláusula WHERE selecciona las filas que serán suprimidas.
Obviamente si ninguna de las filas satisface dicha condición, ninguna de ellas será
eliminada.
e. Consultas de datos
Formando Emprendedores de Calidad para un Mundo Empresarial 25
Instituto de Educación Superior
“San Ignacio de Monterrico”
Las consultas de selección se utilizan para obtener información de las bases de
datos, esta información es devuelta en forma de conjunto de registros.
La sintaxis básica de una consulta de selección es la siguiente:
SELECT Lista de campos FROM Nombre de tabla WHERE Condicion
En donde Lista de Campos es la relación 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
generarán una tabla con varías columnas y varias filas. Las consultas más sencillas
solicitan columnas de datos de una única tabla en la base de datos.
f. Eliminación 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 Educación Superior
“San Ignacio de Monterrico”
TIPOS DE DATOS
El tipo de datos de integridad es la definición 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
Tipo de datos
Tamaño de
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
4 bytes
-3,402823E38
(entero largo)
Single
(coma
flotante/
(coma
–1,401298E-45
para
valores
negativos; 1,401298E-45 a 3,402823E38 para valores
precisión simple)
Double
a
positivos
8 bytes
-1.79769313486231E308
flotante/
-4,94065645841247E-324
precisión doble)
a
para
valores
negativos;
4,94065645841247E-324 a 1,79769313486232E308
para valores positivos
Currency
8 bytes
-922.337.203.685.477,5808
(entero a escala)
Decimal
a
922.337.203.685.477,5807
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 número
más
pequeño
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
(longitud fija)
cadena
Definido por el Número
usuario
de
la Desde 1 a 65.400 aproximadamente
requerido El intervalo de cada elemento es el mismo que el
por los elementos
intervalo de su tipo de datos.
Formando Emprendedores de Calidad para un Mundo Empresarial 27
Instituto de Educación Superior
“San Ignacio de Monterrico”
(utilizando Type)
binary
Imágenes
Formando Emprendedores de Calidad para un Mundo Empresarial 28
Instituto de Educación Superior
“San Ignacio de Monterrico”
OPERADORES EN SQL
Operadores Lógicos
Operador
Uso
AND
Es el “y” lógico. Evalúa dos condiciones y devuelve un valor de
verdad sólo si ambas son ciertas.
OR
Es el “o” lógico. Evalúa dos condiciones y devuelve un valor de
verdad si alguna de las dos es cierta.
NOT
Negación lógica. Devuelve el valor contrario de la expresión.
1. Operadores de Comparación
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 comparación 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 cláusula SELECT
en grupos de registros para devolver un único valor que se aplica a un
grupo de registros.
Comando
Descripción
AVG
Utilizada para calcular el promedio de los valores de un campo
determinado
Utilizada para devolver el número de registros de la selección
Utilizada para devolver la suma de todos los valores de un campo
determinado
Utilizada para devolver el valor más alto de un campo
especificado
Utilizada para devolver el valor más bajo de un campo
especificado
COUNT
SUM
MAX
MIN
EJEMPLOS
Lógicos:
Formando Emprendedores de Calidad para un Mundo Empresarial 29
Instituto de Educación 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 Educación Superior
“San Ignacio de Monterrico”
OTROS OPERADORES
El operador Like
Se utiliza para comparar una expresión de cadena con un modelo en una expresión
SQL. Su sintaxis es: expresión Like modelo
En donde expresión es una cadena modelo o campo contra el que se compara
expresión. 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 María), o se puede utilizar una cadena de caracteres comodín como
los reconocidos por el sistema operativo para encontrar un rango de valores (Like An
%).
El operador Like se puede utilizar en una expresión para comparar un valor de un
campo con una expresión 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'
carácter 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: expresión [Not] In(valor1, valor2, . . .)
SELECT *
FROM Pedidos
WHERE Provincia In (‘Trujillo’, 'Arequipa', 'Abancay’)
Formando Emprendedores de Calidad para un Mundo Empresarial 31
Instituto de Educación Superior
“San Ignacio de Monterrico”
La cláusula WHERE
La cláusula WHERE puede usarse para determinar qué registros de las tablas
enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción
SELECT. Después de escribir esta cláusula se deben especificar las condiciones
expuestas en los apartados anteriores. Si no se emplea esta cláusula, la consulta
devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe
ir a continuación 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 Educación 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 clásulas SELECT, WHERE y ORDER BY.
Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de
funciones para cada tipo de datos:
Funciones Aritméticas
Función
ABS(n)
CEIL(n)
FLOOR(n)
MOD(m,n)
Cometido
Calcula el valor absoluto de n.
Calcula el valor entero
inmediatamente superior o igual a n.
Calcula el valor entero
SIGN(n)
select ceil(15.7) from
dual;
select floor(15.7) from
Calcula el resto resultante de dividir
select mod(11,4) from
m entre n.
dual;
decimales. Si n<0 el redondeo se
efectua a por la izquierda del punto
decimal.
TRUNC(m,n)
dual;
dual;
Calcula el redondeo de m a n
SQRT(n)
select abs(-15) from
inmediatamante inferior o igual a n.
POWER(m,n) Calcula la potencia n-esima de m.
ROUND(m,n)
Ejemplo
Calcula la raíz cuadrada de n.
Calcula m truncado a n decimales (n
puede ser negativo).
select power(3,2)
from dual;
15
16
15
3
9
select
round(123.456,1)
123.5
from dual;
select sqrt(4) from
dual;
2
select
trunc(123.456,1) from
123.4
dual;
Calcula el signo de n, devolviendo -1 select sign(-12) from
si n<0, 0 si n=0 y 1 si n>0.
Resultado
dual;
-1
Funciones de Cadenas de Caracteres
Función
Cometido
Ejemplo
Resultado
Formando Emprendedores de Calidad para un Mundo Empresarial 33
Instituto de Educación Superior
“San Ignacio de Monterrico”
CHR(n)
ASCII(cad)
Devuelve el carácter cuyo select chr(65) from
valor codificado es n.
dual;
Devuelve el valor ascii de
select ascii('A') from
cad.
dual;
Devuelve cad1
CONCAT(cad1,cad2)
concatenada con cad2.
Esta función es
esquivalente al operador ||.
LOWER(cad)
select
concat(concat(nombre,'
es '),oficio) from emp;
Devuelve la cadena cad
select
con todas sus letras
lower('MinUsCulAs')
A
65
Cano es
Presidente, etc.
minusculas
convertidas a minúsculas. from dual;
UPPER(cad)
Devuelve la cadena cad
select
con todas sus letras
upper('maYuSCulAs')
MAYUSCULAS
convertidas a mayúsculas. from dual;
INITCAP(cad)
Devuelve cad con el primer select initcap('isabel')
caracter en mayúsculas.
from dual;
Isabel
Devuelve cad1 con
LPAD(cad1,n,cad2)
longitud n, y ajustada a la
select lpad('P',5,'*') from
derecha, rellenando por la dual;
****P
izquierda con cad2.
Devuelve cad1 con
RPAD(cad1,n,cad2)
longitud n, y ajustada a la
select rpad('P',5,'*')
izquierda, rellenando por la from dual;
P****
derecha con cad2.
Devuelve cad en la que
cada ocurrencia de la
REPLACE(cad,ant,nue) cadena ant ha sido
sustituida por la cadena
select
replace('digo','i','ie')
diego
from dual;
nue.
Devuelve la sudcadena de
SUBSTR(cad,m,n)
cad compuesta por n
caracteres a partir de la
posicion m.
LENGTH(cad)
select
substr('ABCDEFG',3,2) CD
from dual;
Devuelve la longitud de
select length('cadena')
cad.
from dual;
6
Funciones de Manejo de Fechas
Formando Emprendedores de Calidad para un Mundo Empresarial 34
Instituto de Educación Superior
“San Ignacio de Monterrico”
Función
SYSDATE
Cometido
Devuelve la fecha y
hora actuales.
Devuelve la fecha d
ADD_MONTHS(d,n)
incrementada en n
meses.
Devuelve la fecha
LAST_DAY(d)
del último día del
mes de d.
Devuelve la
MONTHS_BETWEEN(d1, diferencia en meses
d2)
entre las fechas d1 y
d2.
Ejemplo
select sysdate from dual;
select add_months(sysdate,4)
from dual;
select last_day(sysdate) from
dual;
Resultado
14-MAR-97
14-JUL-97
31-MAR-97
select
months_between(sysdate,'01-
2.43409424
JAN-97') from dual;
Devuelve la fecha
del primer día de la
NEXT_DAY(d,cad)
semana cad
después de la fecha
select next_day(sysdate,
'sunday') from dual;
16-MAR-97
d.
Funciones de Conversión de Tipos
Función
Cometido
Ejemplo
Resultado
Convierte la cadena cad a un select
TO_NUMBER(cad,fmto) número, opcionalmente de
to_number('12345')
124345
acuerdo con el formato fmto. from dual;
Convierte la fecha d a una
TO_CHAR(d, fmto)
cadena de caracteres,
opcionalmente de acuerdo
con el formato fmto.
select
to_char(sysdate) from '14-MAR-97'
dual;
Convierte la cadena cad de
TO_DATE(cad,fmto)
tipo varchar2 a fecha,
select to_date('1-JAN-
opcionalmente de acuerdo
97') from dual;
01-JAN-97
con el formato fmto.
Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar
la presentación de una fecha. En la siguiente tabla se presentan algunos formatos
de fecha y el resultado que generan.
Máscaras de Formato Numéricas
Formando Emprendedores de Calidad para un Mundo Empresarial 35
Instituto de Educación Superior
“San Ignacio de Monterrico”
Formato
Cometido
cc ó scc
Ejemplo
select to_char(sysdate,'cc') from
Valor del siglo.
y,yyy ó sy,yyy
Resultado
dual;
Año con coma, con o sin
select to_char(sysdate,'y,yyy')
signo.
from dual;
yyyy ó yyy ó yy ó Año sin signo con cuatro,
select to_char(sysdate,'yyyy')
y
tres, dos o un dígitos.
from dual;
q
Trimestre.
ww ó w
mm
ddd ó dd ó d
hh ó hh12 ó hh24
mi
1997
1
dual;
Número de la semana del
select to_char(sysdate,'ww') from
año o del mes.
dual;
select to_char(sysdate,'mm')
Número del día del año, del
select to_char(sysdate,'ddd')
mes o de la semana.
from dual;
La hora en formato 12h. o
select to_char(sysdate,'hh') from
24h.
dual;
073
select to_char(sysdate,'mi') from
dual;
Los segundos dentro del
11
03
from dual;
Los minutos de la hora.
ss ó sssss
1,997
select to_char(sysdate,'q') from
Número del mes.
20
select to_char(sysdate,'sssss')
12
15
44159
minuto, o desde las 0 horas. from dual;
Máscaras de Formato de Caracteres
Formato
Cometido
syear ó year Año en Inglés
Ejemplo
select to_char(sysdate,'syear)
nineteen ninety-
from dual;
seven
month o
Nombre del mes o su
select to_char(sysdate,'month')
mon
abreviatura de tres letras.
from dual;
Nombre del día de la
day ó dy
semana o su abreviatura de
tres letras.
a.m. ó p.m. El espacio del día.
b.c. ó a.d.
select to_char(sysdate,'day')
from dual;
select to_char(sysdate,'a.m.')
from dual;
Indicador del año respecto al select to_char(sysdate,'b.c.')
del nacimiento de Cristo.
Resultado
from dual;
march
friday
p.m.
a.d.
Otras Funciones
Formando Emprendedores de Calidad para un Mundo Empresarial 36
Instituto de Educación Superior
“San Ignacio de Monterrico”
Función
Cometido
Ejemplo
DECODE(var, val1,
Convierte el valor de select decode(oficio,
cod1, val2, cod2, ...,
var, de acuerdo con 'Presidente', 'P', 'Director', 'D',
defecto)
la codificación.
GREATEST(exp1, exp2, Devuelve el mayor
...)
valor de una lista.
LEAST(cad,fmto)
Devuelve el menor
valor de una lista.
Resultado
P, D, X, ...
'X') from emp;
sin ejemplo.
sin ejemplo.
sin ejemplo.
sin ejemplo.
Devuelve la
NVL(val, exp)
expresión exp si val select salario+nvl(comision,0)
450000,
es NULL, y val si en from emp;
350000, ...
otro caso.
Formando Emprendedores de Calidad para un Mundo Empresarial 37
Instituto de Educación Superior
“San Ignacio de Monterrico”
CONSULTAS Y SUBCONSULTAS
Definición de subconsultas.
Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia
SELECT. Normalmente se utilizan para filtrar una cláusula WHERE o HAVING con
el conjunto de resultados de la subconsulta, aunque también pueden utilizarse en la
lista de selección.
Por ejemplo podríamos 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
máxima 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 paréntesis.
La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o
en la cláusula HAVING de la consulta principal.
Tiene las siguientes restricciones:
•
No puede contener la cláusula ORDER BY
•
No puede ser la UNION de varias sentencias SELECT
•
Si la subconsulta aparece en la lista de selección, 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 Educación 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 selección, ejecutándose 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
cláusula 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 través 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 Educación Superior
“San Ignacio de Monterrico”
NOMBRE
FROM EMPLEADOS, ESTADOS
WHERE EMPLEADOS.ESTADO = ESTADOS.ESTADO
AND ESTADOS.ACTIVO = 'S'
Normalmente es más rápido utilizar un JOIN en lugar de una subconsulta, aunque
esto depende sobre todo del diseño de la base de datos y del volumen de datos que
tenga.
Utilización de subconsultas con UPDATE
Podemos utilizar subconsultas también en consultas de actualización 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 función EXISTS
EXISTS es una función 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 función EXISTS puede ser utilizada en cualquier sentencia SQL válida, SELECT,
UPDATE, INSERT o DELETE.
Formando Emprendedores de Calidad para un Mundo Empresarial 40
Instituto de Educación 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 búsqueda especificados en la cláusula WHERE. Si se desea forzar a no utilizar
ningún índice utilizaremos la siguiente sintaxis:
SELECT ... FROM Tabla (INDEX=0) ...
Consultas con Predicado
El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar,
los posibles predicados son:
Predicado
ALL
TOP
DISTINCT
DISTINCTOW
Descripción
Devuelve todos los campos de la tabla
Devuelve un determinado número de registros de la tabla
Omite los registros cuyos campos seleccionados coincidan totalmente
Omite los registros duplicados basándose en la totalidad del registro y
no sólo 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 instrucción
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 más rápido indicar el
listado de campos deseados.
Formando Emprendedores de Calidad para un Mundo Empresarial 41
Instituto de Educación Superior
“San Ignacio de Monterrico”
SELECT ALL
FROM Empleados
SELECT *
FROM Empleados
TOP
Devuelve un cierto número de registros que entran entre al principio o al final de un
rango especificado por una cláusula 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 cláusula 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 número 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 cláusula 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 continuación de TOP debe ser un entero sin signo. TOP no afecta
a la posible actualización 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 instrucción 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 Educación Superior
“San Ignacio de Monterrico”
Empleados pueden tener el mismo apellido. Si dos registros contienen López en el
campo Apellido, la siguiente instrucción SQL devuelve un único registro:
SELECT DISTINCT Apellido
FROM
Empleados
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos
campos indicados en la cláusula 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.NombreCategoría
FROM Productos AS P INNER JOIN Categorías AS C
Formando Emprendedores de Calidad para un Mundo Empresarial 43
Instituto de Educación Superior
“San Ignacio de Monterrico”
ON P.IdCategoría=C.IdCategoría
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.NombreCategoría,
PV.NombreCompañía
FROM Productos AS P INNER JOIN Categorías AS C
ON P.IdCategoría=C.IdCategoría INNER JOIN Proveedores AS PV
ON P.IdProveedor= PV.IdProveedor
WHERE P.IdProveedor= 1
USE Nwind
GO
SELECT C.IdCliente, C.NombreCompañía, 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 Educación 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 información puede ser actualizada en las vistas directamente o a través de las
tablas sobre las que se definen.
Existen algunas restricciones:
Borrado de filas de una tabla a través de una vista
La vista se debe crear con filas de una sola tabla; sin utilizar las cláusulas
GROUP BY y DISTINCT; y sin utilizar funciones de grupo o referencias a
pseudos-columnas (ROWNUM).
Actualización de filas a través de una vista
La vista ha de estar definida según las restricciones anteriores y además
ninguna de las columnas a actualizar debe haber sido definida como una
expresión.
Inserción de filas en una tabla a través de una vista
Todas las restricciones y además todas las columnas obligatorias de la tabla
asociada deben estar presentes en la vista.
9.2 Vistas de más de una Tabla
Se pueden definir vistas sobre más de una tabla. Por ejemplo, sobre la combinación
de dos tablas.
Podemos querer ver todos los datos de los empleados del departamento
Administración.
Formando Emprendedores de Calidad para un Mundo Empresarial 45
Instituto de Educación 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
acción o conjunto de acciones específicas.
Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un
bloque de código.
En Transact SQL los procedimientos almacenados pueden devolver valores
(numérico 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 Educación 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 ejecución del procedimiento almacenado es la primera instrucción del
lote, podemos omitir el uso de EXEC.
El siguiente ejemplo muestra la ejecución del procedimiento almacenado anterior.
Formando Emprendedores de Calidad para un Mundo Empresarial 47
Instituto de Educación 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 transacción.
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 Educación Superior
“San Ignacio de Monterrico”
Si queremos que los parámetros de un procedimiento almacenado sean de entradasalida debemos especificarlo a través de la palabra clave OUTPUT , tanto en la
definición del procedure como en la ejecución.
El siguiente ejemplo muestra la definición de un procedure con parámetros 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 numéricos enteros a través
de la instrucción RETURN. Normalmente debemos utilizar los valores de retorno
para determinar si la ejecución del procedimiento ha sido correcta o no. Si queremos
obtener valores se recomienda utilizar parámetros 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 Educación 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
Descargar