DBD Laboratorio 3º 5

Download Report

Transcript DBD Laboratorio 3º 5

Diseño de Bases de Datos
Laboratorios 3º y 4º
Diseño físico con índices en SQL Server
Introducción a Microsoft®VISIO®
Objetivos
Ejecución de scripts con el analizador de consultas:

Examen del plan de ejecución.

Forzar el uso de un índice determinado (with (index (...))).

Estudio de índices interesantes: consulta simple, con and,
con or, con join, con agregados y uso de vistas
materializadas.
VISIO:

Dibujar diagramas.

Extracción de diagramas desde BD.

Creación de BD a partir de los diagramas.
DBD Laboratorio 3º
© A. Jaime 2005
2
Crear la BD Credit
Inicia el servidor local de SQL Server con el
administrador de servicios.
Descarga la carpeta comprimida con los scripts de
creación de la BD Credit.
Ejecuta con doble click el fichero Install.bat de la
carpeta anterior.
Si hay algún problema lee los comentarios del
fichero creabase.sql
DBD Laboratorio 3º
© A. Jaime 2005
3
Ejecutar Scripts con
el analizador de consultas
Descarga en el escritorio los ficheros con scripts
que se te facilitan.
Inicia el analizador de consultas de SQL Server.
Abre el primer script: (1) Indices consulta simple.sql
Aparecen, entre otras, instrucciones SELECT.
También comentarios (con “--”)
Use credit abre la BD de nombre “credit”.
Go ejecuta las instrucciones anteriores en lo que se
llama un “batch”
DBD Laboratorio 3º
© A. Jaime 2005
4
Plan de ejecución
Muestra los algoritmos usados para ejecutar las operación
sobre la BD, por ejemplo, para SELECT.
Consulta  Mostrar Plan de Ejecución
Selecciona el siguiente fragmento de script con el ratón:
set statistics io on
use credit
go
SELECT LastName, FirstName, Phone_No
FROM
Member with (Index (0))
WHERE
LastName LIKE '[S-Z]%'
go
Pulsa el icono:
DBD Laboratorio 3º
(“ejecutar consulta (F5)”)
© A. Jaime 2005
5
Ver el plan de ejecución
Se ha forzado el uso del índice clustered (en este
caso el de la clave primaria) con:
FROM Member with (Index (0))
Pasando el cursor sobre cada icono del plan de
ejecución se explica el paso realizado.
En este caso se ha recorrido la tabla Member de
manera secuencial (búsqueda lineal):

Son 10.000 registros

Se han realizado 146 lecturas (accesos a bloque)
DBD Laboratorio 3º
© A. Jaime 2005
6
Conteo del nº de bloques
en SQL Server
Ejecutando set statistics io on, volviendo a ejecutar
la SELECT y mirando en la solapa “Mensajes”
SQL Server usa mucha memoria para disponer de
gran parte de la BD y reducir las transferencias
desde/a disco (ver Ayuda Contenido Arquitectura de
SQLServer Arquitectura del motor BD relacional
Arquitectura de la E/S).
Por eso se cuentan las lecturas lógicas (en memoria)
y las físicas son pocas o ninguna (transferencias de
bloque reales al disco).
DBD Laboratorio 3º
© A. Jaime 2005
7
Crear, modificar y borrar índices
con el analizador de consultas
Se puede usar la herramienta:
Herramientas  Administrar índices
También se pueden ejecutar instrucciones T-SQL:

Para crear un índice:
create index nombreÍndice on tabla(atributos)

Para borrarlo:
drop index tabla.nombreÍndice

