Está en la página 1de 239

DISEO DE

SISTEMAS

Conceptos Bsicos de Base de Datos


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Un poco de historia
Sistemas de archivos:
Surgieron a raz de la necesidad de
almacenamiento de la informacin para su
correspondiente reutilizacin (persistencia)
Desventajas:
Redundancia de los datos
Los archivos estn separados unos de otros
(no se pueden combinar fcilmente)
Alto costo para la propagacin de cambios
Inconsistencia debido a actualizaciones
simultneas

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Un poco de historia
Procesamiento
de

Usuario del
Archivo de Clientes

Clientes

Archivo
de
Clientes

Procesamiento
de

Prstamos
Usuario del
Archivo de Prstamos

Archivo
de
Prstamos

Por cada prstamo se guarda la informacin


del cliente correspondiente: Redundancia
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Un poco de historia
Por qu surgieron los sistemas de Bases de Datos?

Necesidad de solucionar las debilidades de los


sistemas de archivos

Capacidades:

Manejo de persistencia

Soporte por lo menos de un modelo de datos

Soporte de un lenguaje de alto nivel que permita manipular y


definir la estructura de la informacin

Control de acceso

Evitar inconsistencias al compartir la informacin

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Antes

Dpto. Personal

Empleados

Dpto. Ventas
Clientes

Ventas

Dpto. Contabilidad
Cuentas

Inventario

Personal
Ventas

Contabilidad

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ahora
SGBD

BASE DE DATOS
Empleados
Clientes
Ventas
Inventario
Cuentas

Definicin

Una base de datos es un conjunto


estructurado de datos coherentes
Coleccin disponible de
informacin

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Definicin

Una base de datos es un conjunto


estructurado de datos coherentes
Coleccin organizada en
subconjuntos, en funcin de
ligas y de relaciones entre las
diferentes informaciones
(estructura lgica)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Definicin

Una base de datos es un conjunto


estructurado de datos coherentes
No hay contradiccin entre los
datos ligados, no hay prdida de
informacin, aun sabiendo que
hay una utilizacin compartida
de los datos entre varios
usuarios

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Definicin

Un Sistema de Gestin de Bases de Datos


(SGBD) es un software que permite
manipular las bases de datos
Construir
Utilizar
Mantener
Reorganizar

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Sistema de Gestin de Base de Datos (SGBD - DBMS)


Conjunto de programas que permite DEFINIR, CONSTRUIR y
MANIPULAR bases de datos para diversas aplicaciones

Definir una BD es especificar...

estructura de datos,

tipos de datos y

restricciones de los datos

Construir una BD es...

almacenar datos en algn medio de almacenamiento controlado por el SGBD

Manipular la BD es...

consultar datos

introducir/modificar/eliminar datos, para reflejar cambios en el minimundo

generar informes a partir de los datos almacenados

Sistema de Base de Datos


SBD = BD + SGBD + Software de Aplicacin/Consultas
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

10

Entorno simplificado de un Sistema de Base de Datos


Usuarios / Programadores

SISTEMA DE BASE DE
DATOS

Programas de Aplicacin /
Consultas

SOFTWARE DEL
SGBD
Software para procesar
Consultas / Programas
Software para tener
acceso a los datos
almacenados

Definicin de la
BD
(Metadatos)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Base de
Datos
almacenada

Sistema de Gestin de Bases de Datos

Propiedades fundamentales

Independencia de los datos (OJO es muy importante)


Acceso eficiente a los datos
Integridad y seguridad de los datos
Administracin de los datos
Acceso concurrente y recuperacin en caso de crash

Los SGBD deben cumplir con las propiedades ACID para las
transacciones:
Atomicity (Atomicidad: las transacciones son atmicas)

Consistency (Consistencia: una transaccin transforma un estado


consistente de la BD en otro)

Isolation (Aislamiento: las transacciones estn aisladas entre si)


Durability (Durabilidad: despus que una transaccin ha sido
confirmada ella persiste)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Algunas definiciones

Esquema de una Base de Datos: Cuando una base de Datos


es diseada interesa definir una estructura para sta.
Esta estructura permanece esttica durante un gran perodo
de tiempo, aunque puede sufrir modificaciones ocasionales

Instancia: Es la informacin que en un determinado instante


del tiempo posee la base de datos y que cambia
permanentemente (excepto en algunos tipos de bases de BD
particulares)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Algunas definiciones

Usuario final: El que interacta con la base de


datos, por lo general a travs de aplicaciones e
interfaces
Usuario especialista: El que disea y programa
aplicaciones para usuarios finales.
DBA (Database Administrator): El que
administra la base de datos. Qu hace?

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Administrador de la base de datos (DBA)

Responsable de administrar los recursos del SBD (nivel


tcnico):
BD + SGBD + Otro Software (aplicaciones/programas de
acceso)

Las funciones del ABD incluyen:


Definir/Modificar la estructura de la BD y restricciones de
los datos
Crear/Modificar estructuras de almacenamiento y mtodos
de acceso
Conceder/Denegar permisos de acceso y controlar dicho
acceso a datos (seguridad de la BD)
Definir planes de copias de seguridad de los datos de la BD
Garantizar el funcionamiento correcto del sistema y
proporcionar servicio tcnico al usuario (respuesta lenta del
sistema...)
Adquirir los recursos software y hardware necesarios
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Usuario Especialista de la base de datos

Antes de implementar la BD, interactan con sus futuros


usuarios

Recogen y comprenden sus necesidades y objetivos --Requisitos


Identifican datos que almacenar en la base de datos
Eligen estructuras para representar y almacenar los datos
Construyen...
Vista que satisface requisitos de cada grupo de
usuarios
Diseo final de BD que satisface necesidades de
todos los usuarios (resultado de la integracin de las
diferentes vistas)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Usuarios finales

Ocasionales o Sofisticados
Acceso espordico y distinto cada vez; usan lenguaje de
consulta

Paramtricos o Normales
Accesos constantes, repetitivos

Usan transacciones programadas para ellos

Avanzados o Especializados
Implementan sus propias aplicaciones especializadas para
cumplir sus complejos requisitos
Ingenieros, cientficos, analistas de empresa, ...

Autnomos
Usan BD personales, a travs de aplicacin/paquete comercial
especfico

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Funciones y componentes principales de un SGBD


Peticiones
DML planeadas

Peticiones
DML No planeadas

Procesador
DML

Procesador
Lenguaje
Consulta

Esquemas
externos

Peticiones
compiladas

Procesador
DDL

DDL: lenguaje de definicin de datos


DML: lenguaje de manipulacin de datos

Optimizador
Esquemas y
transformaciones

Peticiones
optimizadas

Manejador de transacciones
Manejador de almacenamiento

Bases de datos I

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Datos
y
Metadatos

Base de datos

Fuente: Introduccin a los


sistemas de bases de
datos C.J. Date

18

Componentes funcionales de un SGBD

Metadatos o Diccionario de Datos (D.D): Contiene el esquema


de la B.D, los usuarios, los permisos de acceso, etc. Son datos
sobre los datos. Almacena la informacin que permite la
traduccin entre los 3 niveles de la Arquitectura ANSI/SPARC*

Optimizador de consultas: Define el plan de ejecucin de


operaciones solicitadas por los usuarios, de tal manera que se
lleven a cabo de la manera ms eficiente posible
Manejador de transacciones:
concurrencia de operaciones

*Se ver mas adelante en el curso

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Controla el acceso y la

Componentes funcionales de un SGBD

Manejador de
componentes:

almacenamiento

tiene

dos

-Manejador de archivos recupera desde disco


los bloques que contienen la informacin solicitada
por una transaccin.
-Manejador de buffer mantiene en memoria
principal la informacin ms usada y decide cuando
llevar a disco alguno de sus bloques.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ventajas del uso de un SGBD (1)

Disminucin y control de la redundancia de datos


Evitar inconsistencias en los datos
Mantener la integridad
Aplicacin de restricciones de seguridad ( RS )
No todos los usuarios deberan poder acceder a toda la BD
Objetivo: control de acceso selectivo

Suministro de mltiples interfaces de usuario


Usuarios con diferentes niveles de conocimientos tcnicos
El SGBD debe ofrecer interfaces para todos ellos

Representacin de relaciones complejas entre datos


Datos relacionados entre s de diversas maneras

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ventajas del uso de un SGBD (y 7)

Respaldo y Recuperacin
Recuperacin del sistema tras fallos del hardware o software
Subsistema del SGBD encargado de respaldo y recuperacin

Estado
INICIAL

Programa de
ACTUALIZACIN
de datos

BD KO !!

Estado
FINAL

BD ok

BD ok

Restauracin de la
BD
Deshacer toda
actualizacin de datos
hecha por el programa

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

XOR
SGBD

Continuacin y
Finalizacin Correcta
del programa

Desventajas de un SGBD
1.

Tamao

2.

Susceptibilidad a fallas (Discutible)

3.

4.

Complejidad en la recuperacin a fallas


(Discutible)
Puede llegar a trabajar en forma lenta debido
a la cantidad de verificaciones que debe
hacer

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Tendencias de los SGBD

Sistemas para el soporte para toma de decisiones (Data


Warehouse) y/o con capacidades deductivas y bases de datos
temporales

Manejar informacin multimedial: Imgenes, audio, videos

Bases de datos orientadas a objetos y objeto-relacionales

Manejar informacin georeferenciada: Sistemas de Informacin


Geogrficos (SIG)

Manejo de informacin documental: Motores de bsqueda,


sistemas para el manejo de documentos.

Bases de datos nativas para XML

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Niveles de Abstraccin de una B.D.

Percepcin de una base de datos segn


el tipo de usuario (final, especialista o
administrador).

Arquitectura ANSI/SPARC

Base para la independencia de datos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Arquitectura ANSI/SPARC
Nivel de visin o externo
(Vistas Parciales)
Nivel Conceptual o lgico
(Vista Global o Comunitaria)

