Bases de Datos 2

Link de acceso a grupo


Ejercicio 1

Construir la base de datos para el siguiente caso.

Se desea construir una base de datos que almacene la carta de un restaurante. Para cada plato, se desea obtener su nombre, descripción, nivel de dificultad (de elaboración), una foto y el precio final para el cliente. Cada plato pertenece a una categoría. Las categorías se caracterizan por su nombre, una breve descripción y el nombre del encargado. Además de los platos, se desea conocer las recetas para su realización, con la lista de ingredientes necesarios, aportando la cantidad requerida, las unidades de medida (gramos, litros, etc.) y cantidad de ventas por cada plato.

Elabore la estructura de la base de datos, exportar de manera que se visualice:

1.    La estructura de la base de datos

2.    Las relaciones

3.    Registros en las tablas

 

Enviar al correo con asunto de: ejercicio Bases de Datos


Ejercicio 2


Una Institución Educativa, lo contrata para realizar la base de datos que le permita llevar el registro académico de sus estudiantes, para esto, se debe tener en cuenta los siguientes aspectos.

La Institución ofrece Básica Primaria, Básica Secundaria y media técnica, para la media técnica tiene convenio con otros institutos aliados que ofertan programas específicos para el mundo laboral, aquellos estudiantes interesados en uno de estos programas, se debe inscribir directamente en la Secretaría Académica, y seleccionar el programa que desea hacer en la media técnica. Por ello, el Rector de la Institución, desea saber cuales son los estudiantes que se encuentran matriculados en los diferentes institutos aliados, cuáles son los programas que mayor demanda tienen y cuales son los estudiantes que sobresalen con las notas.



Ejercicio Mysql_

Le contratan para hacer una BD que permita apoyar la gestión de un sistema de ventas de la papelería zona Ip. La Papelería necesita llevar un control de proveedores, clientes, productos y ventas. Un proveedor tiene un RUT, nombre, dirección, teléfono y página web. Un cliente también tiene identificación, nombre, dirección, pero puede tener varios teléfonos de contacto. No todos los clientes se registran. La dirección se entiende por calle, número, comuna y ciudad. Un producto tiene un id único, nombre, precio actual, stock y nombre del proveedor. Además se organizan en categorías, y cada producto va sólo en una categoría. Una categoría tiene id, nombre y descripción. Por razones de contabilidad, se debe registrar la información de cada venta con un id, fecha, cliente, descuento y monto final. Además se debe guardar el precio al momento de la venta, la cantidad vendida y el monto total por el producto.

Como programador, estipule el análisis y requerimientos para cumplir con las necesidades del cliente y su punto de vista para que el negocio sea competitivo.

1.       Realizar el modelo relacional.

2.       Aplicar normalización de datos

3.       Elabore 14 propuestas de consultas viables a realizar en MySql, máximo 5 consultas simples



Material Mysql


Material de clase, Acá 


Ejercico para Mysql




Base de datos 

Diseñar una base de datos para una empresa de alquiler de equipos de información (Pc, tablet, celulares, Servidores, otros),  cada equipo tiene una identificación, detalle, ubicación en el stock.

Además, la empresa puede vender equipos informáticos.

Para la venta o alquiler se registran los datos del usuario.
Al momento del alquiler el usuario deja un deposito, el cual es tenido en cuenta al omento de la factura.

Al entregar cada equipo, se hacen las observaciones de como sale de la empresa, y de igual manera se compara al momento del regreso.

Al presentarse detalles de cobro por el modo de entrega, se adicionan a la factura, agregando el costo que se llevará a la factura.

A cada equipo al retornar a la empresa se le hace mantenimiento, se le asigna un técnico, quien elabora la ficha del equipo, y e estado en que se entrega a bodega.

Se genera la factura.


  • Elaborar los formularios de registro de usuarios, equipo, técnico
  • Elaborar informes de: Clientes, equipos en mantenimiento, equipos alquilados, equipos dañados.
  • Elaborar un informe de los equipos alquilados solo en el mes de agosto
  • Consultar que tablet, están alquiladas.
la empresa alquila solo a los municipios del valle de aburra.




Mysql

Final

https://drive.google.com/file/d/0B_6-JwZLL1bbYmREOVNzT2Z2UVE/view?usp=sharing

Ejercicio paso a paso.

https://drive.google.com/file/d/0B_6-JwZLL1bbLXF1QWd6N0hla0E/view?usp=sharing




https://drive.google.com/file/d/0B_6-JwZLL1bbNXJwQzljTzVrZk0/view?usp=sharing


Ejemplo para crear la base de datos

Create database estudiantes;

use estudiantes;


