10/17/2019

S7. TP D - Relaciones y Consultas Multitablas en la Base de Datos


RELACIONES Y CONSULTAS MULTITABLAS EN LA BASE DE DATOS

SQL permite recuperar datos que responden a estas peticiones mediante consultas multitabla que componen (join) datos procedentes de dos o más tablas. Las consultas multitabla más comunes implican a dos tablas que tienen la relación natural. Por ejemplo, la consulta “lista todos los pedidos, mostrando su número, importe, nombre del cliente y el límite de crédito del cliente” se realiza de la siguiente forma:

SELECT num_pedido,importe,empresa,limite_credito FROM pedidos,clientes WHERE clie=num_clie




Composiciones con criterios de selección de fila

La condición de búsqueda que especifica las columnas de emparejamiento en una consulta multitabla puede combinarse con otras condiciones de búsqueda para restringir aún más los contenidos de los resultados.

Por ejemplo, supongamos la consulta anterior que se desea restringirla mostrando únicamente los vendedores de las oficinas con objetivos de ventas iguales o mayores de 60000.

SELECT nombre,ciudad,region FROM repventas,oficinas WHERE oficina_rep=oficina AND objetivo>=60000




Consultas de tres o más tablas

SQL puede combinar datos de tres o más tablas utilizando las mismas técnicas básicas utilizadas para las consultas de dos tablas. Un sencillo ejemplo es el siguiente:

SELECT num_pedido,importe,empresa,nombre FROM pedidos,clientes,repventas WHERE clie=num_clie AND rep=num_empl AND importe>25000




No es infrecuente encontrar consultas de tres o más tablas en aplicaciones SQL de producción. Por ejemplo, dentro de la sencilla base de datos. Ejemplo que contiene cinco tablas, es posible hallar una consulta de cuatro tablas que tiene sentido:

SELECT num_pedido,importe,empresa,nombre,ciudad FROM pedidos,clientes,repventas,oficinas WHERE clie=num_clie AND rep_clie=num_empl AND oficina_rep=oficina AND importe>25000


Selecciones de todas las columnas

Como se vio con anterioridad, “SELECT *” puede ser utilizado para seleccionar todas las columnas de la tabla designada en la cláusula FROM. En una consulta multitabla, el asterisco selecciona todas las columnas de todas las tablas listadas en la cláusula FROM. Por ejemplo:

SELECT * FROM repventas,oficinas WHERE oficina_rep=oficina






S7 MD D - Ejemplos Utilizando la Metodologia RUP

Ejemplos:

Primer Ejemplo







Segundo ejemplo:































10/10/2019

S6 MD D - Filosofía y Metodología RUP


FILOSOFÍA Y METODOLOGÍA RUP

La Filosofía del RUP está basado en 6 principios clave que son los siguientes:
Adaptar el proceso
El proceso deberá adaptarse a las necesidades del cliente ya que es muy importante interactuar con él. Las características propias del proyecto, el tamaño del mismo, así como su tipo o las regulaciones que lo condicionen, influirán en su diseño específico. También se deberá tener en cuenta el alcance del proyecto.

Equilibrar prioridades
Los requisitos de los diversos participantes pueden ser diferentes, contradictorios o disputarse recursos limitados. Debe poder encontrarse un equilibrio que satisfaga los deseos de todos. Gracias a este equilibrio se podrán corregir desacuerdos que surjan en el futuro. Al igual esta metodología está acorde con UML, Unificado Modelo Lenguajes'

Demostrar valor iterativamente
Los proyectos se entregan, aunque sea de un modo interno, en etapas iteradas. En cada iteración se analiza la opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto, así como también los riesgos involucrados.

Colaboración entre equipos
El desarrollo de software no lo hace una única persona sino múltiples equipos. Debe haber una comunicación fluida para coordinar requisitos, desarrollo, evaluaciones, planes, resultados, etc.

Enfocarse en la calidad
El control de calidad no debe realizarse al final de cada iteración, sino en todos los aspectos de la producción. El aseguramiento de la calidad forma parte del proceso de desarrollo y no de un grupo independiente, también es una estrategia de desarrollo de software.

Elevar el nivel de abstracción
Este principio dominante motiva el uso de conceptos reutilizables tales como patrones de diseño del software, lenguajes 4GL o esquemas (frameworks) por nombrar algunos. Estos se pueden acompañar por las representaciones visuales de la arquitectura, por ejemplo, con UML.