Nivel Fsico
(Almacenamiento)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Inventario

Ventas

Contabilidad

Base de datos lgica (vista


Integrada)

Base de Datos fsica


implementada

Nivel de Visin

Externo

El ms cercano a los usuarios finales

Percepcin de la base de datos por parte de los


usuarios finales
Tantas visiones como tipos de usuarios

Cada visin de usuario final se puede


caracterizar como un subesquema

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Nivel de Visin

Cada visin puede proporcionar diferentes


representaciones de los mismos datos
Visin Contador
Visin Vendedor
Fechas con formato:
(dd-mm-yy)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

BD

Fechas con formato:


(yyyy-dd-mm)

Nivel Conceptual

Mediador entre los otros 2 niveles

Interesante para el usuario especialista

Se ocupa de los datos almacenados en la base de


datos fsica y las relaciones entre ellos
Descripcin semntica de los datos que conforman
la base de datos
Soporta a cada visin de usuario externa

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Nivel Conceptual

Es una visin completa de todos los requerimientos y


elementos de inters para la organizacin

Debe incluir restricciones sobre los datos


La descripcin del nivel conceptual no debe tener detalles
dependientes del almacenamiento*
Es un lenguaje de alto nivel

* Sin embargo en algunos SGBD esto no se logra expresar de esta manera

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Nivel Fsico

Interno

Ms cercano a la mquina

Interesa al Administrador y al usuario Especialista

Esquema fsico: Descripcin y tipos de datos:


tamao y precisin, tipos de ndices y de
estructuras de almacenamiento concretas que se
manejan, de acuerdo con un SGBD particular

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Nivel Fsico

Describe cmo los datos son almacenados en


trminos de estructuras de datos particulares
Se encarga de:
- Reservar espacio para datos e ndices
- Compresin de datos

- Tcnicas de encriptamiento de datos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia de los datos

Es uno de los objetivos de la arquitectura


ANSI/SPARC
Permite modificar la definicin de un nivel sin afectar
(en lo posible) el nivel inmediatamente superior
Sin independencia de datos se requerira mucho
esfuerzo para cambiar las aplicaciones de tal forma
que se adaptasen a la nueva estructura de la base de
datos.
Hay dos tipos: fsica y lgica

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia Fsica

Se presenta entre el nivel conceptual y el nivel fsico


Un cambio en el esquema fsico (usar otras estructuras de
almacenamiento) no conduce a cambios en el esquema
conceptual
Ej. Cambio en la forma de almacenar un ndice: B+ por
Hashing, con qu propsito se hace un cambio de este
tipo?

Inmunidad del esquema conceptual ante cambios del


esquema fsico

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia Lgica

Se presenta entre el nivel de visin y el nivel


conceptual
Significa que un cambio en el nivel conceptual
no debe conllevar a un cambio en el nivel de
visin
Es ms difcil de lograr. Por qu?

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia Lgica
Algunos de los posibles cambios en el nivel
conceptual:

Adicin de nuevos elementos (atributos,


entidades etc.)
Eliminacin de elementos Puede afectar a
los subesquemas externos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Diferencias entre los niveles


Vista externa 1

Vista externa 2
Correspondencias
Externa / Conceptual

Nivel
conceptual
Correspondencia
Conceptual / Interna

Nivel interno

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

DISEO DE

SOFTWARE

Introduccin a SQL Server


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Plataforma del Servidor

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Servicios de SQL Server

Servicio principal para almacenar, procesar y


proteger datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

Antes de crear una base de datos con SQL


Server, debemos tomar en cuenta que la
unidad bsica de almacenamiento en SQL
Server es la pgina o data page, el tamao de
cada page es de 8 KB, lo cual representa un
total de 128 pginas por cada megabyte.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Transact SQL- Server

Es un sublenguaje derivado del SQL (Strutured


Language Query) que tiene instrucciones que
sirven para realizar peticiones al Database
Engine.

Sublenguaje propietario de Microsoft.

Incluye caractersticas propias.

En base al estndar de SQL.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

El comienzo de cada pgina es una cabecera


de 96 bytes que se utiliza para almacenar
informacin de cabecera tal como el tipo de
pgina, la cantidad de espacio libre de la
pgina y el Id. del objeto propietario de la
pgina.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

Existen ocho tipos de pginas en los archivos


de datos de una base de datos SQL Server:
1.

Datos : Filas con todos los datos excepto los de


tipo text, ntext e image.

2.

ndice: Entradas de ndices

3.

Texto o imagen: Datos de tipo text, ntext e image.

4.

Mapa de asignacin global/ Mapa de asignacin


global Secundario : Informacin acerca de las
extensiones asignadas.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones
5.

Espacio libre en la pgina: Informacin acerca del


espacio libre disponible en las pginas.

6.

Mapa de asignacin de ndices: Informacin acerca de


las extensiones utilizadas por una tabla o un ndice

7.

Bulk Changed Map : Informacin de los extends


modificados por operacin bulk desde el ltimo backup
del log.

8.

Differential Changed Map : Informacin de los extends


modificados desde el ltimo full database backup.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

Los archivos de registro (LOG) no contienen


pginas, contienen series de registros.

Las entradas de la tabla de posiciones de filas


estn en orden inverso a la secuencia de las
filas de la pgina.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones
Las filas de datos se ponen en las pginas una a continuacin de otra,
empezando inmediatamente despus de la cabecera, al final de cada pgina
se encuentra una tabla de posiciones de filas que contiene una entrada por
cada fila de la pgina y cada entrada registra la posicin, desde el principio
de la pgina, del primer byte de la fila.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

En SQL Server, las filas no pueden continuar


en otras pginas.
Las extensiones son la unidad bsica de
asignacin de espacio a las tablas e ndices.

Constan de 8 pginas contiguas, es decir 64 KB. Lo


cual representa 16 extensiones por MB.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

Para hacer que la asignacin de espacio sea


eficiente, SQL Server no asigna extensiones
enteras a tablas con poca cantidad de datos.

SQL Server tiene dos extensiones ms


utilizadas:

Las extensiones uniformes son propiedad de un


nico objeto; slo el objeto propietario puede utilizar
las ocho pginas de la extensin.

Extensiones mixtas, pueden estar compartidas por


hasta ocho objetos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Pginas y Extensiones

Las tablas o ndices nuevos son asignados a


pginas de extensiones mixtas. Cuando la
tabla o el ndice crecen hasta el punto de
ocupar ocho pginas, se pasan a extensiones
uniformes.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos y grupos de archivos fsicos de


la base de datos

Un archivo de base de datos no es mas que un


archivo del sistema operativo. Una base de
datos se distribuye en por lo menos dos archivos,
aunque es muy probable que sean varios los
archivos de base de datos que se especifican al
crear o al modificar una base de datos.
Principalmente SQL Server divide su trabajo en
un archivo para datos y otro para el registro de
las transacciones (log).

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos y grupos de archivos fsicos de


la base de datos
SQL Server permite los tres siguientes tipos de archivos:

Archivos de datos primarios: Toda base de datos tiene un archivo


de datos primario que realiza el seguimiento de todos los dems
archivos, adems de almacenar datos. Por convenio este archivo
tiene la extensin MDF.
Archivos de datos secundarios: Una base de datos puede tener
cero o varios archivos de datos secundarios. Por convenio la
extensin recomendada para los archivos de datos secundarios es
NDF.
Archivos de registro (LOG): Todas las bases de datos por lo menos
tendrn un archivo de registro que contiene la informacin necesaria
para recuperar todas las transacciones que suceden sobre la misma.
Por convenio la extensin de este archivo es LDF.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos y grupos de archivos fsicos de


la base de datos

Por lo tanto al crear una base de datos,


debemos considerar los siguientes premisas y
reglas para el almacenamiento de los datos:

Todas las Bases de Datos tienen un archivo de base


de datos primario (.mdf) y uno para el Log de
Transacciones (.ldf). Adems puede tener archivos
de datos secundarios (.ndf).

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos y grupos de archivos fsicos de


la base de datos

Cuando se crea una Base de Datos, una copia de la


Base de Datos Model, la cual incluye tablas del
sistema, es copiada en la Nueva Base de Datos.

La Data es almacenada en bloques de 8-kilobytes


(KB) de espacio de disco contiguo llamado pginas.

Las filas o registros no pueden atravesar pginas.


Esto, es, que la mxima cantidad de datos en una
fila de datos simple es de 8060 bytes.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos y grupos de archivos fsicos de


la base de datos

Las tablas y los ndices son almacenados en


Extents. Un Extents consta de ocho pginas
contiguas, o sea 64 KB.

El Log de Transacciones lleva toda la informacin


necesaria para la recuperacin de la Base de Datos
en una eventual cada del sistema. Por default, el
tamao del Log de Transacciones es del 25% del
tamao de los archivos de datos. Use esta
configuracin como punto de partida y ajuste de
acuerdo a las necesidades de su aplicacin.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos de Registro (LOG de


Transacciones)

El LOG de transacciones archiva todas las


modificaciones de los datos tal cual son
ejecutados. El proceso es como sigue:

Una modificacin de datos es enviada por la


aplicacin cliente.

Cuando una modificacin es ejecutada, las pginas


afectadas son ledas del disco a memoria (Buffer
Cache), provista de las pginas que no estn
todava en la Data Cache del query previo.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos de Registro (LOG de


Transacciones)

Cada comando de modificacin de datos es


archivado en el LOG. El cambio siempre es
archivado en el LOG y es escrito en el disco antes
que el cambio sea hecho en la Base de Datos. Este
tipo de LOG es llamado LOG de tipo write-ahead.

Una vez que las pginas de datos residen en el


Buffer Cache, y las pginas de LOG son archivadas
sobre el disco en el archivo del LOG, el proceso de
CHECKPOINT, escribe todas las transacciones
completas a la Base de Datos en el disco.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos de Registro (LOG de


Transacciones)

Si el sistema falla, automticamente el proceso