Para ver los índices de una tabla:
exec sp_helpindex tabla
DBD Laboratorio 3º
© A. Jaime 2005
8
Índices en SQL Server
Hemos creado ya índices con el administrador corporativo:
Si es o no
campo
clave
Si las
filas
quedarán
ordenada
s por ese
atributo
DBD Laboratorio 3º
Tabla sobre
la que se
define el
índice
Nombre
del índice
Atributos
sobre los
que se
define el
índice
© A. Jaime 2005
9
Índices agrupados (clustered)
y no agrupados en SQL Server
Información en: Ayuda Contenido Arquitectura de SQLServer
Arquitectura de BD Componentes lógicos de una BD Índices de SQL
Índices de las tablas
Es posible crear tablas sin índices (heap o montón)
Índices Clustered (primario o agrupación):


las tuplas se mantienen ordenadas por el atributo del índice
(pueden ser varios atributos).
Sólo puede haber un índice clustered por tabla.
Índices No clustered (secundario):

Las tuplas NO están ordenadas.
DBD Laboratorio 3º
© A. Jaime 2005
10
Índices lógicos
en SQL Server
a
Las hojas de índices NO
clustered (secundarios)
tendrán:


Si la tabla es heap o
montón, punteros
físicos a tupla (índice
físico).
Si hay índice clustered,
valores del índice
clustered en lugar de
punteros (índice
lógico)
DBD Laboratorio 3º
c
c
e
f
f
5
2
2
c
5
a
e Ignacio 24
f Luisa 9
8
j
9
f
a
c
Juan
Feli
g
g
5
9
15
g
g Arantza 15
h Inés 16
h
16
h
24
e
j
j
m
© A. Jaime 2005
15
j Iker 8
m Roberto 28
Bloques de
datos
24
28
m
11
Iconos del plan de ejecución:
Clustered Index Scan
Bloques de
datos
a
IP
c
Clustered Index Scan
c
e
f
f
a
c
5
2
e
f
24
9
g
h
15
16
j
m
8
28
g
g
Recorrido secuencial de
la tabla (ordenados por
IP o IA)
h
j
j
m
DBD Laboratorio 3º
© A. Jaime 2005
12
Iconos del plan de ejecución:
Index Scan
a
c
Index Scan
c
e
f
f
a
c
5
2
2
c
5
a
e
f
24
9
8
j
9
f
g
g
Recorrido de todas
las hojas de un IS-c ó
IS-nc
DBD Laboratorio 3º
9
15
16
h
24
e
j
IP
5
15
16
h
m
lógico
15
g
g
h
j
IS
j
m
8
28
24
28
m
Bloques de
datos
© A. Jaime 2005
13
Iconos del plan de ejecución:
Index Seek
a
c
Index Seek
c
e
f
f
a
c
5
2
2
c
5
a
lógico
e
f
24
9
8
j
9
f
5
g
Busca desde la raíz a una
hoja en IP, IA, IS-c ó IS-nc
Puede recorrer varias hojas
a partir de la encontrada
g
15
16
h
j
m
8
28
IP
DBD Laboratorio 3º
© A. Jaime 2005
15
16
h
24
e
j
m
9
15
g
g
h
j
IS
Bloques de
datos
24
28
m
14
Iconos del plan de ejecución:
Bookmark Lookup
5
2
2
c
5
a
24
9
8
j
9
f
a
IP
Bookmark
Lookup
c
c
e
f
f
a
c
e
f
DBD Laboratorio 3º
g
g f
g
h
j
m
© A. Jaime 2005
9
15
16
h
24
e
j
j
5
15
16
h
Bookmark
Lookup
Index
Seek
15
g
g
Busca registros
en el IP ó IA
a partir de valores
encontrados en
un IS-c o IS-nc
IS
lógico
j
m
8
28
Bloques
de datos
24
28
m
15
Ver juntos varios
planes de ejecución
Permite comparar resultados en una sola pantalla.
Selecciona varios SELECT (sin go) y ejecútalos.
En la siguiente página de la ayuda on-line se explican
todos los iconos de los planes de ejecución:

Ayuda Contenido Optimizar el rendimiento de
la BD Optimizar consultas Analizar una
consulta Mostrar gráficamente el plan de ...
Estudia qué ha ocurrido en cada ejecución
DBD Laboratorio 3º
© A. Jaime 2005
16
Sin WITH en el FROM:
resultado “óptimo”
Sin WITH en el FROM NO se fuerza al optimizador
a elegir un índice concreto.
Sin WITH, el optimizador usará la mejor opción
entre las disponibles: la de menos lecturas lógicas
Para que el optimizador disponga de opciones
interesantes hay que aprender a crear índices
que mejoren la ejecución de las consultas
Esto último se conoce como diseño físico
DBD Laboratorio 3º
© A. Jaime 2005
17
Comparación consulta simple

Member_ident:
o


IS-nc(LastName, FirstName, Phone_No)
21 bloques
NomApTfn:
o
IS-nc(LastName)
7.109 bloques
ApNomTfn:
o

146 bloques
Apellido:
o
IP(Member_No)
IS-nc(FirstName, LastName, Phone_No)
58 bloques
DBD Laboratorio 3º
© A. Jaime 2005
18
Índices interesantes para
consultas simples
La mejor opción es un índice que permita resolver la
consulta recorriendo SÓLO nodos del índice (sin
visitar bloques de datos)
Conviene que el índice incluya TODOS los atributos
de WHERE seguidos de los de SELECT
DBD Laboratorio 3º
© A. Jaime 2005
19
Ejercicio: consulta simple
Elimina todos los índices de la tabla charge salvo el primario
(charge_ident)
Crea índices interesantes para la siguiente consulta:
SELECT c.member_no,c.charge_no,c.charge_dt
FROM
charge as c
WHERE
c.member_no BETWEEN 6000 and 7000
¿Puedes bajar de 26 lecturas lógicas?
DBD Laboratorio 3º
© A. Jaime 2005
20
Consultas con AND
Abre el segundo script (el primero se cerrará
automáticamente): (2)Indices para AND.sql
Allí se analiza la siguiente consulta sobre la tabla Member:
SELECT m.Member_No, m.FirstName, m.Region_No
FROM
Member AS m
WHERE
m.FirstName LIKE 'K%'
AND m.Region_No > 6
AND m.Member_No < 5000
Sigue los pasos del script. Trata de entender qué ocurre en
cada momento. Qué índice da mejores resultados y por qué
DBD Laboratorio 3º
© A. Jaime 2005
21
Iconos nuevos
Hash Match
/ Inner Join
Filter
Conexión de
varios a uno
DBD Laboratorio 3º
© A. Jaime 2005
22
Comparación 1ª consulta con
AND
Member_ident: IP(Member_No)
SELECT m.Member_No,
m.FirstName,
m.Region_No
FROM dbo.Member AS m
WHERE m.FirstName
LIKE 'K%‘ AND
m.Region_No>6 AND
m.Member_No<5000
74 bloques
Nombre:
IS-nc(FirstName)
 420 bloques
Region:
IS-nc(Region_no)
 3.475 bloques
Nombre+Region:IS-nc(FirstName) + IS-nc(Region_no)
 11 bloques
Region+Nombre: IS-nc(Region_no) + IS-nc(FirstName)
 11 bloques
NomReg:
IS-nc(FirstName, Region_No)
 3 bloques

DBD Laboratorio 3º
© A. Jaime 2005
23
Comparación 2ª consulta con
AND
Member_ident: IP(Member_No)
SELECT m.Member_No,
m.FirstName,
m.Region_No,
m.Phone_no
FROM dbo.Member AS m
WHERE m.FirstName
LIKE 'K%‘ AND
m.Region_No>6 AND
m.Member_No<5000
74 bloques
Nombre:
IS-nc(FirstName)
 420 bloques
Region:
IS-nc(Region_no)
 3.475 bloques
Nombre+Region:IS-nc(FirstName) + IS-nc(Region_no)
 156 bloques
Region+Nombre: IS-nc(Region_no) + IS-nc(FirstName)
 156 bloques