La metodología RUP utiliza el enfoque de la orientación a objetos en su diseño y está diseñado y documentado el uso de la notación UML (Unified Modeling Language ) para ilustrar los procesos en acción. Utiliza técnicas y prácticas probadas comercialmente.
Es un proceso considerado pesado y preferentemente aplicable a grandes equipos de desarrollo y grandes proyectos, pero el hecho de que es ampliamente personalizable que permite adaptarse a proyectos de cualquier escala.Para la gestión del proyecto, la metodología RUP proporciona una solución disciplinada como las tareas y responsabilidades señaladas dentro de una organización de desarrollo de software.RUP es, en sí, un producto de software. Es modular y automatizado, y toda su metodología se apoya en varias herramientas de desarrollo integradas y vendidos por IBM a través de sus «Suites racional.»Los métodos de la competencia en el campo de la ingeniería de software incluyen» salas blancas» (considerado pesado) y ágil (luz) como Extreme Programming (Programación XP-Extreme), Scrum, FDD y otros.
Ejemplo:



S6. TP D - Consultas con BD SQL Server

CONSULTAS CON BASE DE DATOS SQL SERVER

Consultas agrupadas (GROUP BY)

Las consultas anteriores recuperaban, trabajaban con, y mostraban información a nivel de cada registro individual de la base de datos. Así, si tenemos un producto con un determinado precio, podemos devolver el precio mediante SELECT precioLinea o bien operar sobre él como en SELECT precioLinea * 0.85.

Ahora bien, podemos querer obtener información que no proviene de un registro individual sino de la agrupación de información, como es el caso de contar el número de líneas de pedido, sumar el precio de todas las líneas por cada pedido, etc. Para ello, debemos emplear funciones agregadas y en la mayoría de los casos agrupar por algún campo.

Así, para ver el número total de registros podemos hacer:

SELECT COUNT(*)
FROM LINEAPEDIDO

Si por el contrario deseamos obtener el total de líneas por pedido, debemos indicar que agrupe por idPedido, lo que contará todos los registros con el mismo idPedido y calculará su cuenta:

SELECT idPedido, COUNT(*)
FROM LINEAPEDIDO
GROUP BY idPedido

Lo mismo se puede aplicar a otras funciones como la suma, indicando en ese caso aparte de la agrupación el campo que queremos sumar:

SELECT idPedido, SUM(precioLinea)
FROM LINEAPEDIDO
GROUP BY idPedido


Consultas por intersecciones entre tablas (JOIN)

Podemos generar una consulta que obtenga datos de varias tablas, pudiendo establecer a su vez criterios sobre otras. Veamos los tipos fundamentales (una buena explicación se puede encontrar aquí). Por ejemplo, dados los clientes de nuestro concesionario y nuestras ventas de coches a clientes en los diversos concesionarios.



podemos obtener una consulta que obtenga datos del cliente y de la venta. Por ejemplo, nombre, apellidos, codcoche y color, mediante una consulta del tipo:

SELECT nombre, apellidos, codcoche, color
FROM CLIENTE, VENTA
WHERE CLIENTE.cifcl = VENTA.idCliente


Consultas anidadas 

A veces se han de utilizar en una consulta los resultados de otra consulta, llamada subconsulta o consulta anidada. Podemos ver muchos ejemplos de ello aquí. Veamos que existen diversas variantes: 

Empleando IN: 


Obtener el identificador de los clientes que han comprado algún coche a un concesionario de Madrid.

             SELECT DISTINCT cifcl
             FROM VENTA
             WHERE cifc IN (SELECT cifc
             FROM CONCESIONARIO
             WHERE ciudad = 'Madrid')


Obtener el código de coche de los coches vendidos por algún concesionario de Madrid.

             SELECT DISTINCT codcoche
             FROM VENTA
             WHERE cifc IN (SELECT cifc
             FROM CONCESIONARIO
             WHERE ciudad = 'Madrid')


Obtener el nombre y el modelo de los coches vendidos por algún concesionario de Barcelona.

             SELECT nombre, modelo
             FROM COCHE
             WHERE codcoche IN (SELECT codcoche
             FROM VENTA
             WHERE cifc IN (SELECT cifc
             FROM CONCESIONARIO
             WHERE ciudad = 'Barcelona'))