Crear las tablas

Create table datos (codigo int not null,
                               nombre varchar (20) not null,
                              primary key (codigo));

Mostrar las tablas hasta el momento creadas

show tables;

Ingresar registros en la tabal datos

insert into datos values ( "985", "carlos perez");


Seleccionar y mostrar la información de la tabla datos

select * from datos;


********************************************************

Lista de comandos MySql


CREATE DATABASE <nombreDataBase>;
Este comando crea una nueva base de datos sobre el manejador que se esta utilizando


USE <nombreDataBase>
Cuando se ha creado una base de datos y se pretende trabajar sobre ella, es necesario ejecutar este comando para asignarla al área de trabajo, si se quiere crear alguna tabla, ocurre un error debido a que no se ha establecido el área de trabajo, que en este caso sera la base de datos. Esta sentencia, es la unica que se puede ejecutar sin un punto y coma para terminar.

SHOW [DATABASES | TABLES];
A veces es necesario verificar si aun no se ha creado una base de datos con algún nombre especifico, o tal tal vez verificar que al crear una base de datos, la operación haya tenido éxito, para esto, el comando show permite visualizar las bases de datos sobre el manejador o las tablas sobre una BD en el área de trabajo.

CREATE   TABLE   <nombreTabla>   ([atributos   características]   primary   key(atributo),   foreign key(atributo) reference tabla)
Para crear las definiciones y/o esquemas de las entidades que van a formar parte de la base de datos, se ejecuta este comando para crear una entidad o tabla de la base de datos, en esta definición se especifican también las llaves tanto primaria como foráneas.

Ejemplo:
create table persona (id int(3) not null auto_increment, nombres varchar(50) not null, apellidos varchar(30) default '­ ­ ­', primary key(id));

La instruccion anterior crea una tabla llamada persona, estableciendo como llave primaria el atributo id que este es auto incrementable.

CREATE VIEW <nombreVista> as (tabla temporal);
Este comando se utliza para crear tablas virtuales en la base de datos, es decir, se puede utlizar para crear espejos de tablas, las propiedades que tiene son que cualquier operacion sobre los datos en esta tabla virtual, tienen efecto sobre los datos originales, la tabla temporal puede ser una consulta simple hasta un consulta compleja.

DROP [DATABASE | TABLE | VIEW] <nombreTabla | nombreDataBase | nombreView>;
Este  comando  se  utiliza  para  eliminar  tanto  bases  de  datos  como  tablas,  y  vistas  (tablas virtuales).

Ejemplo: si se quiere eliminar una tabla que tiene como nombre “personas”: DROP TABLE personas;
Estos son los comandos basicos para la definicion de los datos, Algunos comando marcan errores cuando se pretende crear tablas, bases de datos, y/o vistas, cuando ya existen, para evitar este tipo de errores, el manejador de bases de datos provee unas instrucciones condicionales para no cometer errores.

IF EXISTS, IF NOT EXISTS: estos son las clausulas para verificar antes de crear alguna entidad o DB, la manera en que se utilizan es la siguiente:

CREATE TABLE IF NOT EXIST <nombre table> (......) CREATE DATABASE IF NOT EXISTS <nombreDataBAse>; CREATE VIEW IF NOT EXISTS <nombreVista>;
de la misma manera para crear nuevas entidades o DB's, se utiliza para eliminar entidades yo DB's; DROP   [VIEW   |   DATABASE   |   TABLE]   IF   EXISTS   <nombreVista   |   nombreBase   |
nombreTabla>


Hasta el momento se han definido los comandos para la definicion de datos, entonces los comandos de manipulacion de datos, son los que permiten interactuar con la informacion de la BD, es decir, son los que permiten insertar, actualizar, eliminar, etc. Los datos de la BD.



Comandos  del Lenguaje  de Manipulación de Datos


El lenguaje de manipulación de datos se puede clasificar en 2 tipos:


Lenguaje de consulta y lenguaje de manipulación.


El lenguaje de consulta permite obtener la información requerida por el usuario, y el comando utilizado para crear los reportes(tablas) para un determinado uso es:

SELECT  [atributos,  ...]  FROM  [tabla1,  tabla2  .....]  WHERE  [condiciones]  ORDER  BY [atributos, atributos].

Este comando se utiliza de diferentes maneras, y se le conoce como sentencias de consulta, obtener datos, y se usan de manera simple hasta de manera compleja.


Simples con una sola tabla:


SELECT * FROM tabla;
Esta sentencia obtiene todos los atributos de todos los registros que existen en “tabla”. SELECT atrib1, atrib2, ..., atribn FROM tabla;
Realiza la misma accion que la sentencia anterior, a diferencia de que en la anterior se muestran todos los atributos, y en esta se muestran solo algunos atributos especificados.