de recuperacin usa el LOG de Transacciones
para llevar hacia delante todas las
transacciones comprometidas (COMMIT) y
llevar hacia atrs alguna transaccin
incompleta (ROLLBACK).

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos de Registro (LOG de Transacciones)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Archivos de Registro (LOG de


Transacciones)

Los marcadores de transaccin en el LOG son


usados durante la recuperacin automtica
para determinar los puntos de inicio y el fin de
una transaccin. Una transaccin es
considerada completa cuando el marcador
BEGIN TRANSACTION tiene un marcador
asociado COMMIT TRANSACTION. Las
pginas de datos son escritas al disco cuando
ocurre el CHECKPOINT.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Creando una Base de datos

Desde el Analizador de Consultas :


Otra de las formas de crear una base de datos
es a travs del Analizador de Consultas, donde
emplearemos la sentencia CREATE DATABASE,
cuya sintaxis reducida es la siguiente:

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Creando una Base de datos


CREATE DATABASE NombreBaseDatos
[ ON [PRIMARY
NAME = nombreArchivoLgico,
FILENAME = 'nombreArchivoSO',
SIZE = tamao,
MAXSIZE = { tamaoMximo | UNLIMITED } ,
FILEGROWTH = incrementoCrecimiento) [,n]
]
[ LOG ON
NAME = nombreArchivoLgico,
FILENAME = 'nombreArchivoSO',
SIZE = tamao,
MAXSIZE = { tamaoMximo | UNLIMITED } ,
FILEGROWTH = incrementoCrecimiento) [,n]
[COLLATE nombre_collation] [ FOR LOAD | FOR ATTACH ]

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

nombreBaseDatos
Es el nombre de la nueva base de datos, deben ser nicos en
un servidor y pueden tener hasta 128 caracteres, a menos que
no se especifique ningn nombre lgico para el registro. Si no
se especifica ningn nombre lgico de archivo de registro, SQL
Server genera un nombre lgico al anexar un sufijo a
nombreBaseDatos.

ON
Especifica que los archivos de disco utilizados para almacenar
la parte de datos (archivos de datos) se han definido
explcitamente. La palabra clave va seguida de una lista
delimitada por comas de elementos que definen los archivos de
datos del grupo de archivos principal.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

PRIMARY
Especifica que la lista de archivos est asociada al grupo
principal. Este grupo contiene todas las tablas del sistema de
base de datos. Tambin contiene todos los objetos no
asignados a los grupos de archivos de usuario.
El primer archivo especificado pasa a ser el archivo principal, el
cual contiene el inicio lgico de la base de datos y de las tablas
del sistema.
Una base de datos slo puede tener un archivo principal. Si no
se especifica PRIMARY, el primer archivo enumerado en la
instruccin CREATE DATABASE se convierte en el archivo
principal.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

LOG ON
Especifica que los archivos de registro de la base de
datos (archivos de registro) se han definido
explcitamente.
La palabra clave va seguida de una lista delimitada por
comas la cual define las caractersticas de los archivos
de registro.
Si no se especifica LOG ON, se crea automticamente
un nico archivo de registro con un nombre generado
por el sistema y un tamao que es el 25% de la suma
de los tamaos de todos los archivos de datos de la
base de datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

NAME
Especifica el nombre lgico del archivo.
Este nombre es el utilizado para referenciar al
archivo en las sentencias del Transact-SQL que
se ejecuten despus.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

FILENAME
Especifica el nombre de archivo del sistema
(archivo fsico). Se debe especificar la ruta de
acceso y nombre de archivo que el sistema
operativo utiliza cuando crea la base de datos.

La ruta de acceso debe especificar un directorio


en el servidor sobre el que se instalo SQL
Server. No se puede especificar un directorio
en un sistema comprimido de archivos.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Argumentos

SIZE
Especifica el tamao para el archivo. De no hacerlo
SQL Server utiliza el tamao del archivo principal de la
base de datos model.
Cuando este parmetro no es especificado para un
archivo secundario o de registro SQL Server
automticamente le asigna 1 MB. El valor mnimo a
asignar es de 512 KB. Si no se especifica tamao, el
valor predeterminado es 1 MB.
El tamao especificado para el archivo principal debe
tener al menos el tamao del archivo principal de la
base de datos model.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

MAXSIZE
Especifica el tamao mximo de crecimiento
del archivo. Se pueden utilizar los sufijos KB y
MB, el valor predeterminado es MB.
Especifique un nmero entero; no incluya
decimales.
Si no se especifica, el archivo aumenta hasta
que el disco est lleno.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

UNLIMITED
Especifica que el archivo aumenta de tamao
hasta que el disco est lleno.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Argumentos

FILEGROWTH
Especifica el incremento de crecimiento del archivo, este valor
no puede exceder el valor MAXSIZE. Emplee un nmero
entero.

Un valor 0 indica que no hay crecimiento. El valor se puede


especificar en MB, KB o %, el valor predeterminado es MB.
Cuando se especifica %, el tamao de incremento de
crecimiento es el porcentaje especificado del tamao del
archivo en el momento en que tiene lugar el incremento. De no
emplear FILEGROWTH, el valor predeterminado es 10% y el
valor mnimo es 64 KB. El tamao especificado se redondea al
mltiplo de 64 KB ms cercano.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

CREATE DATABASE

Use esta sentencia para crear una base de datos y


los archivos que almacenan sta. SQL Server
implementa CREATE DATABASE en dos pasos:

SQL Server utiliza una copia de model para inicializar la


base de datos y sus metadatos.

SQL Server rellena el resto de la base de datos con


pginas vacas, excepto las pginas que tengan datos
internos que registren cmo se emplea el espacio en la
base de datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Observaciones

Cualquier objeto definido por el usuario en


model se copiar a todas las bases de datos
recin creadas.
Cada base de datos nueva hereda los valores
opcionales de la base de datos model (a
menos que se especifique FOR ATTACH).

En un servidor se puede especificar un mximo


de 32,767 bases de datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

DISEO DE

SOFTWARE

Arquitectura ANSI/SPARC
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Enfoque de Base de Datos

La importancia de almacenar, manipular y recuperar la informacin en


forma eficiente ha llevado al desarrollo de una teora esencial para las
bases de datos. Esta teora ayuda al diseo de bases de datos y
procesamiento eficiente de consultas por parte de los usuarios.

Las arquitecturas de bases de datos han evolucionado mucho desde


sus comienzos, aunque la considerada estndar hoy en da es la
descrita por el comit ANSI/X3/SPARC (Standard Planning and
Requirements Committee of the American National Standards Institute
on Computers and Information Processing), que data de finales de los
aos setenta.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

ARQUITECTURA

Este comit propuso una arquitectura general para DBMSs


basada en tres niveles o esquemas: el nivel fsico, o de
mquina, el nivel externo, o de usuario, y el nivel conceptual.
As mismo describi las interacciones entre estos tres niveles y
todos los elementos que conforman cada uno de ellos.

EL uso de las BD es contrario al enfoque tradicional, en que


cada sistema maneja sus propios datos y archivos. Al usar BD,
todos los datos se almacenan en forma integrada, y estn
sujetos a un control centralizado. Las diversas aplicaciones
operan sobre este conjunto de datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Arquitectura ANSI
Objetivo
Hay tres caractersticas importantes inherentes a los sistemas de
bases de datos:

la separacin entre los programas de aplicacin y los datos

el manejo de mltiples vistas por parte de los usuarios y


el uso de un catlogo para almacenar el esquema de la base de datos.

En 1975, el comit ANSI-SPARC (American National Standard


Institute - Standards Planning and Requirements Committee)
propuso una arquitectura de tres niveles para los sistemas de bases
de datos, que resulta muy til a la hora de conseguir estas tres
caractersticas. Propiedad que asegura que los programas de
aplicacin sean independientes de los cambios realizados en datos
que no usan o en detalles de representacin fsica de los datos a
los que acceden

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Arquitectura ANSI
Estructura

Grupo de estudio ANSI/SPARC en 1977 propuesta de


arquitectura para los DBMS que plantea la definicin de
la base de datos a tres niveles de abstraccin:

Nivel

conceptual
Nivel interno
Nivel externo

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Niveles de abstraccin (ANSI/SPARC)


Vista usuario n

n esquemas
externos

Vista usuario 2

Nivel externo
confidencialidad
Nivel conceptual
integridad-coherencia
Nivel interno
gestin de acceso

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Vista usuario 1

Esquema lgico, resultado de


un proceso de modelamiento

Esquema fsico

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Arquitectura ANSI
Estructura

Nivel conceptual
En el nivel conceptual tiene un esquema lgico que describe la
estructura de toda la base de datos para una comunidad de
usuarios. El esquema conceptual oculta los detalles de las
estructuras fsicas de almacenamiento y se concentra en
describir entidades, tipos de datos, vnculos o relaciones,
operaciones de los usuarios y restricciones.

La descripcin del nivel conceptual no debe tener detalles dependientes


del almacenamiento*
Tiene asociado un lenguaje de alto nivel

* Sin embargo en algunos SGBD esto no se logra expresar de esta manera

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Arquitectura ANSI
Estructura

Nivel interno
En el nivel interno se describe la estructura fsica de la base
de datos mediante un esquema interno. Este esquema se
especifica mediante un modelo fsico y describe todos los
detalles para el almacenamiento de la base de datos, as como
los mtodos de acceso. Esquema interno: descripcin de la BD
en trminos de su representacin fsica.

Ms cercano a la mquina

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Arquitectura ANSI
Estructura

Nivel externo
En el nivel externo se describen varios esquemas externos o
vistas de usuario. Cada esquema externo describe la parte de
la base de datos que interesa a un grupo de usuarios
determinado y oculta a ese grupo el resto de la base de datos.
En este nivel se puede utilizar un modelo conceptual o un
modelo lgico para especificar los esquemas. Esquema
externo: descripcin de las vistas parciales de la BD que
poseen los distintos usuarios.