NomReg:
IS-nc(FirstName, Region_No)
 150 bloques

DBD Laboratorio 3º
© A. Jaime 2005
24
Índices interesantes para AND
Cada subcondición añadida con AND va limitando
el resultado.
Interesa empezar con un índice sobre una columna
de WHERE que obtenga pocas tuplas (selectiva). Si
hay un índice así, puede valernos.
Si no, se intenta con varias columnas de WHERE
que obtengan pocas tuplas. No tienen por qué ser
todas.
Si no hay nada selectivo probar a cubrir la consulta
(todos los atributos de WHERE y SELECT)
DBD Laboratorio 3º
© A. Jaime 2005
25
Ejercicio: consulta con AND
Crea índices interesantes para la siguiente consulta:
SELECT c.member_no,c.charge_no,c.charge_dt
FROM
charge as c
WHERE
c.member_no BETWEEN 6000 and 7000 AND
c.provider_no BETWEEN 100 and 300
¿Puedes bajar de 21 lecturas lógicas (no 33, sino 21)?
DBD Laboratorio 3º
© A. Jaime 2005
26
Sesión 2
Consultas con OR
Abre el tercer script: (3)Indices para OR.sql
Allí se analiza la siguiente consulta y otras similares (como el
where mostrado a la dcha.):
SELECT m.LastName, m.FirstName, m.Region_No
FROM
Member AS m
WHERE
m.FirstName='Kimberly'
OR m.LastName='Tripp' WHERE
m.FirstName='Jeniffer'
OR m.LastName='Widom'
Sigue los pasos del script. Cuál de los índices da mejores
resultados en cada caso y por qué
DBD Laboratorio 3º
© A. Jaime 2005
27
Iconos nuevos
Sort/Distinct
Merge
Join/Union
DBD Laboratorio 3º
Concatenation
© A. Jaime 2005
28
Comparación consulta con OR
Sólo presentamos aquí el caso de la consulta que obtiene
todas las columnas, que devuelve más filas y contiene
igualdades (“=“) en el WHERE:

Con OR: NomApReg IS-nc(FirstName, LastName, Region_No)
o

Con UNION: NomApReg y ApNomReg
o

43 bloques
10 bloques
Con UNION ALL: NomApReg y ApNomReg
o
10 bloques
DBD Laboratorio 3º
© A. Jaime 2005
29
Índices interesantes para OR
Una fila forma parte del resultado si una subcondición
cualquiera del WHERE es cierta
OR es similar a UNIÓN:
 Si sirve una solución con UNIÓN (mejor UNION ALL) usarla.
 Si SELECT incluye un identificador de fila (como la clave
primaria), entonces OR y UNIÓN son equivalentes. Si no,
pueden dar soluciones diferentes.
Interesa encontrar índices útiles para cada subconsulta del
WHERE (de las unidas con OR)
Si nada va bien podemos buscar índices interesantes para toda
la condición del WHERE
Ir probando hasta dar con una solución satisfactoria
DBD Laboratorio 3º
© A. Jaime 2005
30
Ejercicio: consulta con OR
Crea índices interesantes y,
transforma la siguiente consulta:
si
es
conveniente,
SELECT c.charge_no, c.charge_amt,
c.statement_no, c.charge_code
FROM
charge as c
WHERE c.charge_amt > 5000 OR
c.statement_no >= 30000
¿Puedes bajar de 78 lecturas lógicas con or?
¿y de 4 con union?
DBD Laboratorio 3º
© A. Jaime 2005
31
Consultas con JOIN
Abre el cuarto script: (4)Indices para Join.sql
Allí se analizan dos consultas con JOIN. Cada una utiliza un
algoritmo diferente:
SELECT r.region_name, p.provider_name
FROM
region as r JOIN provider as p
ON r.region_no=p.region_no
SELECT s.statement_no, p.payment_no
FROM statement as s JOIN payment as p
ON s.member_no=p.member_no
WHERE p.payment_amt between 1000 and 2000
Sigue los pasos del script. Qué índices dan mejores
resultados en cada caso y por qué
DBD Laboratorio 3º
© A. Jaime 2005
32
Icono nuevo
Nested Loops
/ Inner Join
Representación de
ciclo anidado (R1)
Nested Loops
/ Inner Join
Representación de
ciclo único (R2)
DBD Laboratorio 3º
© A. Jaime 2005
33
IS = índice secundario
Comparación consultas con JOIN
Region JOIN Provider:



Sin IS: 1000Rg + 7Pr =
1007_bloques
Statement JOIN payment:

Sin IS: 170St + 29Py =
199_bloques

Con IS en extran./forán: 1432St +
29Py = 1461_bloques

Con IS que incluyen WHERE y
SELECT: 1432St + 3Py = 1435
_bloques

Sólo con IS en payment: 170St +
3Py = 173 _bloques
Con IS en extran./forán: 2Rg +
1009Pr = 1011_bloques
Con IS que incluyen WHERE y
SELECT: 1Rg + 19Pr =
20_bloques
DBD Laboratorio 3º
© A. Jaime 2005
34
Índices interesantes para JOIN
Crear un índice para cada clave primaria y uno para cada clave
foránea de los JOIN.
Crear índices adecuados para la condición WHERE.
Probar a crear un índice en cada tabla que incluya sus atributos
de WHERE y JOIN. Crearlo en ambos órdenes (primero los de
WHERE y primero los de JOIN).
Probar a añadir a los últimos índices creados, además de los
atributos de WHERE y JOIN, los de SELECT.
Si hay más de un JOIN, analizar el que suponga mayor costo.
Si no es suficiente estudiar el siguiente más costoso. Continuar
estudiando JOIN hasta encontrar una solución satisfactoria.
DBD Laboratorio 3º
© A. Jaime 2005
35
Ejercicio: consulta con JOIN
Crea índices
consulta:
interesantes
para
la
siguiente
SELECT m.member_no, c.category_no
FROM member as m
JOIN charge as c
ON m.member_no=c.member_no
WHERE m.corp_no is not null
¿Qué algoritmo utiliza?
¿Puedes bajar de un total de 187 + 5 bloques (no
187+19)?
DBD Laboratorio 3º
© A. Jaime 2005
36
Consultas con agregados
(como SUM)
Abre el quinto script: (5)Indices para Agregados.sql
Allí se analiza la siguiente consulta sobre la tabla charge:
SELECT member_no,
SUM(charge_amt) AS TotalVentas
FROM charge
GROUP BY member_no
ORDER BY member_no
Sigue los pasos del script. Cuál de los índices da mejores
resultados y por qué
DBD Laboratorio 3º
© A. Jaime 2005
37
Iconos nuevos
Stream aggregate
/ Aggregate
Compute Scalar
DBD Laboratorio 3º
Cálculo de SUM,
AVG, ..
aprovechando el
orden del recorrido
Cálculo de valores a partir
de otros contenidos en la
misma fila
© A. Jaime 2005
38
Comparación consulta con SUM
Sin IS: 583 bloques
Con IS con atributos de SELECT (SUM) y GROUP BYORDER BY en ese orden: 236 bloques
Con IS con atributos de GROUP BY-ORDER BY y SELECT
(SUM) en ese orden: 236 bloques
DBD Laboratorio 3º
© A. Jaime 2005
39
Índices interesantes para
agregados (como SUM)
Se calcula de dos formas:

Con un fichero intermedio hash (dir. calculado)

Recorriendo un índice/fichero ordenado
adecuadamente