Cuando se requiere obtener solo los registros que cumplen alguna restriccion o condicion en algunos de los atributos de una tabla, se utiliza la clausula WHERE para especificar las condiciones que deben cumplir los registros que se desean.

SELECT * FROM tabla WHERE (Atributo='valor');


Cuando se tienen varias condiciones, se pueden utilizar los operadores logicos en conjunto con los operadores de comparacion:

Operadores logicos: AND (&), OR ( | ) NOT.


Operadores de comparacion:
=         comparador de equidad
<         Menor que
>         Mayor que
>=       Mayor o igual que
<=       Menor o igual que
(<>, !=, not)   Diferente de


Ejemplo de consulta:
SELECT * FROM tabla WHERE (a=1 AND (B>5 OR C='Mil'));


El comando de consulta también se puede utilizar con la cláusula LIKE, que permite manejar patrones, es decir, se especifica un patron para realizar las comparaciones, y los registros que tengan ese patrón en el atributo especificado se van a obtener independiente mente mayúscula o minúscula.

El uso de esta cláusula es de la siguiente manera:


('%patron%'), este especifica que no importa en donde aparezca ese patrón, incluso puede no existir, es decir no importa que tenga atras, ni que tenga delante del patrón, se va a obtener el registro.

('patron%'), Este uso define que todos los registros que empiecen con el patrón especificado se van a obtener.

(%patron), de la misma manera, que el anterior a diferencia que ente son los que terminan. Ejemplo:
SELECT * FROM persona WHERE (Apellidos LIKE 'Perez%');


en este ejemplo se obtienen todos los registros de la tabla persona que empiezan con Perez, no importa que tenga después.

Cuando existen varias condiciones sobre un mismo atributo en una sentencia es tedioso estar especificando cada condición sobre el atributo, para eliminar esta problemática y que las sentencias no se tornen muy grandes, SELECT se combina con la cláusula IN que recibe un conjunto de valores en los cuales se van a evaluar las condiciones

Ejemplo:


SELECT * FROM tabla WHERE (id [NOT] IN (valor1, valor2, valor3,....,valorn))


en el caso de que sean cadenas de caracteres se meten entre comillas.


En resumen el comando SELECT obtiene registros de una o mas tablas, y como resultado entrega una tabla temporal.

El Lenguaje de Manipulación de datos es el que permite como su nombre lo indica manipular los datos existentes en la base de datos.


Insertar Registros.­


INSERT INTO.­ Este comando permite insertar registros sobre una tabla en especifico de la base de datos, y existen 3 maneras básicas de insertar registros.

1.­ INSER INTO <tabla> ('campo1', 'campo2') VALUES ('valor Campo1', 'valor Campo2');
2.­ INSER INTO <tabla> VALUES ('valor Campo1', 'valor Campo2');
3.­ INSER INTO <tabla> SET campo1='valor Campo1', campo2='valor Campo2';


La manera en que se envían los datos en 1 y 2 es la misma, es decir, en el orden en que se encuentran los campo en la tabla, de misma manera se le envían los datos, a diferencia de la 3 no importa en que orden se le envíen los datos, ya que en esta última se le especifica el nombre el campo. Así mismo, cuando no se tienen datos para determinados campos con valores por default, es necesario especificar el espacio del campo en 3 no solo se omite.

Actualizar datos de registros.­


El comando para actualizar datos en una fila determinada se utiliza:


UPDATE <tabla> SET Campo='valor nuevo de Campo' WHERE (condiciones);


si se tienen que actualizar varios campos, se separan con comas, OJO, la condición de actualización es necesaria si solo se quiere actualizar en determinadas filas, ya que si no se indica una condición, se actualizan todas las filas de la tabla, y esto puede resultar desagradable si no se pretendía eso, MySQL no permite restaurar, a diferencia de otros Manejadores, que si se equivocan, con solo escribir ROLLBACK, deshacen todas las operaciones que han hecho sin causar daños en la BD, como es el caso de ORACLE, así que mucho cuidado.

Eliminar Registros.­


cuando existen registros innecesarios en las tablas y no se pretende llevar un historial, o simplemente se equivocaron y quieren eliminar toda la fila, El lenguaje SQL permite eliminar registros mediante el comando DELETE.

DELETE FROM [tabla1, tabla2] WHERE (condiciones tabla1 y tabla 2);


Este comando es muy importante su uso, de igual manera que UPDATE necesariamente tiene que llevar las condiciones de eliminación de filas, ya que si no se especifica la condición, elimina todos los registros de la tabla, y eso puede ser muy desastroso para los Administradores de DB, así mucho cuidado con este comando.