El ms cercano a los usuarios finales


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Nivel de Visin
Cada visin puede proporcionar diferentes
representaciones de los mismos datos
Visin Vendedor
Fechas con formato:
(dd-mm-yy)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Visin Contador
BD

Fechas con formato:


(yyyy-dd-mm)

Arquitectura ANSI

Hay que destacar que los tres esquemas


no son ms que descripciones de los
mismos datos pero con distintos niveles
de abstraccin.
Los nicos datos que existen realmente
estn a nivel fsico, almacenados en un
dispositivo como puede ser un disco

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia de los datos

Es uno de los objetivos de la arquitectura ANSI/SPARC


Permite modificar la definicin de un nivel sin afectar
(en lo posible) el nivel inmediatamente superior
Sin independencia de datos se requerira mucho
esfuerzo para cambiar las aplicaciones de tal forma que
se adaptasen a la nueva estructura de la base de datos.

Hay dos tipos: fsica y lgica

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia de los datos

Fsica: inmunidad que tienen los usuarios y las


aplicaciones ante los cambios en la forma de
almacenar fsicamente los datos.
Conceptual o lgica: inmunidad que poseen los
usuarios y las aplicaciones ante los cambios en
la estructura lgica de la base de datos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia Fsica

Se presenta entre el nivel conceptual y el nivel fsico


Un cambio en el esquema fsico (usar otras
estructuras de almacenamiento) no conduce a
cambios en el esquema conceptual
Inmunidad del esquema conceptual ante cambios del
esquema fsico

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Independencia Lgica

Se presenta entre el nivel de visin y el nivel


conceptual
Significa que un cambio en el nivel conceptual no
debe conllevar a un cambio en el nivel de visin
Es ms difcil de lograr. Por qu?

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Definicin

Un Sistema de Gestin de Bases de Datos


(SGBD) es un software que permite
manipular las bases de datos
Construir
Utilizar
Mantener
Reorganizar

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Objetivos de los SGBD

Independencia de los datos:

Las aplicaciones que se comuniquen con el SGBD deben verse


afectados lo menos posible por cambios efectuados en la
estructura de los datos que no utilizan

Esta aporta flexibilidad para la adaptacin de los SI a la evolucin de


la organizaciones

Integridad de los datos:

La informacin almacenada en la base de datos debe satisfacer


ciertas restricciones de consistencia

definidas explcitamente por los usuarios


el SGBD determina si las actualizaciones suponen o no la violacin de dichas
restricciones

Se debe asegurar la correcta ejecucin de los accesos


concurrentes

Ha de ofrecerse la posibilidad de recuperacin de la base de datos


frente a posibles deterioros

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Objetivos de los SGBD

Proteger a los datos frente a accesos desautorizados

Sencillez en la interfaz frente a los usuarios y


aplicaciones

proporcionando, entre otras funciones, adecuados mtodos de


acceso

Aumentar la disponibilidad y la trasparencia de la


informacin existente

todos los datos que se encuentran en la base se deben relacionar


en un catlogo o diccionario

que puede ser ampliamente difundido y accedido por medios


informticos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Objetivos de los SGBD

Mayor valor informativo:

La base de datos, como reflejo del mundo real recoge las


interrelaciones entre los datos

el valor informativo del conjunto es superior a la suma del valor informativo de los
elementos individuales que lo constituyen

acta el efecto de sinergia

En la base se incluye, integrada con los datos, la semntica de los


mismos

No todos los SGBD facilitan las mismas prestaciones a estos


respectos
pero la tendencia actual es conseguir que la descripcin de los
datos incluida dentro del sistema sea lo ms completa posible

y que el diccionario que la contiene, accedido por el SGBD, sea


capaz de almacenar y tratar el mximo de semntica.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Inconvenientes de los SGBD

Estos inconvenientes cobran su verdadera dimensin en el caso de


grandes bases de datos
nunca para pequeos sistemas instalados en ordenadores personales

Instalacin costosa:

La implantacin de un sistema de bases de datos puede llevar consigo un coste


elevado

tanto en equipo fsico

nuevas instalaciones o ampliaciones


como en el lgico

sistemas operativos, programas, compiladores, etc... necesarios para su uso

adems del propio coste de adquisicin y mantenimiento del SGBD

Necesidad de personal especializado.

Implantacin larga y difcil

Falta de rentabilidad a corto plazo

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Niveles de abstraccin en los SI

En los SI se puede observar la existencia de


dos estructuras distintas:

la lgica: transmite la vista que el usuario tiene de


los datos que usa

y la fsica: transmite la forma en que se encuentran


esos datos en el almacenamiento

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Capacidades de un Sistema de Gestin de Bases de Datos.


Manejar informacin persistente. La informacin
diferentes ejecuciones de un programa.

permanece entre

Soportar un modelo de datos. Abstraccin matemtica a travs de la


cual el usuario puede ver los datos. Ejemplo: El modelo Relacional.
Soportar un lenguaje de alto nivel El usuario especifica que informacin
necesita apoyado en el modelo de datos. Ejemplo: El S.Q.L.
Control de acceso. Limitar el acceso a los datos de usuarios no
autorizados. Ejemplo: Grant select on Empleados to User-1.
Integridad: Capacidad de chequear la validez de los datos que se
ingresen. Ejemplo: El salario es obligatorio en la tabla de empleados.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Transaccin (Tx)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Capacidades de un Sistema de Gestin de Bases de Datos.(cont.)


Cumplir con las propiedades ACID:
Atomicity : Manejar el concepto de transaccin (Tx). Es
decir, un programa se ejecuta completamente de otra
manera se eliminan los cambios parciales realizados.

Begin Transaction - Programa - End Transaction


Consistency: Despus de terminar una Transaccin la Base
de datos no viola ninguna de sus reglas: valores obligatorios,
claves nicas,etc.
Isolation : Los efectos de una Transaccin(Tx) no son visibles
a otros usuarios mientras no se confirmen.
Durability: Si el sistema falla no debe permitir que se pierdan
las operaciones realizadas por Tx ya confirmadas.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

. Arquitectura funcional de un S.G.B.D.


2. Otorgar permisos
sobre el esquema

Compilador
D.C.L

Tablas de
Autorizacin
(D. de D.)

Tablas de
acceso
concurrente

3. Consultas y
Programas de
Usuario normal

Procesador del
lenguaje
de Consulta y
optimizador
Manejador de
Transacciones

Manejador de
Almacenamiento
Base de Datos
fsica y
Diccionario de
Datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

1. Definicin
del esquema
de
la B. de D.

Compilador
D.D.L

Tablas de
descripcin
de la B.de D.
(D.de.D)

Esquema conceptual .vs.


Esquema lgico

El esquema conceptual ha de ser independiente


del SGBD a utilizar:

En el estado actual de la tcnica de las bases de


datos
no existe ningn modelo conceptual general y
accesible desde cualquier tipo de SGBD
que nos permita definir el esquema conceptual

Por este motivo es preferible distinguir dos


esquemas en lugar del esquema conceptual

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Esquema conceptual .vs.


Esquema lgico

El esquema conceptual:

El esquema lgico:

Visin lgica global del SI, independiente del SGBD que


se utilice, e incluso de que se utilice o no una BD
Visin lgica global de la BD del SI, expresada en
trminos del tipo de SGBD que se vaya a utilizar

Ambos son esquemas globales de tipo lgico

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

orma de acceso a un fichero


.vs.
Forma de acceso a una base de datos
PROGRAMA
PROGRAMADE
DE
APLICACION
APLICACION

SGBD
SGBD
Base
de
Datos

Subsistema
de gestin de datos
(mtodos de acceso)
S.O.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Fichero

Interaccin del SGBD con el SO

Cada aplicacin tiene:

un rea de trabajo con sus reas de entrada/salida y

un rea de estado destinada a recibir los mensajes y


la informacin de control

Paso 1: La aplicacin hace una llamada al SGBD


1

Aplicacin A
Estado

SGBD

rea de trabajo

Esquema externo aplicacin A


Esquema lgico
Esquema interno

SO
Datos
Almacenamiento intermedio
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

BD

Interaccin del SGBD con el SO

Paso 2: El SGBD obtiene el esquema externo de la


aplicacin A y examina la descripcin de los datos
solicitados
Paso 3: El SGBD obtiene el esquema lgico y realiza la
transformacin externo/lgica correspondiente

Paso 4: El SGBD examina el esquema interno y realiza la


transformacin lgico/fsica correspondiente
2 Esquema externo aplicacin A
Aplicacin A
SGBD
3
Estado
Esquema lgico
4
rea de trabajo

Esquema interno

SO
Datos
Almacenamiento intermedio
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

BD

Interaccin del SGBD con el SO

Paso 5: El SGBD emite rdenes al SO indicando que debe


leer y donde est almacenado
Paso 6: El SO interacta con el almacn fsico en el que se
encuentran los datos
Paso 7: Los datos se transfieren al almacenamiento
intermedio (buffers)
Aplicacin A

Esquema externo aplicacin A

SGBD

Estado

Esquema lgico

rea de trabajo

SO
Almacenamiento intermedio
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Esquema interno

6
7

Datos

BD

Interaccin del SGBD con el SO

Paso 8: El SGBD, comparando el esquema externo de la


aplicacin A y el esquema lgico, deduce los datos pedidos
por el programa
y lleva a cabo las transformaciones
necesarias
Paso 9: El SGBD transfiere los datos al rea de trabajo
Paso 10: El SGBD suministra informacin sobre el estado
de la peticin, indicando cualquier posible error
Aplicacin A

10

Estado
rea de trabajo

8,9

SGBD

Esquema externo aplicacin A


Esquema lgico
Esquema interno

SO
Datos

Almacenamiento intermedio
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

BD

DISEO DE

SOFTWARE

Modelo Logico - Cardinalidad


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Tipos de Cardinalidad

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Representando Relaciones Muchos a