Conviene usar la 2ª opción para evitar el coste de
crear el fichero intermedio
Interesa crear índices que incluyan a los atributos de
GROUP BY, a los de WHERE y a los de SELECT
(sobre los que se aplica la función, por ejemplo SUM)
DBD Laboratorio 3º
© A. Jaime 2005
40
Ejercicio: consulta con agregados
Crea índices
consulta:
interesantes
para
la
siguiente
SELECT AVG(statement_amt), member_no
FROM
statement with(index(CurMiemCant))
WHERE statement_current <> 0
GROUP BY member_no
ORDER BY AVG(statement_amt)
¿Puedes bajar de un total de 55 bloques (no 68)?
DBD Laboratorio 3º
© A. Jaime 2005
41
Cómo crear vistas
(vistas normales, no materializadas)
Con el administrador corporativo:

Utiliza alguna de las BD que creaste en laboratorios
anteriores.

Selecciona views.

Con el botón derecho del ratón selecciona New View.

La definición de la vista se expresa como una consulta
SELECT.
Con el analizador de consultas usando la sintaxis de SQL
create view ...
Las vistas son otra forma de tener consultas almacenadas en
la BD.
DBD Laboratorio 3º
© A. Jaime 2005
42
Uso de vistas materializadas
(vistas indexadas de SQL Server)
Abre el sexto script: (6)Indices de Vistas.sql
Allí se analiza la misma consulta con agregados anterior:
SELECT member_no,
SUM(charge_amt) AS TotalVentas
FROM charge
GROUP BY member_no
ORDER BY member_no
Sigue los pasos del script. Cómo se consigue ahora el mejor
resultado y por qué
DBD Laboratorio 3º
© A. Jaime 2005
43
Comparación: sólo índices
frente a vistas materializadas
Sin vista: 236 bloques
Recorrido de
índice
Con vista: 236 bloques / aprox. 250 msg.
Recorrido del
mismo índice
Con vista indexada (materializada): 34 bloques /
aprox. 186 msg.
Recorrido de la
vista indexada
DBD Laboratorio 3º
© A. Jaime 2005
44
Uso de vistas materializadas
(indexed views)
Sólo podemos utilizarlas con:

Enterprise o Developer Edition

SCHEMABOUND: impide modificar la definición de la tabla base

COUNT_BIG en SELECT cuando hay funciones agregadas
Problema:

Puede afectar al rendimiento de INSERT / DELETE / UPDATE
sobre la tabla base
Ventajas:

El resultado de la consulta se mantiene continuamente
calculado

Se reduce el uso de Cache
DBD Laboratorio 3º
© A. Jaime 2005
45
Ejercicio: uso de vistas materializadas
Crear una vista indexada para la siguiente consulta.
Comparar con el mejor resultado obtenido en el 4º script (173
bloques).
SELECT s.statement_no, p.payment_no
FROM
dbo.statement as s
JOIN dbo.payment as p
ON s.member_no=p.member_no
WHERE p.payment_amt between 1000 and 2000
Ayuda: el índice habrá que construirlo sobre las columnas resultado de
la consulta (las de select).
¿Te da 4 bloques transferidos? (frente a 173 que era la
mejor opción con índices)
DBD Laboratorio 3º
© A. Jaime 2005
46
Visio
Es un software para creación, edición y
almacenamiento de diagramas de diversos tipos:
bases de datos, gestión de proyectos, flujos,
desarrollo de software (como UML), mapas, etc ...
Hay varias ediciones de Visio. Algunas tienen más
tipos de diagramas que otras.
Visio incluye algunas características interesantes
además de la pura edición de diagramas.
Aquí veremos su capacidad de importar y exportar
esquemas de BD.
DBD Laboratorio 3º
© A. Jaime 2005
47
Diagramas de BD en Visio
Dependiendo de la versión incluye más o menos
tipos de diagrama de BD.
Lo que Visio llama Entity-Relationship o Entidad
Relación no es tal, sino un tipo de diagrama
especial de Visio cercano a un esquema relacional.
El diagrama E/R sería lo que Visio llama Chen ERD
En los diagramas de Software se incluyen los
diagramas de clase de UML (Static Structure)
Inicia Visio y selecciona File  New  Database 
DataBase Model Diagram
DBD Laboratorio 3º
© A. Jaime 2005
48
Ingeniería inversa
Extraeremos el diagrama de la BD Northwind de SQL Server
En Database selecciona Reverse Engineer y realiza los
siguientes pasos:
 Selecciona SQL Server y pulsa New para crear una fuente