Si se quiere eliminar todos los registros de la tabla n, SQL permite hacerlo con un comando muy simple
TRUNCATE, y se usa de la siguiente manera: TRUNCATE <tabla>;
Y el resultado es vaciar la tabla de registros, es muy parecido a la acción de vaciar la papelera de reciclaje de Unix.

Hasta el momentos se han esta ejecutando sentencias sobre una sola tabla, cuando s requiere accederá los datos de mas de una tabla relacionadas de alguna manera y no relacionadas, existen las opciones avanzadas de los comandos mencionados con anterioridad.

Comando SELECT con varias tablas:


SELECT tabla1.*, tabla2.* from tabla1, tabla2 WHERE (condiciones de relación)


En este tipo de consultas es necesario especificar la condición de relación que hay entre las tablas, esto debido  a que si no  se especifican  se van a realiza operaciones  del algebra relacional que no se obtendrán resultados satisfactorios.

Este comando permite utilizarse con una cláusula que permite distinguir datos de uno, y la clausula es:
DISTINCT, que permite obtener datos no duplicados, si y solo si todos los atributos se parecen.
SELECT DSTINCT tabla1.*, tabla2.* FROM tabla1, tabla2 WHERE (Condiciones de relación) Anteriormente se indicó que el comando SELECT da como resultado otra tabla, por lo tanto, si se
quieren obtener solo algunas filas del resultado de una consulta, se puede hacer de una manera muy simple, aqui se hace uso de los ALIAS, que permite nombra ya sea una tabla, o un atributo y se usa de la siguiente manera:

SELECT * FROM (SELECT * FROM tabla WHERE id>20 and id<50) res WHERE res.id=30;


Este tipo de consultas se le llama consultas recursivas, y se pueden hacer tantas subconsultas como se requieran.

La manera en que se muestra los datos puede no ser la que se requiere, ya que si se quieren obtener los datos  ordenados,  el  manejador  permite  hacerlo  mediante  la  cláusula  de SELECT  conocida  como ORDER BY, y se usa de la siguiente manera:
SELECT tabla1.*, tabla2.* FROM tabla1, tabla2 WHERE tabla1.id=tabla2.id ORDER BY id; Esta cláusula permite ordenar los registros de manera descendente ASC o ascendente DESC, ejemplo:





DESC;


SELECT tabla1.*, tabla2.* FROM tabla1, tabla2 WHERE tabla1.id=tabla2.id ORDER BY id



Así como los comandos de consulta, el manejador tiene funciones de utilidad para el administrador, y son trigonométricas, aritméticas, etc..

MAX([campo]) obtiene valor maximo en el campo especificado. MIN([campo]) obtiene el minimo en el campo especificado. AVG([campo]) obtiene el promedio en el campo especificados COUNT(*) obtiene el número de registros que tiene un tabla PASSWORD('cadena') Encripta una cadena, muy util para contraseñas

ejemplos:


SELECT [MAX() | MIN() | AVG() | COUNT(*)] from tabla WHERE (condiciones);


Comandos del algebra relacional UNION, MINUS, INERSECT, LEFT JOIN, RIGHT JOIN, OUTER JOIN.

EL comando union obtiene la union de una o mas tablas, con los mismos atributos.

SELECT * from tabla1 UNION [ALL] tabla2


El comando Intersect Obtiene la intersección de 2 tablas, es decir los registros que están en tabla1 y que están en tabla 2.
SELECT * FROM tabla1 INTERSECT tabla2


El comando MINUS obtiene los registros que no estan en la tabla 2
SELECT * FROM tabla1 MINUS tabla2;


Los comando de equijuntas por asociaciones ya sea a la izquierda o la derecha: SELECT * from tabla1 JOIN tabla2 on C1=C2;
este tipo de comando entrega como resultado una unión de tablas, es decir, se crea una tabla con los atributos de tabla1 y tabla2

El IDENTIFICADOR LEFT o RIGHT es por donde se hace la junta, El IDENTIFICADOR OUTER, indica si se adhieren aun que no cumpla la condición.

Ejemplos:


SELECT tabla1.*, tabla 2.* from tabla1 RIGHT JOIN tabla2 on C1=C2; SELECT tabla1.*, tabla 2.* from tabla1 LEFT JOIN tabla2 on C1=C2;
SELECT tabla1.*, tabla 2.* from tabla1 LEFT OUTER JOIN tabla2 on C1=C2; SELECT tabla1.*, tabla 2.* from tabla1 RIGHT OUTER JOIN tabla2 on C1=C2;
el resultado de las sentencias anteriores son diferentes, ya que la junta se hace en una direccion y otra, de la misma manera que las cláusulas del algebra relacional, de la manera en que se especifican se obtienen resultados diferentes.