Muchos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Resolviendo Relaciones
muchos -a muchos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ejemplo de Entidad
Asociativa

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ejemplo de Entidad
Asociativa

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Relaciones Muchos a Muchos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ejemplo para ilustrar


temporalidad

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Vista Esttica y Temporal de


la misma construccin

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Relaciones uno a uno

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

DISEO DE

SOFTWARE

Dependecia Funcional
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Dependencia funcional

Una dependencia funcional es una relacin


entre atributos de una misma relacin (tabla).
Sea R una relacin y sean X e Y
subconjuntos(atributos) arbitrarios de R.
Entonces decimos que Y es funcionalmente
dependiente de X, en smbolos:
X --> Y
(se lee X determina funcionalmente a Y, o
simplemente X flecha Y)

Cuando dos tuplas de R concuerdan en su


valor de X, tambin concuerdan en su valor Y.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

DEPENDENCIA FUNCIONAL

DEF: Sean a y b atributos de la relacin R.

Decimos que a determina funcionalmente a b en R, denotado


por a --> b

Si y slo si :

Para todos los pares de tuplas t1, t2 de la relacin R, tales que


t1[a] = t2[a] tambin se cumple que t1[b ] = t2[b]

Ejemplo: cdula --> nombre.


a

t1

t2

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Si t1 y t2 coinciden en el atributo a,
Entonces deben coincidir tambin
en el atributo b.

Dependencia funcional. Ejemplo

En una relacin Empleado si conocemos el


valor de FechaDeNacimiento podemos conocer
el valor de Edad.
{ fechaDeNacimiento } -> { edad }

Se puede leer de dos formas:

FechaDeNacimiento determina a Edad o


Edad es dependiente de FechaDeNacimiento.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Caractersticas de las Dependencias


Funcionales

Dependencia funcional parcial

Si "Y" es dependiente de "X" y adems, es


dependiente de un subconjunto propio de X.

Ejemplo:
{ dni, nombre } --> { direccin }

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Si con el dni ms el nombre se determina su


direccin. Entonces, slo con el dni tambin
se determina el nombre de una persona,
entonces

Caractersticas de las Dependencias


Funcionales

Dependencia funcional completa

Si "Y" es dependiente de "X" pero no es


dependiente de ningn subconjunto propio de
X.

Ejemplo:

{ dni } --> { nombre }

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Si el nombre de una persona estn incluidos


en el DNI, entonces con el DNI podemos
determinar su nombre.

Caractersticas de las Dependencias


Funcionales

Dependencia funcional Transitiva

Sean X, Y, Z subconjuntos de la misma relacin. Si


Y depende funcionalmente de X y Z de Y, se dice
que Z depende transitivamente de X.
X --> Y --> Z => X --> Z

Ejemplo:

{ fechaDeNacimiento } --> { edad }

{ edad } --> { licenciaConducir }

Entonces:

{ fechaDeNacimiento } -->{ licenciaConducir }


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

DISEO DE

SOFTWARE

Normalizacion
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Formas normales
El proceso de normalizacin gira en torno al
concepto de formas normales.
Se dice que una relacin se encuentra en una
determinada forma normal si satisface un
conjunto de condiciones establecidas.
Toda relacin normalizada est en 1FN, es
decir: normalizada y 1FN significa lo mismo.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Formas normales

Universo de relaciones (normalizadas y no normalizadas)

Relaciones 1FN (relaciones normalizadas)


Relaciones 2FN

Relaciones 3FN
Relaciones Boyce-Codd (BCNF)

Relaciones 4NF
Relaciones 5FN

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera, Segunda y Tercera Forma Normal

Primera Forma Normal (1NF)

Una relacin est en primera forma normal si y


solo si todos los dominios subyacentes
contienen solo valores escalares.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera Forma Normal : 1FN

Dominio Atmico. Los elementos del dominio son indivisibles.


Primera Forma normal : 1FN
Una relacin est en primera forma normal si y slo si todos los
dominios de los atributos son atmicos.

Ejemplos:
Venta (nmero-fac, cliente, producto[i], unidades[i] )

No est en primera forma normal.

Empleado (cdigo, nombre, telfono)


cdigo = 016-242224

donde

016 = departamento

242224 = cdigo empleado

No est en primera forma normal.


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Ejemplo para aplicar FN

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera, Segunda y Tercera Forma Normal

Segunda Forma Normal (2NF)

Una relacin est en segunda forma normal


(2NF) si y slo si est en 1NF y todos los
atributos no clave dependen por completo de
la clave primaria.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera, Segunda y Tercera Forma Normal

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera, Segunda y Tercera Forma Normal

Tercera Forma Normal (3NF)

Una relacin est en tercera forma normal


(3NF) si y slo si est en 2NF y todos los
atributos no clave dependen de manera no
transitiva de la clave primaria.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera, Segunda y Tercera Forma Normal

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Primera, Segunda y Tercera Forma Normal

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

DISEO DE

SOFTWARE

SQL
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Mg. Nehil Muoz C.

Qu es SQL?

Es un lenguaje de consulta y programacin de bases de datos


utilizado para la organizacin, acceso, consulta y gestin de
bases de datos relacionales.

Aplicacin
del Cliente

Validacin de
Permisos

Solicitud
SQL

Cliente

APIs de la BD
(OLEDB, ODBC,
Microsoft Jet, etc.)
Librera de
Autentificacin
del Cliente

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Datos

Server

Database
Management
System
(SGBD)

Transacciones-SQL

Las transacciones son comandos universales SQL que permiten realizar


peticin a un servidor de BD por medio de otras aplicaciones.

Existen 3 tipos de Transacciones:

Data Definition Lenguage (DDL)

Data Control Lenguage (DCL)

El lenguaje de definicin de datos es utilizado para definir la estructura de la BD

Son utilizadas para establecer los permisos sobre los elementos de una BD

Data Manipulation Lenguage (DML)

Son utilizadas para trabajar con los datos de las Bases de Datos como consultar,
insertar, actualizar o la eliminacin de datos.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Elementos de Sintaxis en SQL

Al realizar transacciones o instrucciones SQL se llegan a utilizar


ciertos elementos que forman parte del uso del SQL como lo son:

Los Nombres y Alias

Batches

Comentarios

Tipos de Datos

Variables

Operadores

Funciones

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Nombres y Alias

Cuando se escriben declaraciones de SQL, se utilizan nombres para


referirse a bases de datos, tablas, columnas o sentencias reservadas de
SQL. Pero tambin es posible crear alias los cuales funcionan como
sinnimos para llamar a las tabla o campos.

Pueden contener caracteres alfanumricos, guin bajo y el $.

No puede estar formado solamente de dgitos.

Se deben incluir entre caracteres de comillas o apostrofes.

No incluir signos especiales como diagonales, puntos y comas.

El nombre no debe corresponder a una palabra reservada de SQL

Cuando se utilice el nombre de una tabla o campo compuesto por espacios


en blanco se deber colocar el nombre entre [ ] o entre .

Ejemplo:
SELECT Nombre,[Fecha de Nacimiento]
FROM Empleados
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Batches

Un Batche esta formado por un conjunto de


sentencias o transacciones SQL.
GO
Ejemplo:
Mediante
la palabra GO, SQL marca el final de un
Use Northwind
SELECT
* FROM
Productname
batche
y es
enviado
a procesar al Servidor de SQL.
GO

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Comentarios

Los comentarios son cadenas de texto que no son tomados en


cuenta durante la ejecucin de sentencias.
Existen 2 formas de colocar comentarios en SQL:

Comentarios por Lnea

Para colocar un comentario en una lnea, se deben colocar 2 (--) guiones


antes del comentario, ya que SQL ignora todo el texto que se encuentre a
la derecha de los guiones.
Ejemplo:
Use Ventas - - utiliza la BD Ventas
SELECT * - - Selecciona todos los registros
FROM Pedidos - - de la tabla pedidos
Go

Comentarios de Bloque

Para generar un bloque de varias lneas de comentarios se utiliza los


Ejemplo:
caracteres (/*) para
marcar el inicio del comentario y los caracteres (*/)
/* Este es un bloque
para finalizar el comentario de varias lneas

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

que termina precisamente aqu */

Variables
Dentro de SQL se pueden definir variables para almacenar valores
temporales.
Todas las variables deben iniciar con el smbolo @

Declaracin de variables

Asignar valores en las


variables

Sintaxis:
DECLARE @variable Tipo de Dato
Ejemplo:
DECLARE @nombre varchar(15)

Sintaxis:
SET @variable = valor
Ejemplo:
SET @nombre = Juan Prez

Sintaxis:
SELECT @variable
Ejemplo:
SELECT @nombre

Devolver el valor de
las variables

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Operadores

Tipos de Operadores

Aritmticos
+ - * / ^

Comparacin
>

<

<>

>=

Concatenacin
+

Lgicos
And

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Or

Not

<=

Funciones

COUNT

Nmero de registros seleccionados

POSITION (Caracter IN Cadena)

SUM

Suma de un campo

SUM (Campo)

AVG

Promedio de un campo

AVG (Campo)

MAX

Mximo de un campo

MAX (Campo)

MIN

Mnimo de un campo

MIN (Campo)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

SQL: DDL

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Transacciones DDL

Son instrucciones que controlan la estructura de una BD con las


cuales se pueden realizar las siguientes acciones:

Crear Tablas

Eliminar Tablas

Modificar la estructura de la tabla

Definir Vistas (Tablas Virtuales)

Establecer parmetros de seguridad a la BD

Creacin de ndices para la aceleracin el acceso a los datos.

Control del almacenamiento de los datos

Las transacciones DDL que se utilizan son:

CREATE Nombre del Objeto

ALTER Nombre del Objeto

DROP Nombre del Objeto

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

SQL:DDL
Se pueden crear tablas con la instruccin
CREATE TABLE nombre_tabla