de datos ODBC para Northwind:
o



Origen de datos de usuario – SQL Server – NW_odbc (si existía en
la 1ª pantalla pon NW2_odbc) - (descripción vacía) Apadeva.unirioja.es – Autenticación SQL Server – dbd – dbd03 –
BD predeterminada – Northwind – Probar origen de datos (y si va
bien ...) – Aceptar
Seleccionar NW_odbc (o NW2_odbc, la que tu has creado)
En Objects deja seleccionados: tables-Primary K-IndexesForeign K.
En Select tables pulsa Select All y luego Finish
DBD Laboratorio 3º
© A. Jaime 2005
49
Ingeniería inversa (2)
Aparecerá una ventana con las tablas de la BD
Seleccionar todas las tablas
Pinchar con el ratón y arrastrar y soltar sobre la hoja
Se verá el diagrama correspondiente a la BD Northwind
Se puede ajustar el diagrama con Tools  Layout Shapes
(poner por ejemplo Spacing..  Space between Shapes a 5 mm)
El diagrama se puede guardar en un archivo de visio,
añadir, modificar, etc.
Estudia el diagrama. Compáralo con la BD real:
 ¿Qué significan: PK, FK1, FK2, ..., I1, I2, ...?
 ¿A qué corresponden las flechas entre tablas? ¿Y la
punta de la flecha?
DBD Laboratorio 3º
© A. Jaime 2005
50
Creación de un diagrama
Crea un diagrama de Visio del mismo tipo que el anterior
para el siguiente esquema de BD.
Utiliza los tipos de datos más adecuados para cada atributo.
Crea índices para Título y NombreAutor
AUTORES_LIBROS
COPIAS_LIBRO
IdLibro NombreAutor
IdLibro IdSucursal NúmCopias
LIBRO
IdLibro Título NombreEditorial
PRÉSTAMOS
IdLibro IdSucursal NúmTarjeta FechaSale FechaDevol
LECTOR
NúmTarjeta Nombre Dirección Teléfono
DBD Laboratorio 3º
© A. Jaime 2005
51
Creación de una BD
a partir del diagrama
A partir del diagrama se puede crear un esquema de BD.
Hay varias posibilidades: SQL Server, Access, ...
Primero crea una BD vacía en SQL Server. Pon de nombre
Bib_Mar_Est (si te apellidas Martínez Estefanía).
Crea una fuente de datos odbc para la BD.
Database  Generate y seguir los siguientes pasos en el
asistente:

Seleccionar Create new database –DB already exists –
Selecciona la fuente de datos odbc – ...
DBD Laboratorio 3º
© A. Jaime 2005
52
Fin de los laboratorios
3y4
DBD Laboratorio 3º
© A. Jaime 2005
53
Explicación
algoritmos
Algoritmo de Merge/Join
1º
2º
4º
7º
a
c
f
j
Juan
Feli
Luisa
Iker
5
2
9
8
3º e Ignacio 24
5º g Arantza 15
Inés 16
6º h
8º m Roberto 28
Merge/Join
a Juan
5
c
Feli
2
e Ignacio 24
f Luisa 9
g Arantza 15
h
Inés 16
j
Iker
8
m Roberto 28
Ficheros ordenados (en el ejemplo por la primera letra)
Un recorrido a cada fichero
Resultado: las filas de los dos ficheros ordenadas
Se toma en cada paso la menor de las dos filas y se avanza a la
siguiente fila sólo en la fila tomada
Si las filas son iguales se toman y avanza en ambas
DBD Laboratorio 3º
© A. Jaime 2005
55