El uso de los comandos del lenguaje de manipulación de datos pueden ser de muchas maneras, como por ejemplo, si se pretende insertar registros de una tabla temporal a partir de los registros de una o más tablas, se procede de la siguiente manera.


INSERT INTO tabla AS (SELECT * FROM tablas WHERE (condiciones) ).

Aplicar el proceso de normalización de datos.

1. Se desea diseñar una base de datos sobre la información de las reservas de una empresa dedicada al alquiler de automóviles teniendo en cuenta que:
  • Un cliente puede tener en un momento dado hechas varias reservas.
  • De cada cliente se desea almacenar su DNI, nombre, dirección y teléfono.
  • De cada reserva es importante registrar su número de identificación, la fecha de inicio y final de la reserva, el precio total.
  • De cada coche se requiere la matrícula, el modelo, el color y la marca. Cada coche tiene un precio de alquiler por hora.
  • Además en una reserva se pueden incluir varios coches de alquiler. Queremos saber los coches que incluyen cada reserva y los litros de gasolina en el depósito en el momento de realizar la reserva de cada coche; se cobrarán aparte.
2. La asociación de cines de una ciudad quiere crear un servicio en el que se pueda hacer cualquier tipo de consulta sobre las películas que se están proyectando actualmente: en qué cines hacen una determinada película y el horario de los pases, qué películas de dibujos animados se están proyectando y dónde, qué películas hay en un determinado cine, etc. Para ello debemos diseñar una base de datos que contenga toda esta información. En concreto, para cada cine se debe dar el título de la película y el horario de los pases, además del nombre del director de esta, el nombre de hasta tres de sus protagonistas, el género (comedia, intriga, etc.) y la clasificación (tolerada menores, mayores de 18 años, etc.). La base de datos también almacenará la calle y número donde está el cine, el teléfono y los distintos precios según el día (día del espectador, día del padre, festivos, entre otros, carnet de estudiante, etc.). Hay que tener en cuenta que algunos cines tienen varias salas en las que se pasan distintas películas y también que en un mismo cine se pueden pasar películas distintas en diferentes pases.



Ejercicios 

1. Le contratan para hacer una BD que permita apoyar la gestión de un sistema de ventas. La empresa necesita llevar un control de proveedores, clientes, productos y ventas. Un proveedor tiene un RUT, nombre, dirección, teléfono y página web. Un cliente también tiene RUT, nombre, dirección, pero puede tener varios teléfonos de contacto. La dirección se entiende por calle, número, comuna y ciudad. Un producto tiene un id único, nombre, precio actual, stock y nombre del proveedor. Además se organizan en categorías, y cada producto va sólo en una categoría. Una categoría tiene id, nombre y descripción. Por razones de contabilidad, se debe registrar la información de cada venta con un id, fecha, cliente, descuento y monto final. Además se debe guardar el precio al momento de la venta, la cantidad vendida y el monto total por el producto. 



2. Una base de datos para una pequeña empresa debe contener información acerca de clientes, artículos y pedidos. Hasta el momento se registran los siguientes datos en documentos varios: • Para cada cliente: Número de cliente (único), Direcciones de envío (varias por cliente), Saldo, Límite de crédito (depende del cliente, pero en ningún caso debe superar los $3.000.000).

Para cada artículo: Número de artículo (único), Fábricas que lo distribuyen, Existencias de ese artículo en cada fábrica, Descripción del artículo. 

Para cada pedido: Cada pedido tiene una cabecera y el cuerpo del pedido. La cabecera está formada por el número de cliente, dirección de envío y fecha del pedido. El cuerpo del pedido son varias líneas, en cada línea se especifican el número del artículo pedido y la cantidad. Además, se ha determinado que se debe almacenar la información de las fábricas. Sin embargo, dado el uso de distribuidores, se usará: Número de la fábrica (único) y Teléfono de contacto. Y se desean ver cuántos artículos (en total) provee la fábrica. También, por información estratégica, se podría incluir información de fábricas alternativas respecto de las que ya fabrican artículos para esta empresa. Nota: Una dirección se entenderá como Nº, Calle, Comuna y Ciudad. Una fecha incluye hora.

No hay comentarios.:

PRINCIPAL

Información IA Student, acá Estudiantes, acá https://drive.google.com/file/d/1IhRAIae0NHaM-YZnApa0JLa7wSDetupD/view?usp=drive_link