( atributos: cada uno con su tipo de datos y


restricciones
);
Se pueden crear ndices as:
CREATE INDEX nombreindice ON tabla(columna(s));
Las vistas no son ms que consultas con nombres
Ejemplo:
CREATE VIEW nombre_vista AS consulta;
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Crear una Base de Datos (CREATE)

Comando T-SQL:

CREATE DATABASE

Sintaxis:

CREATE DATABASE [Nombre de BD]

Ejemplo:
create database cursosql
on
(name = MiDB,
filename = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL$SQLCEDEC1\Data\cursosql.mdf',
size=8MB, Maxsize=9MB,filegrowth=100Kb)
LOG ON
(name = cursosql_reg,
filename = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL$SQLCEDEC1\Data\cursosql.ndf',
size=1000MB, Maxsize=1500MB,filegrowth=100Mb)

use cursosql
go
Universidad
Nacional
Mayorde
de San
Marcos
sp_helpdb
[base
datos]
E.A.P. de Ingeniera de Software

Permite mostrar la informacin de los archivos


de la base de datos y muestra el espacio
asignado.

Utilizar una BD

Para realizar una accin dentro de una Base de Datos,


primero hay que decirle a MySQL que queremos trabajar
con esa Base de Datos, para esto se utiliza el siguiente
comando
Sentencia SQL:

USE

Sintaxis:

USE Nombre de la BD

Ejemplo:
USE Animales

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Creacin de una Tabla

Comando T-SQL:

CREATE TABLE

Sintaxis:

CREATE TABLE Nombre_Tabla (


Nombre_Campo1 Tipo_Dato[(Tamao)] [NULL | NOT NULL] [DEFAULT Valor],
Nombre_Campo2 Tipo_Dato[(Tamao)] [NULL | NOT NULL] [DEFAULT Valor], etc )

* Solo es necesario definir el tamao cuando se utilizan los Tipos de


Datos Char y Varchar.

Ejemplo 1:

CREATE TABLE MiTabla (


Matricula INT,
Nombre VARCHAR(15),
Edad INT )

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Creacin de una Tabla

Valores Ausentes y Valores Predeterminados

Al momento de definir cada una de las columnas es posible determinar si


el campo va a permitir valores nulos o no.

Es posible definir para cada columna en caso de ser necesario, una valor
que funcione como predeterminado al momento de ingresar registros a la
tabla.

CREATE TABLE oficinas


(oficina integer NOT NULL,
ciudad varchar(15) NOT NULL,
region varchar(15) NOT NULL DEFAULT 'Este',
jef integer DEFAULT 106,
objetivo money DEFAULT NULL,
ventas money NOT NULL)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Restricciones de Integridad
Aseguran que los cambios realizados a una BD no provoquen
inconsistencia en la informacin.

Restricciones de dominio: Conjunto de valores

de

operaciones permitidas sobre ellos.


Dominios base en SQL:

CHAR(p): Cadena de caracteres de longitud fija p


(mxima longitud p)

VARCHAR(p): Cadena de caracteres de longitud variable.


Mxima longitud p.

NUMBER(p,s): Valor numrico de precisin p y escala s.

DATE: Fechas vlidas.

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Tipos de Datos

Clasificacin

Nmeros

Cadenas de Texto

Fechas y Horas

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Tipos de Datos

Descripcin

SMALLINT

Nmeros enteros pequeos

INTEGER

Nmeros enteros

BIT (Longitud)

Cadena de Bits de longitud fija

REAL

Nmeros con coma flotante de baja Precisin

DOUBLE PRECICIN

Nmeros con coma flotante de doble Precisin

FLOAT (Precisin)

Nmeros en coma flotante

DECIMAL

Nmeros decimales y $

CHAR (Longitud)

Cadena de longitud fija

CHARACTER

VARCHAR (Longitud)

Cadenas de longitud variable

DATE

Fechas

TIME (Precisin)

Horas

INTERVAL

Intervalo de Tiempo

DATETIME

Fecha y Hora

Tipos de datos. CHAR

vs VARCHAR

Nom CHAR (10)

Nom VARCHAR (10)

Nom CHAR (10) => Eva

Nom VARCHAR (10) => Eva

Nota:
El limite, para CHAR Y VARCHAR es de 8 000 caracteres
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Tipos de datos. CADENA DE CARACTERES

TEXT. Cadenas de caracteres de longitud ilimitada.


A
diferencia de los tipos
CHAR y VARCHAR, este tipo de dato
no se puede descomponer en
caracteres individuales para su
anlisis.
Sintaxis.
Nombre_campo TEXT
Ejemplo.
Descripcion TEXT => Mesa color caoba oscura, para 8 personas
Direccion TEXT => San Rafael Atlixco, numero 186 Col Vicentina C.P.
09340 Mxico D.F.
Nota.
El tamao limite de este tipo de dato es de 2,147,483,647 caracteres.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Tipo de dato decimal


Permite definir cuantas cifra decimales aparecen despus del punto en datos fraccionales.
Sintaxis:
Nombre_Campo DECIMAL ( N, d )

donde:
N es el total de dgitos del dato.
d es el numero de cifras decimales que aparecern en el campo
Ejemplo
896.25

=>

DECIMAL ( 5,2 )

2003.2569 => DECIMAL ( 8,4 )


Nota:
Si el numero de cifra totales insertadas es mayor que el numero de cifras totales
declaradas, el manejador trunca el dato en cuestion.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Tablas con Columnas Incrementales

Las tablas pueden contener una sola columna que tenga como valor un valor
inicial y que en cada registro que se agregue se pueda ver incrementado
dependiendo del valor que se defini en la sintaxis de la creacin de la tabla

CREATE TABLE nombre_tabla


(nombre_columna tipo_dato
[IDENTITY [(valor_inicial,incremento)]]NOT NULL)

CREATE TABLE clases


(Id_Estudiante integer IDENTITY(100, 5) NOT NULL,
Nombre varchar(15))

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Restricciones de Integridad
Un atributo puede o no admitir nulos. En
SQL se especifica mediante la clusula NOT
NULL.

Nulos:

Integridad Referencial:

Garantiza la existencia de

las Claves Forneas.


Para
ello
se
utilizan
las
REFERENCES y FOREIGN KEY

Garantiza la unicidad y
obligatoriedad del o los atributos definidos como
clave primaria. Para ello se utiliza la clusula
PRIMARY KEY.
Clave

Primaria:

clusulas

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Restricciones de Integridad

Clave Alternativa: Garantiza la unicidad de los atributos


declarados como tal. Se utiliza la clusula UNIQUE.

Si se desea hacer obligatoria debe especificarse adicionalmente


NOT NULL.

Las reglas CHECK para atributos:


Involucra condiciones de chequeo para uno o varios atributos.

Sintaxis : CHECK ( condicion)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Sea el modelo:
DEPARTAMENTO
# cdigo
* nombre
* ciudad
el lugar de trabajo de
adscrito a

el subordinado
de

EMPLEADO
#cdula
* nombre
* salario
comisin
* cargo

el jefe de
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

CREATE TABLE departamento


( codigo

NUMBER(6) PRIMARY KEY,

nombre

VARCHAR(6) NOT NULL UNIQUE,

ciudad VARCHAR(12) CHECK (ciudad IN


('Medelln', 'Bogot', 'Cali')) NOT NULL
);

El atributo ciudad slo admitir 1 de estas 3


ciudades. Es necesario adems colocarle la
restriccin de no nulidad.

CREATE TABLE empleado

( cdula NUMBER(10)

PRIMARY KEY,

nombre

VARCHAR(30)

NOT NULL,

jefe

NUMBER(10)

REFERENCES empleado,

salario

NUMBER(10,2)

NOT NULL,

comisin

NUMBER(2) ,

cargo

VARCHAR(20)

depto

NUMBER(6)

);
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

NOT NULL,

NOT NULL REFERENCES departamento

Clave fornea
sobre la
misma tabla

Clave fornea

Restricciones de Integridad
Ejemplos con la clusula CHECK:
CREATE TABLE empleado
( cdula

Puede especificarse
el atributo hacia el
cual se refiere la
clave fornea

NUMBER(10)

PRIMARY KEY,

nombre

VARCHAR(30)

NOT NULL,

jefe

NUMBER(10) REFERENCES empleado(cdula),

salario

NUMBER(10,2)

comision

NUMBER(3) CHECK (comision between 0 and 100),

cargo

VARCHAR(20)

depto

NUMBER(6) NOT NULL REFERENCES departamento

);
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

NOT NULL CHECK (salario > 0 ) ,


NOT NULL,

Restricciones de Integridad
Especificacin de una clave primaria compuesta:
CREATE TABLE envio (

snro

NUMBER(6),

pnro

NUMBER(6),

cantidad NUMBER(6) NOT NULL,


PRIMARY KEY(snro,pnro)
);
Nota: Es incorrecto colocar PRIMARY KEY al
frente de snro y de pnro.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Restricciones de Integridad
Clave fornea hacia una clave primaria compuesta:
CREATE TABLE revision(
codrevision NUMBER(5) PRIMARY KEY,

cf_snro NUMBER(6) NOT NULL,


cf_pnro NUMBER(6) NOT NULL,
revisor VARCHAR(20)NOT NULL,
FOREIGN KEY(cf_snro,cf_pnro) REFERENCES envio
);

Cuando la clave primaria a la que se referencia


es compuesta se debe utilizar esta sintaxis.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Restricciones de Integridad

Se puede modificar la estructura de una tabla


con la instruccin ALTER TABLE
Ej: ALTER TABLE mitabla
ADD nuevocampo NUMBER(3);

Para destruir una tabla (estructura y datos)


DROP TABLE nombre_tabla;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Borrando Columnas

Para borrar una Columna se realiza a travs del la sentencia ALTER TABLE

Sintaxis:
ALTER TABLE Nom_Tabla DROP COLUMN Nom_Columna
Ejemplo.

ALTER TABLE Tx ADD C10 INT


ALTER TABLE Tx DROP C10

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Cambiar de tipo de dato a un campo

Para poder cambiar de tipo de dato a un campo se utiliza la sentencia ALTER TABLE

Sintaxis.
ALTER TABLE Nom_Tabla CHANGE Nom_Columna Nom_Columna Nuevo_tipo

Ejemplo.
-- inicialmente el campo es varchar de 200

ALTER TABLE TX CHANGE C3 C3 CHAR (200);

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Cambiar nombre un campo

Para poder cambiar el nombre de un campo se utiliza la sentencia ALTER TABLE

Sintaxis.
ALTER TABLE Nom_Tabla CHANGE Nom_Anterior Nuevo_Nombre mismo_tipo

Ejemplo.
-- inicialmente el campo es CHAR(200)

ALTER TABLE TX CHANGE B1 C3 CHAR (200);

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Agregando PRIMARY KEY

Sintaxis.
ALTER TABLE Tabla ADD CONSTRAINT PRIMARY KEY (C1)

Ejemplo.
- - Agregamos restriccin PRIMARY KEY en columna C1
ALTER TABLE TX ADD CONSTRAINT PRIMARY KEY (C1)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Borrando PRIMARY KEY

Sintaxis.
ALTER TABLE Tabla DROP PRIMARY KEY (

Ejemplo.
- - Borra la restriccin PRIMARY KEY de la tabla TX.

ALTER TABLE TX DROP PRIMARY KEY

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Renombrando tablas

Para cambia el nombre de un tabla se utiliza la sentencia ALTER TABLE Con la


siguiente sintaxis.
Sintaxis.
ALTER TABLE t1 RENAME TO t2;
Otra forma de renombrar a las tabla es mediante la variante de alter
tabla
RENAME TABLE t1 TO t2;

SQL SERVER
exec SP_RENAME nombre', nuevonombre'

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ingresando valores
EJEMPLO:
CREATE TABLE t (

a number(3) PRIMARY KEY,


b date,

c varchar(3));

INSERT INTO t VALUES(10, CURRENT_DATE, 'hi');

INSERT INTO t(c,a)


VALUES(bye,20);
Se pueden
especificar los campos a insertar
Qu pasa con el atributo b en este caso?

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Eliminando valores

Para eliminar filas de una tabla:


DELETE

FROM tabla
[WHERE condicion];

Ej:

DELETE
FROM envio

WHERE snro=34;
La condicin puede incluir subconsultas
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Actualizando valores

Para actualizar filas de una tabla:


UPDATE tabla

SET campo = nuevo_valor


[WHERE condicion];
- Se pueden actualizar varios campos al mismo tiempo
separndolos por comas
- La condicin y nuevo_valor pueden incluir
subconsultas
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Actualizando valores
Ejemplo:

UPDATE envio

SET cantidad = cantidad - 5


WHERE snro = 10 AND pnro = 20;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Implementacin de Supertipos/Subtipos

PERSONA
#cdula
*nombre
ESTUDIANTE
*promedio
PROFESOR
*registro
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

SUPERTIPOS/SUBTIPOS

Repasar la clase de Conversin


E-R a Relacional

Veamos la alternativa 2 para implementar


supertipos y subtipos

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

SUPERTIPOS/SUBTIPOS

Se crea la tabla para el supertipo:

CREATE TABLE persona(

cedula

NUMBER(8) PRIMARY KEY,

nombre VARCHAR(20) NOT NULL );

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

SUPERTIPOS/SUBTIPOS

Se crean tablas para cada uno de los subtipos:


CREATE TABLE estudiante(

cedest NUMBER(8) PRIMARY KEY REFERENCES persona,


promedio NUMBER(3,2) );
3 dgitos: 1 entero, 2 decimales

CREATE TABLE profesor(

cedprof NUMBER(8) PRIMARY KEY REFERENCES persona,


registro NUMBER(5) );

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

En esta alternativa se debe validar por


programacin que la cdula de una persona no
exista en ambas tablas para garantizar la
exclusividad

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Lenguaje de manipulacin de datos

DML

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Consultas Simples SELECT

La instruccin Select permite recuperar informacin de una base de datos y los


devuelve en forma de resultados de la consulta.
En la instruccin Select se especifican los elementos de datos que recupera la
consulta.
Los elementos se especifican a travs de una lista de elementos separados por
comas.
Cada elemento de seleccin en la lista genera una nica columna de resultados de la
consulta, de izquierda a derecha.

Un elemento de seleccin puede ser:

Un nombre de columna

Identifica una columna de la tabla o tablas que aparecen en la clusula FROM

SQL toma el valor de esa columna de cada fila de la tabla y lo muestra como resultado de la consulta

Una constante

Especifica que ese mismo valor de constante aparecer en cada fila de los resultados de la consulta

Una expresin

Indica a SQL que debe calcular el valor a poner e los resultados, segn se especifica en la expresin

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Instruccin SELECT

SELECT

FROM

Genera una columna donde agrupa los


registros que tengan la misma informacin,
generando un resumen.

HAVING

Se especifica una condicin para los registros


que debe recuperar SQL.

GROUP BY

Se indica el nombre de la tabla que contiene


la informacin a recuperar.

WHERE

Lista las columnas que se van a recuperar de


la BD.

Indica a SQL que incluya en el resultado slo


determinados grupos producidos por la
clusula GROUP BY.

ORDER BY

Ordena los resultados tomando como base


ms columnas.

Universidad Nacional Mayor


de Sande
Marcos
los datos
una o
E.A.P. de Ingeniera de Software

Extraccin de datos: SELECT


En su forma bsica tiene 3 elementos principales:
select, from, where

SELECT A1, A2, A3, ... , An


FROM R1, R2, R3, ... , Rm
WHERE condicin;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Lista de atributos
Lista de relaciones (tablas)

La condicin se hace sobre los


atributos de las tablas indicadas
en la clusula FROM

Extraccin de datos: SELECT

SELECT:

Permite listar los atributos que se desean en el resultado de la


consulta

FROM:

corresponde a la operacin de Proyeccin

Especifica los nombres de la(s) tabla(s) de donde los datos sern


seleccionados
Cuando son varias tablas las que aparecen en el FROM el sistema
ejecuta una operacin de Producto Cartesiano o de join

WHERE:

corresponde a la operacin de Seleccin

La condicin se hace sobre los atributos de las tablas del FROM

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Equivalencia SQL y Algebra


relacional
SELECT A1, A2, A3, ... , An
FROM R1, R2, R3, ... , Rm
WHERE condicin;

P A1, A2, A3, ..., An (s

(R1 x R2 x R3x ... x Rm))

condicin

La lista de atributos puede ser sustituida por


un asterisco (*) para denotar TODOS los
atributos
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

EJEMPLO

Supongamos la
relacin
EMPLEADO as:

Cdigo
1
2
3
8
10
12

Sea la consulta:
SELECT nombre, edad
FROM empleado
WHERE edad >= 28
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Nombre
Edad Depto
Jorge Campos
33
1
Enrique Muoz
25
1
Esteban Paz
21
1
Jorge Arias
30
2
Juan Martnez
19
2
Anselmo Rodas
28
6

EJEMPLO

La respuesta es tambin una


relacin, as:

Nombre
Edad
Jorge Campos
33
Jorge Arias
30
Anselmo Rodas
28

Los operadores de comparacin permitidos


son:

= (igual),

!= <> (diferente),
> (mayor que), < (menor que),
>= (mayor o igual que), <= (menor o igual que)
NOTA: tambin se pueden comparar cadenas de caracteres
con operadores como >= y <=
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

EJEMPLO

Se permiten consultas tan complejas como sea necesario,


usando conectores AND, OR, NOT
Ej:

SELECT *

FROM empleado
WHERE edad < 28 AND depto = 1

Se puede usar un operador especial denominado BETWEEN,


para especificar un rango de valores sobre el cual puede
variar el dominio de un atributo, ejemplo:
Ej:

SELECT *
FROM empleado
WHERE edad BETWEEN 18 AND 30

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

EJEMPLO

Se puede expresar una lista de valores de dominio especficos con


el operador IN:
SELECT *
FROM empleado
WHERE nombre IN (Jorge Campos, Esteban Paz)

El WHERE anterior equivale a:


nombre=Jorge CamposOR nombre=Esteban Paz

IN y BETWEEN se pueden negar con NOT

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

BETWEEN puede lograrse por medio de <= y >=

Ordenacin de
Registros (ORDER BY)

Una consulta generada por la clusula SELECT puede presentar los


resultados de manera organizada tanto numricamente y
alfabticamente.

Clusula T-SQL:

Sintaxis:

ORDER BY

SELECT [Campos] FROM [Tabla] ORDER BY [Campos] [Tipo de Ordenacin]

Los tipos de ordenacin puedes ser:

ASC -

Ordenacin Ascendente

SELECT *DESC
FROM
empleados
ORDER BY idempleado desc
- Ordenacin
Descendente

SELECT * FROM empleados ORDER BY cargo asc


Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Consultas con Columnas Calculadas

Los resultados de una consulta vienen directamente de la bas de datos, una


consulta de SQL puede incluir columnas calculadas, cuyos valores se
obtiene a partir de los valores almacenados.
Para solicitar una columna calculada se hace a travs de una expresin
Las expresiones de SQL pueden incluir la suma, resta, multiplicacin y la
divisin.

Las columnas referenciadas en una expresin aritmtica deben tener un tipo


numrico.

select idpedido, idproducto, (preciounidad*cantidad)


as 'Total de Venta' from [detalles de pedidos]

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Operador LIKE

En las condiciones se puede usar para realizar comparaciones


especiales de cadenas de caracteres aparte de la igualdad(=) y el
diferente(<>) as:

El carcter % remplaza cualquier subcadena

El carcter _ remplaza un carcter

Ejemplos:

atributo LIKE Ing% : todo lo que comience por Ing

atributo LIKE %eniera% : todo lo que contenga eniera

atributo LIKE _ _ _% : todo lo que tenga al menos 3


letras

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

DISTINCT Vs ALL

Se pueden eliminar tuplas duplicadas en una


consulta colocando explcitamente DISTINCT
despus de SELECT.

Nota: SQL NO es cerrado relacionalmente ya que puede producir


tuplas repetidas

Si explcitamente se quieren ver los duplicados,


se coloca ALL despus de SELECT.

Nota: ALL es la opcin por defecto, rara vez se usa !!!

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Condiciones de Bsqueda
(Valores Nulos)

Para una fila dada, el resultado de una condicin de


bsqueda puede ser TRUE o FALSE, o puede ser NULL
por que una de las columnas usadas en la evaluacin de
la condicin de bsqueda contenga un valor NULL

SELECT nombrecompaa,cargocontacto,direccin, regin, fax


FROM clientes
WHERE regin IS NULL
SELECT idcliente,fechapedido,regindestinatario
FROM pedidos
WHERE idcliente='TOMSP' AND regindestinatario IS NULL

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Consultas de Varias Tablas

A travs de la clusula INNER JOIN ser posible realizar consultas


entre dos o ms tablas.

Para realizar consultas entre varias tablas, es recomendable asignar


Alias haciendo uso de la clusula AS para nombrar las tablas.

Select idpedido, idproducto,producto,cantidad


FROM pedidos INNER JOIN productos
ON pedidos.idproducto=productos.idproducto
GO
Select idpedido, idproducto,producto,cantidad
FROM pedidos AS pe INNER JOIN productos AS pr
ON pe.idproducto=pr.idproducto
GO

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Renombramiento con AS

Se puede emplear la clusula AS para generar alias en


las diferentes tablas.
SELECT *

FROM empleado AS e, departamento AS d


WHERE e.depto = d.depto
Nota: El SQL estndar exige siempre el uso de AS,
aunque algunos SGBD como Oracle y Access lo
suprimen
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

EJERCICIO

socio (codsocio, nombre, direccion, telefono)

pelicula (codpeli, titulo, genero)

copia (codcopia, codpeli)

prestamo (codsocio, codcopia, fecha, pres_dev)

lista_espera (codsocio, codpeli, fecha)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Anidamiento de consultas

Con IN, y con otros operadores como EXISTS, se


pueden anidar consultas
Ej: Presentar el ttulo de las pelculas que nunca
se han prestado:
SELECT DISTINCT pel.titulo
FROM pelicula AS pel

WHERE pel.titulo NOT IN (


SELECT pel.titulo

FROM pelicula AS pel, prestamo AS pr, copia AS co


WHERE pr.codcopia=co.codcopia AND
co.codpeli=pel.codpeli

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Otra manera

Otra manera de realizar la anterior consulta, que


evita la realizacin de uno de los joins es:
SELECT DISTINCT pel.titulo

FROM pelicula AS pel


WHERE pel.codpeli NOT IN (
SELECT co.codpeli
FROM prestamo AS pr, copia AS co
WHERE pr.codcopia=co.codcopia
)
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Funciones de agregacin

Devuelven informacin de una columna

MIN: valor ms pequeo de una columna

MAX: valor ms grande de una columna

SUM: suma de los valores numricos de una columna

AVG: media de una columna

COUNT: nmero total de valores de una columna

COUNT(*): nmero de filas de una tabla

Ejemplos:

select avg(salario) from empleado;

select avg(salario) from empleado where


categoria=Programador

select count(*) from empleado;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Clusula GROUP BY

La clusula GROUP BY rene todas las filas que contienen datos en


las columnas especificadas y permite ejecutar funciones de
agregacin en una o ms columnas

Formato ejemplo:

select column1,SUM(column2) from list-of-tables group by column-list

Ejemplo:

SELECT max(salario), dept FROM empleados GROUP BY dept;

Lista de los salarios ms altos de cada departamento

La salida sern los salarios y los departamentos correspondientes

SELECT cantidad, max(precio) FROM pedidos GROUP BY cantidad;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Agrupacin de Registros (Group By)

Una consulta que contiene GROUP BY se denomina consulta de agrupacin


por que agrupa los datos de las tablas fuente en una nica fila de resumen
por cada registro.

SELECT idproveedor,sum(unidadesenexistencia)
FROM productos
group by idproveedor

SELECT idproveedor,unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia)
SELECT idproveedor,unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia) by idproveedor
COMPUTE sum(unidadesenexistencia)
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Q ueremos saber la cantidad de libros de cada editorial, podemos tipear la siguiente sentencia:
select count(*) from libros
where editorial='Planeta';

y repetirla con cada valor de "editorial":

select count(*) from libros where editorial='Emece';


select count(*) from libros where editorial='Paidos';

... Pero hay otra manera, utilizando la clusula "group by":

select editorial, count(*) from libros


group by editorial;

La instruccin anterior solicita que muestre el nombre de la editorial


y cuente la cantidad agrupando los registros por el campo "editorial".
Como resultado aparecen los nombres de las editoriales y la cantidad
Universidad Nacional Mayor de San Marcos
de registros para cada valor del campo.
E.A.P. de Ingeniera de Software

Entonces, para saber la cantidad de libros que tenemos de


cada editorial, utilizamos la funcin "count()", agregamos
"group by" (que agrupa registros) y el campo por el que
deseamos que se realice el agrupamiento, tambin
colocamos el nombre del campo a recuperar; la sintaxis
bsica es la siguiente:

select CAMPO, FUNCIONDEAGREGADO from


NOMBRETABLA group by CAMPO;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Para conocer el total en dinero de los libros agrupados por editorial:

select editorial, sum(precio) from libros group by editorial;

Para saber el mximo y mnimo valor de los libros agrupados por


editorial:
select editorial, max(precio) as mayor, min(precio) as menor from libros
group by editorial;
Para calcular el promedio del valor de los libros agrupados por editorial:

select editorial, avg(precio) from libros group by editorial;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

HAVING
s como la clusula "where" permite seleccionar (o rechazar) registros
individuales; la clusula "having" permite seleccionar (o rechazar) un grupo de
registros.

Si queremos saber la cantidad de libros agrupados por editorial usamos la


siguiente instruccin ya aprendida:
select editorial, count(*) from libros group by editorial;

Si queremos saber la cantidad de libros agrupados por editorial pero


considerando slo algunos grupos, por ejemplo, los que devuelvan un valor
mayor a 2, usamos la siguiente instruccin:

select editorial, count(*) from libros group by editorial having


count(*)>2;

Se utiliza "having", seguido de la condicin de bsqueda, para


seleccionar ciertas filas retornadas por la clusula "group by"

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Clusula HAVING

Permite especificar condiciones para las filas de


cada grupo. Va despus de GROUP BY
Formato:

SELECT column1, SUM(column2) FROM "list-oftables GROUP BY "column-list" HAVING "condition";

Ejemplo:

SELECT dept, avg(salario) FROM empleados GROUP BY


dept HAVING avg(salario) > 20000;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Uso de la Clusula HAVING en GROUP BY

La clusula HAVING permite establecer una condicin en los registros


agrupados de una consulta, para que SQL muestre slo los registros que
hayan cumplido con la condicin.
HAVING debe utilizarse en combinacin con la clusula GROUP BY.
SELECT idproducto,
idorden,cantidad
FROM pedidos
idproducto

Idorden

cantidad

10

10

25

15

30

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

SELECT idproducto,
sum(cantidad) as Total
FROM pedidos
GROUP BY idproducto
HAVING sum(cantidad)>=30
idproducto

Total

35

45

Uso de la Clusula HAVING en GROUP BY

Ejercicios:

SELECT idproveedor,sum(unidadesenexistencia)
FROM productos
group by idproveedor
having sum(unidadesenexistencia)>200

SELECT idproveedor,sum(unidadesenexistencia)
FROM productos
group by idproveedor
having idproveedor<=5

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Uso del GROUP BY


con la clusula COMPUTE

La clusula COMPUTE permite colocar al final de la consulta una fila con un resultado de alguna
funcin matemtica aplicada.
Puede utilizarse tambin la clusula COMPUTE BY para crear una especie de subtotales con su
respectivo total general.

SELECT idproveedor,
unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia)

SELECT idproveedor,
unidadesenexistencia
FROM productos
ORDER BY idproveedor
COMPUTE sum(unidadesenexistencia)
by idproveedor
COMPUTE sum(unidadesenexistencia)

IdProveedor

Unidadesenexistencia

39

IdProveedor

Unidadesenexistencia

17

39

53

17

Sum

56

76

53

Sum

194

76

Sum

138

Sum

194

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Funciones de agregacin:

SUM(atributo) : Sumatoria del atributo.


MAX(atributo) : Valor mximo del atributo.
MIN(atributo) : Valor mnimo del atributo.
AVG(atributo) : Valor promedio del atributo.
COUNT(atributo | *) : Conteo de tuplas.

Se puede usar GROUP BY con estas funciones para


consolidar por grupos comunes (operador del lgebra)
Se puede usar HAVING para establecer condiciones para los
grupos (HAVING es lo que el WHERE es para las tuplas)

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software

Ejemplo
Calcular el nmero de veces que se ha prestado la
pelcula ms prestada.
SELECT MAX(cuenta) AS numero_veces
FROM
( SELECT DISTINCT COUNT(*) AS cuenta
FROM pelicula AS pe, prestamo AS pr, copia AS co
WHERE pr.codcopia=co.codcopia
AND

co.codpeli=pe.codpeli

GROUP BY pe.codpeli
)
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Insercin de datos: INSERT


INSERT INTO departamento
VALUES(1,Administracin')

Borrado de datos: DELETE


DELETE
FROM empleado
WHERE codigo = 10;
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniera de Software

Actualizacin de datos: UPDATE

UPDATE empleado
SET nombre = Juan Calvo
WHERE codigo = 1;

Universidad Nacional Mayor de San Marcos


E.A.P. de Ingeniera de Software