Giter Club home page Giter Club logo

sprint2_t1_mysql_data_structure's Introduction

IT Skills

Java SpringBoot ReactiveX SpringSecurity JSONWebTokens Vault MySQL MongoDB PostgreSQL JUnit Swagger Maven Gradle Postman Wireshark IntelliJIDEA Eclipse VisualStudioCode Git SonarCloud

sprint2_t1_mysql_data_structure's People

Contributors

plopezgit avatar

Watchers

 avatar

sprint2_t1_mysql_data_structure's Issues

[Planning] T1 Exercises inputs review

S2N1ex1- Óptica
Una óptica, llamada "Cul de Ampolla", quiere informatizar la gestión de los clientes/as y ventas de gafas.
• En primer lugar, la óptica quiere saber cuál es el proveedor de cada una de las gafas. En concreto quiere saber de cada proveedor:
• El nombre
• La dirección (calle, número, piso, puerta, ciudad, código postal y país)
• Teléfono
• Fax
• NIF.
• La política de compras de la óptica se basa en que las gafas de una marca se comprarán a un único proveedor (así podrá sacar mejores precios), pero pueden comprar gafas de varias marcas a un proveedor. De las gafas quiere saber:
• La marca.
• La graduación de cada uno de los cristales.
• El tipo de montura (flotante, pasta o metálica).
• El color de la montura.
• El color de cada cristal.
• El precio.
De los clientes/as desea almacenar:
• El nombre.
• La dirección postal.
• El teléfono.
• El correo electrónico.
• La fecha de registro.
• Cuando llega un cliente nuevo, se almacena el cliente que le ha recomendado al establecimiento (siempre que alguien le haya recomendado).
• Nuestro sistema deberá indicar quién ha sido el empleado/a que ha vendido cada anteojo.

S2N1ex2 - Pizzería
Te han contratado para diseñar una web que permita realizar pedidos de comida a domicilio por Internet.
• Ten en cuenta las siguientes indicaciones para modelar cómo sería la base de datos del
proyecto:
• Para cada cliente/a almacenamos un identificador único:
• Nombre.
• Apellidos.
• Dirección.
• Código postal.
• Localidad.
• Provincia.
• Número de teléfono.
• Los datos de localidad y provincia estarán almacenados en tablas separadas. Sabemos que una localidad pertenece a una única provincia y que una provincia puede tener muchas localidades.
Para cada localidad se almacena un identificador único y un nombre. En cada provincia
almacenamos un identificador único y un nombre.
• Una persona puede realizar muchos pedidos, pero un único pedido sólo puede ser realizado por una única persona. De cada pedido se almacena un identificador único:
• Fecha/hora.
• Si el pedido es para reparto a domicilio o para recogerlo en tienda.home delivery or to pick up in store.
• La cantidad de productos que se han seleccionado de cada tipo.
• El precio total.
Un pedido puede constar de uno o varios productos.
• Los productos pueden ser pizzas, hamburguesas y bebidas. De cada producto se almacena un identificador único:
• Nombre.
• Descripción.
• Imagen.
Precio.
En el caso de las pizzas existen varias categorías que pueden cambiar de nombre a lo largo del año. Una pizza sólo puede estar dentro de una categoría, pero una categoría puede tener muchas pizzas.
• De cada categoría se almacena un identificador único y un nombre.
Un pedido es gestionado por una única tienda y una tienda puede manejar muchos pedidos. De cada tienda se almacena un identificador único:
• Dirección.
• Código postal.
• Localidad.
• Provincia.
• En una tienda pueden trabajar muchos empleados y un empleado sólo puede trabajar en una tienda. De cada empleado/a, se almacena un identificador único: •
Nombre.
• Apellidos.
• NIF.
• Teléfono.
• Si trabaja como cocinero/ao repartidor/a. Para los pedidos de reparto a domicilio interesa guardar quién es el repartidor/a que hace la entrega del pedido y la fecha/hora del momento de la entrega.

S2N2ex1- YouTube
Trataremos de hacer un modelo sencillo de cómo sería la base de datos para una versión reducida de YouTube.
• De cada usuario/a guardamos un identificador único:
• Email.
• Password.
• Nombre de usuario/a.
• Fecha de nacimiento.
• Sexo.
País.
• Código postal.

• Un usuario/a publica vídeos. De cada vídeo guardamos un identificador único:
• Un título.
• Una descripción
• Un tamaño.
• El nombre del archivo de vídeo.
• Duración del vídeo.
• El número de reproducciones.
• El número de likes.
• El número de dislikes.
• Un video puede tener tres estados distintos: público, oculto y privado. Un vídeo puede tener muchas etiquetas.
Una etiqueta se identifica por un identificador único y un nombre de etiqueta.
Interesa guardar quién es el usuario/a que publica el video y en qué fecha/hora lo hace.
Un vídeo puede tener tres estados distintos: público, oculto y privado. Un vídeo puede tener muchas etiquetas.
Una etiqueta se identifica por un identificador único y un nombre de etiqueta.
Interesa guardar quién es el usuario/a que publica el video y en qué fecha/hora lo hace.

• Un usuario/a puede crear un canal. Un canal tiene un identificador único
• Un nombre.
• Una descripción.
• Una fecha de creación.

Un usuario/a puede suscribirse a los canales de otros usuarios/as. Un usuario puede darle un like o dislike a un video una única vez. Habrá que llevar un registro de los usuarios/as que le han dado like y dislike a un determinado video y en qué fecha/hora lo hicieron.

Un usuario/a puede crear playlists con los vídeos que le gustan. Cada playlist tiene un identificador único:
• Un nombre.
• Una fecha de creación.
• Un estado que indica que puede ser pública o privada.

• Un usuario/a puede escribir comentarios en un vídeo determinado. Cada comentario está identificado por un identificador único:
• El texto del comentario.
• La fecha/hora en la que se realizó.
• Un usuario puede marcar un comentario como me gusta o no me gusta. Habrá que llevar un registro de los usuarios/as que han marcado un comentario cómo me gusta/no me gusta, y en qué fecha/hora lo hicieron.

Nivel 3 - Spotify
Trataremos de hacer un modelo sencillo de cómo sería la base de datos necesaria para Spotify.
• Existen dos tipos de usuarios: free y premium. De cada usuario/a guardamos un identificador único:
• Email.
• password.
• Nombre de usuario/a.
• Fecha de nacimiento.
• Sexo.
ф
País.
• Código postal.
• Los usuarios/as prémium realizan suscripciones. Los datos necesarios que habrá que guardar para cada suscripción son:
• Fecha de inicio de la suscripción.
• Fecha de renovación del servicio.
• Una forma de pago, que puede ser mediante tarjeta de crédito o PayPal.
• De las tarjetas de crédito guardamos el número de tarjeta, mes y año de caducidad y el código de seguridad. De los usuarios/as que pagan con PayPal guardamos el nombre de usuario/a de PayPal. Nos interesa llevar un registro de todos los pagos que un usuario premium ha ido realizando durante el período que está suscrito. De cada pago se guarda:
• La fecha.
• Un número de orden (que es único).
• Un total.
• Un usuario/a puede crear muchas playlists. De cada playlist guardamos:
• Un título.
• El número de canciones que contiene.
Un identificador único.
Una fecha de creación.
• Cuando un usuario borra una playlist no se borra del sistema, sino que se marca como que ha sido eliminada. De esta forma el usuario puede volver a recuperar sus playlists en caso de que las haya eliminado por error. Es necesario almacenar la fecha en la que la playlist ha
sido marcada como eliminada.
• Podemos decir que existen dos tipos de playlists: activas y borradas. Una playlist que está activa puede ser compartida con otros usuarios/as, esto significa que otros usuarios/as pueden añadir canciones a ella. En una lista compartida nos interesa saber qué usuario ha sido el que ha añadido cada canción y en qué fecha lo hizo.
• Una canción sólo puede pertenecer a un único álbum. Un álbum puede contener muchas canciones. Un álbum ha sido publicado por un/a único/a artista. Un/a artista puede haber publicado muchos álbumes. De cada canción guardamos un identificador único:
• Un título.
• Una duración.
• El número de veces que ha sido reproducida por los usuarios de Spotify.
• De cada álbum guardamos un identificador único:
• Título.
• Año de publicación.
• Una imagen con la portada.
• De cada artista guardamos un identificador único:
• Nombre.
• Una imagen del artista
• Un usuario/a puede seguir a muchos/as artistas. Un/a artista puede estar relacionado/a con otros artistas que hagan música similar. De modo que Spotify pueda mostrarnos un listado de artistas relacionados con los artistas que nos gustan. También nos interesa guardar cuáles son los álbumes y canciones favoritas de un usuario/a. Un usuario puede seleccionar muchos álbumes y muchas canciones como favoritas.

S2.02 MySQL queries

Descripción
Base de datos Tienda
Tenemos las tablas producto y fabricante, cada una con los siguientes campos:
El campo 'codigo_fabricante' de la entidad producto se relaciona con el campo 'código' de la entidad fabricante.
Por favor, efectúa las siguientes consultas:

  1. Lista el nombre de todos los productos que hay en la mesa producto.
  2. Lista los nombres y los precios de todos los productos de la mesa producto.
  3. Lista todas las columnas de la tabla producto.
  4. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses (USD).
  5. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses (USD). Utiliza los siguientes alias para las columnas: nombre de producto, euros, dólares.
  6. Lista los nombres y los precios de todos los productos de la mesa producto, convirtiendo los nombres a mayúscula.
  7. Lista los nombres y los precios de todos los productos de la mesa producto, convirtiendo los nombres a minúscula.
  8. Lista el nombre de todos los fabricantes en una columna, y en otra columna obtenga en mayúsculas los dos primeros caracteres del nombre del fabricante.
  9. Lista los nombres y los precios de todos los productos de la mesa producto, redondeando el valor del precio.
  10. Lista los nombres y precios de todos los productos de la tabla producto, truncando el valor del precio para mostrarlo sin ninguna cifra decimal.
  11. Lista el código de los fabricantes que tienen productos en la mesa producto.
  12. Lista el código de los fabricantes que tienen productos en la tabla producto, eliminando los códigos que aparecen repetidos.
  13. Lista los nombres de los fabricantes ordenados de forma ascendente.
  14. Lista los nombres de los fabricantes ordenados de forma descendente. 15.
    Lista los nombres de los productos ordenados, en primer lugar, por el nombre de forma ascendente y, en segundo lugar, por el precio de forma descendente.
  15. Devuelve una lista con las 5 primeras filas de la mesa fabricante.
  16. Devuelve una lista con 2 filas a partir de la cuarta fila de la mesa fabricante. La cuarta fila también debe incluirse en la respuesta.
  17. Lista el nombre y el precio del producto más barato. (Utiliza solo las cláusulas ORDER BY Y LIMIT). NOTA: Aquí no podría usar MIN(precio), necesitaría GROUP BY.
  18. Lista el nombre y el precio del producto más caro. (Utiliza solo las cláusulas ORDER BY Y LIMIT). NOTA: Aquí no podría usar MAX(precio), necesitaría GROUP BY.
  19. Lista el nombre de todos los productos del fabricante cuyo código de fabricante es igual a 2. 21.
    Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los productos de la base de datos.
  20. Devuelve una lista con el código del producto, nombre del producto, código del fabricante y nombre del fabricante, de todos los productos de la base de datos.
  21. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más barato.
  22. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más caro.
  23. Devuelve una lista de todos los productos del fabricante Lenovo.
  24. Devuelve una lista de todos los productos del fabricante Crucial que tengan un precio mayor que 200€.
  25. Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packardy Seagate. Sin utilizar el operador IN.
  26. Devuelve un listado con todos los productos de los fabricantes Asus, Hewlett-Packardy Seagate. Utilizando el operador IN.
  27. Devuelve un listado con el nombre y el precio de todos los productos de los fabricantes cuyo nombre acabe por la vocal e.
  28. Devuelve un listado con el nombre y precio de todos los productos cuyo nombre de fabricante contenga el carácter w en su nombre.
  29. Devuelve un listado con el nombre de producto, precio y nombre de fabricante, de todos los productos que tengan un precio mayor o igual a 180€. Ordena el resultado, en primer lugar, por el precio (en orden descendente) y, en segundo lugar, por el nombre (en orden ascendente).
  30. Devuelve un listado con el código y el nombre de fabricante, sólo de aquellos fabricantes que tienen productos asociados en la base de datos.
  31. Devuelve un listado de todos los fabricantes que existen en la base de datos, junto con los productos que tiene cada uno de ellos. El listado deberá mostrar también a aquellos fabricantes que no tienen productos asociados.
  32. Devuelve un listado en el que sólo aparezcan aquellos fabricantes que no tienen ningún producto asociado. 36. Devuelve todos los productos del fabricante Lenovo. (Sin utilizar INNER JOIN).
  33. Devuelve todos los datos de los productos que tienen el mismo precio que el producto más caro del fabricante Lenovo. (Sin usar INNER JOIN).
  34. Lista el nombre del producto más caro del fabricante Lenovo.
  35. Lista el nombre del producto más barato del fabricante Hewlett-Packard.
  36. Devuelve todos los productos de la base de datos que tienen un precio mayor o igual al producto más caro del fabricante Lenovo.
  37. Lista todos los productos del fabricante Asus que tienen un precio superior al precio medio de todos sus productos.
    Consultas resumen:
  38. Devuelve el número total de alumnos existentes.
  39. Calcula cuántos alumnos nacieron en 1999.
  40. Calcula cuántos profesores/as hay en cada departamento. El resultado sólo debe mostrar dos columnas, una con el nombre del departamento y otra con el número de profesores/as que hay en ese departamento. El resultado sólo debe incluir los departamentos que tienen profesores/as asociados y tendrá que estar ordenado de mayor a menor por el número de profesores/as.
  41. Devuelve un listado con todos los departamentos y el número de profesores/as que hay en cada uno de ellos.
    Tenga en cuenta que pueden existir departamentos que no tienen profesores asociados. Estos departamentos también deben aparecer en el listado.
  42. Devuelve un listado con el nombre de todos los grados existentes en la base de datos y el número de asignaturas que tiene cada uno. Ten en cuenta que pueden existir grados que carecen de asignaturas asociadas. Estos grados también deben aparecer en el listado. El resultado deberá estar ordenado de mayor a menor por el número de asignaturas.
  43. Devuelve un listado con el nombre de todos los grados existentes en la base de datos y el número de asignaturas que tiene cada uno de los grados que tengan más de 40 asignaturas asociadas.
  44. Devuelve un listado que muestre el nombre de los grados y la suma del número total de créditos existentes para cada tipo de asignatura. El resultado debe tener tres columnas: nombre del grado, tipo de asignatura y la suma de los créditos de todas las asignaturas que existen de este tipo.
  45. Devuelve un listado que muestre cuántos alumnos se han matriculado de alguna asignatura en cada uno de los cursos escolares. El resultado tendrá que mostrar dos columnas, una columna con el año de inicio del curso escolar y otra con el número de alumnos matriculados.
  46. Devuelve un listado con el número de asignaturas que imparte cada profesor/a. El listado debe tener en cuenta a aquellos profesores/as que no imparten ninguna asignatura. El resultado mostrará cinco columnas: id, nombre, primer apellido, segundo apellido y número de asignaturas. El resultado estará ordenado de mayor a menor por el número de asignaturas.
  47. Devuelve todos los datos del alumno/a más joven.
  48. Devuelve un listado con los profesores/as que tienen un departamento asociado y que no imparten ninguna asignatura.

NOTA: Una vez creadas las bases de datos, llenaremos las tablas con datos de prueba para
verificar que las relaciones son correctas.
Recursos
Para verificar que tu diseño es correcto, efectúa las siguientes consultas y comprueba que devuelven resultados correctos:
Óptica:
• Lista el total de facturas de un cliente/a en un período determinado.
• Lista los diferentes modelos de gafas que ha vendido un empleado durante un año.
• Lista los distintos proveedores que han suministrado gafas vendidas con éxito por la óptica.
Pizzería:
• Lista cuántos productos de categoría 'Bebidas' se han vendido en una determinada localidad.
• Lista cuántos pedidos ha efectuado un determinado empleado/a.

MongoDB
S203ex1 - Óptica
Una óptica, llamada "Cul de Ampolla", quiere informatizar la gestión de los clientes/as y ventas de gafas.
• En primer lugar, la óptica quiere saber cuál es el proveedor de cada una de las gafas. En concreto quiere saber de cada proveedor:
• El nombre
• La dirección (calle, número, piso, puerta, ciudad, código postal y país)
• Teléfono
Fax
• NIF
• La política de compras de la óptica se basa en que las gafas de una marca se comprarán a un único proveedor (así podrá sacar mejores precios), pero pueden comprar gafas de varias marcas a un proveedor. De las gafas quiere saber:
• La marca.
• La graduación de cada uno de los cristales.
• El tipo de montura (flotante, pasta o metálica).
• El color de la montura.
• El color de cada cristal.
• El precio.
• De los clientes/as quiere almacenar:
• El nombre.
• La dirección postal.
• El teléfono.
• El correo electrónico.
• La fecha de registro.
• Cuando llega un/a cliente/a nuevo, almacenar el/la cliente/a que le ha recomendado el
establecimiento (siempre que alguien le haya recomendado).
• Nuestro sistema deberá indicar quién ha sido el empleado/a que ha vendido cada anteojo.

S203ex2 - Pizzería
Te han contratado para diseñar una web que permita realizar pedidos de comida a domicilio por Internet.
• Ten en cuenta las siguientes indicaciones para modelar cómo sería la base de datos del
proyecto:
• Para cada cliente/a almacenamos un identificador único:
• Nombre.
• Apellidos.
• Dirección.
• Código postal.
• Localidad.
• Provincia.
• Número de teléfono.
• Los datos de localidad y provincia estarán almacenados en tablas separadas. Sabemos que una localidad pertenece a una única provincia y que una provincia puede tener muchas localidades.
Para cada localidad se almacena un identificador único y un nombre. En cada provincia
almacenamos un identificador único y un nombre.
• Una persona puede realizar muchos pedidos, pero un único pedido sólo puede ser realizado por una única persona. De cada pedido se almacena un identificador único:
• Fecha/hora.
• Si el pedido es para reparto a domicilio o para recogerlo en tienda.
• La cantidad de productos que se han seleccionado de cada tipo.
• El precio total.
Un pedido puede constar de uno o varios productos.
• Los productos pueden ser pizzas, hamburguesas y bebidas. De cada producto se almacena
un identificador único:
• Nombre.
• Descripción.
• Imagen.
Precio.
En el caso de las pizzas existen varias categorías que pueden cambiar de nombre a lo largo del año. Una pizza sólo puede estar dentro de una categoría, pero una categoría puede tener muchas pizzas.
• De cada categoría se almacena un identificador único y un nombre. Un pedido es
gestionado por una única tienda y una tienda puede manejar muchos pedidos. De cada tienda se almacena un identificador único:
• Dirección.
• Código postal.
• Localidad.
• En una tienda pueden trabajar muchos empleados y un empleado sólo puede trabajar en una tienda. De cada empleado/a, se almacena un identificador único:
• Nombre.
• Apellidos.
• NIF.
• Teléfono.
• Si trabaja como cocinero/ao repartidor/a. Para los pedidos de reparto a domicilio
interesa guardar quién es el repartidor/a que hace la entrega del pedido y la fecha/hora del
momento de la entrega.

S203N2 - YouTube
Trataremos de hacer un modelo sencillo de cómo sería la base de datos para una versión reducida de YouTube.
• De cada usuario/a guardamos un identificador único:
• Email.
• Password.
• Nombre de usuario/a.
• Fecha de nacimiento.
Sexo.
País.
• Código postal.
Un usuario/a publica vídeos. De cada vídeo guardamos un identificador único:
• Un título.
• Una descripción.
• Un tamaño.
• El nombre del archivo de vídeo.
• Duración del vídeo.
• El número de reproducciones.
• El número de likes.
• El número de dislikes.
• Un vídeo puede tener tres estados diferentes: público, oculto y privado. Un vídeo puede tener muchas etiquetas.
Una etiqueta se identifica por un identificador único y un nombre de etiqueta. Interesa guardar quién es el usuario/a que publica el video y en qué fecha/hora lo hace.
Un usuario puede crear un canal. Un canal tiene un identificador único
• Un nombre.
• Una descripción.
• Una fecha de creación.
• Un usuario/a puede suscribirse a los canales de otros usuarios/as. Un usuario puede darle un like o dislike a un video una única vez. Habrá que llevar un registro de los usuarios/as que le han
dado like y dislike a un determinado video y en qué fecha/hora lo hicieron.
• Un usuario/a puede crear playlists con los vídeos que le gustan. Cada playlist tiene un identificador único:
• Un nombre.
• Una fecha de creación.
• Un estado que indica que puede ser pública o privada.
• Un usuario/a puede escribir comentarios en un vídeo determinado. Cada comentario está identificado
por un identificador único:
• El texto del comentario.
• La fecha/hora en la que se realizó.
• Un usuario puede marcar un comentario como me gusta o no me gusta. Habrá que llevar un registro de los usuarios/as que han marcado un comentario cómo me gusta/no me gusta, y en qué fecha/hora lo hicieron.

S204 - MongoDB queries

Descripción
Tenemos una colección de Objetos Restaurante en la ciudad de Nueva York, y necesitamos algunas consultas... ¿puedes ayudarnos?

  1. Escribe una consulta para mostrar todos los documentos en la colección Restaurantes.

  2. Escribe una consulta para mostrar restaurante_id, name, borough y cuisine para todos los documentos en la colección
    Restaurantes.

  3. Escribe una consulta para mostrar el restaurante_id, name, borough y cuisine, pero excluye el campo_id por todos los
    documentos en la colección Restaurantes.

  4. Escribe una consulta para mostrar restaurante_id, name, borough y zip code, pero excluye el campo_id para todos los
    documentos en la colección Restaurantes.

  5. Escribe una consulta para mostrar todos los restaurantes que están en el Bronx.

  6. Escribe una consulta para mostrar los primeros 5 restaurantes que están en el Bronx.

  7. Escribe una consulta para mostrar el próximo 5 restaurantes después de saltar los primeros 5 del Bronx.

  8. Escribe una consulta para encontrar los restaurantes que tienen un resultado de más de

    1. Escribe una consulta para encontrar los restaurantes que tienen un resultado de más de 80 pero menos que 100.
  9. Escribe una consulta para encontrar a los restaurantes que se localizan en valor de latitud menos de -95.754168.

  10. Escribe una consulta de MongoDB para encontrar los restaurantes que no preparan ninguna cuisine de 'American'
    y su calificación es superior a 70 y longitud inferior a -65.754168.

  11. Escribe una consulta para encontrar a los restaurantes que no preparan ninguna cuisine de 'American' y consiguieron
    un marcador más de 70 y localizado en la longitud menos que -65.754168. Nota: Realiza esta consulta sin utilizar
    $and operador.

  12. Escribe una consulta para encontrar los restaurantes que no preparan ninguna cuisine de 'American' y obtuvieron un
    punto de grado 'A' no pertenece a Brooklyn. Se debe mostrar el documento según la cuisine en orden descendente.

  13. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes que contienen
    'Wil' como las tres primeras letras en su nombre.

  14. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes que contienen
    'ces' como las últimas tres letras en su nombre.

  15. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes que contienen
    'Reg' como tres letras en algún lugar en su nombre.

  16. Escribe una consulta para encontrar los restaurantes que pertenecen al Bronx y prepararon cualquier plato americano o
    chino.

  17. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes que

  18. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes que
    no pertenecen a Staten Island o Queens o Bronx o Brooklyn.

  19. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes
    que consigan un marcador que no es más de 10.

  20. Escribe una consulta para encontrar el restaurante_id, name, borough y cuisine para aquellos restaurantes que preparan
    pescado excepto 'American' y 'Chinees' o el name del restaurante comienza con letras 'Wil'.

  21. Escribe una consulta para encontrar el restaurante_id, name, y gradas para aquellos restaurantes que consigan un
    grado "A" y un score 11 en datos de estudio ISODate "2014-08-11T00:00:00Z"

  22. Escribe una consulta para encontrar el restaurante_id, name y gradas para aquellos restaurantes donde el 2º elemento
    de variedad de grados contiene un grado de "A" y marcador 9 sobre un ISODate "2014-08-11T00:00:00Z".

  23. Escribe una consulta para encontrar el restaurante_id, name, dirección y ubicación geográfica para aquellos restaurantes donde
    el segundo elemento del array coord contiene un valor más de 42 y hasta 52.

  24. Escribe una consulta para organizar el nombre de los restaurantes en orden ascendente junto con todas las
    columnas.

  25. Escribe una consulta para organizar el nombre de los restaurantes en orden descendente junto con todas las
    columnas.

  26. Escribe una consulta para organizar el nombre de la cuisine en orden ascendente y por el mismo barrio de cuisine. Orden
    descendente

  27. Escribe una consulta para saber todas las direcciones que no contienen la calle.

  28. Escribe una consulta que seleccionará todos los documentos en la colección de restaurantes donde el valor del campo
    coord es Double.

  29. Escribe una consulta que seleccionará el restaurante_id, name y grade para aquellos restaurantes que devuelvan
    O como resto después de dividir el marcador por 7.

  30. Escribe una consulta para encontrar el name de restaurante, borough, longitud y altitud y cuisine para aquellos
    restaurantes que contienen 'mon' como tres letras en algún lugar de su nombre.

  31. Escribe una consulta para encontrar el name de restaurante, borough, longitud y latitud y cuisine para aquellos
    restaurantes que contienen 'Mad' como primeras tres letras de su nombre.

Designs and tests select queries for optic, pizza entity relation databases from terminal

Optic:

  • Lista el total de facturas de un cliente/a en un período determinado.

  • Lista los diferentes modelos de gafas que ha vendido un empleado durante un año.

select g.id, g.product_material, s.vendor_id from optic.glasses g left join optic.sale s on g.id = s.product_id where s.vendor_id =1 and s.sale_date_time like 2023%;

  • Lista a los diferentes proveedores que han suministrado gafas vendidas con éxito por la óptica.

select b.brand_provider_id from optic.brand b left join optic.glasses g on b.id = g.product_brand_id left join optic.sale s on g.id = s.product_id;

Pizza:

  • Lista cuántos productos de categoría 'Bebidas' se han vendido en una determinada localidad.
  • depends on : #8

use pizza; SELECT l.locality_name AS 'Locality', p.product_name AS 'Product', p.product_category_id AS 'Product Id', s.id AS 'Shop ID', po.order_local_date_time AS 'Sale time', po.order_quantity AS 'Quantity', pp.order_id AS 'Order id' FROM locality l JOIN store s JOIN product p JOIN purchase_order po JOIN product_has_order pp ON l.id = s.store_locality_id AND s.id = po.store_id AND p.id = pp.product_id AND po.id = pp.order_id WHERE p.product_category_id = 3 AND l.id = 1;

  • Lista cuántos pedidos ha efectuado un determinado empleado/a.

use pizza; SELECT v.vendor_name AS 'Vendor name', s.id AS 'Store ID', count(po.order_local_date_time) AS 'Total orders' FROM store s JOIN vendor v JOIN purchase_order po ON s.id = v.vendor_store_id AND s.id = po.store_id WHERE v.id = 1;

ER diagram and MySQL Data Types readings

https://www.guru99.com/er-diagram-tutorial-dbms.html
https://disenowebakus.net/tipos-de-datos-mysql.php

er-diagram step by step:

In a university, a Student enrolls in Courses. A student must be assigned to at least one or more Courses. Each course is taught by a single Professor. To maintain instruction quality, a Professor can deliver only one course

entities
[student]
[course]
[professor]

  • enrolling_process log

relation
[student] [course] [professor]

cardinality
[student] * * [course] -||- -||- [professor]

min. attributes
(s.id)
(s.name)

(c.id)
(c.title)

(p.id)
(p.name)

best practices checklist

  • Eliminate any redundant entities or relationships (#13 (comment))
  • You need to make sure that all your entities and relationships are properly labeled
  • There may be various valid approaches to an ER diagram. You need to make sure that the ER diagram supports all the data you need to store
  • You should assure that each entity only appears a single time in the ER diagram
  • Name every relationship, entity, and attribute are represented on your diagram
  • Never connect relationships to each other
  • You should use colors to highlight important portions of the ER diagram

tipos de datos:

  • Datos numéricos

  • TINYINT

  • SMALLINT

  • MEDIUMINT

  • INT o INTEGER

  • BIGINT

  • FLOAT

  • DOUBLE

  • DECIMAL (ideal para almacenar valores monetarios, donde se requiera menor longitud, pero la "máxima exactitud")

  • Datos para guardar cadenas de caracteres (alfanuméricos)

  • CHAR (textos breves, de hasta 255 caracteres de longitud como máximo en caracteres que le definamos, aunque no lo utilicemos, por lo tanto, no es eficiente cuando la longitud del dato que se almacenará en un campo es desconocida a priori. ''Util si estamos seguros de que la longitud siempre será la misma.)

  • VARCHAR (Util cuando la longitud del dato es desconocida, cuando depende de la información que el usuario escribe en campos o áreas de texto de un formulario. Será más eficiente para almacenar registros cuyos valores tengan longitudes variables, ya que si bien gasta uno o dos caracteres por registro para declarar la longitud, esto le permite ahorrar muchos otros caracteres que no serían utilizados.)

  • BINARY

  • VARBINARY (Estos dos tipos de datos son identicos a CHAR y VARCHAR, respectivamente, salvo que almacenan bytes en lugar de caracteres)

  • TINYBLOB

  • TINYTEXT

  • TEXT (Antes de la versión 5.0.3. de MySQL, este campo era el utilizado para descripciones de productos, coméntarios, textos de noticia, y cualquier otro texto largo. Pero, a parir de la posibilidad de utilizar VARCHAR para longitudes de hasta 65.535 caracteres, es de esperar que se utilice cada vez menos este tipo de campo.)

  • LONGTEX

  • BLOB (El campo BLOB es para almacenar directamente "la imagen" (o un archivo comprimido, o cualquier otro archivo binario), no su ruta.)

  • MEDIUMBLOB

  • MEDIUMTEXT

  • LONGBLOB

  • ENUM (Lo que se almacenará no es la cadena de caracteres en sí, sino el número de índice de su posición dentro de la enumeración.)

  • SET (Conjunto. Podemos elegir como valor del campo más de uno de los valores de la lista)

  • Datos para almacenar fechas y horas

  • DATE (AAAA-MM-DD)

  • DATETIME (AAAA-MM-DD HH:MM:SS)

  • TIME (HH:MM:SS, util para calcular tiempos trancurridos entre dos momentos cercanos)

  • TIMESTAMP (puede variar entre tres opciones: AAAA-MM-DD HH:MM:SS, AAAA-MM-DD, AA-MM-DD; posee la particularidad de que podemos definir que su valor se mantenga actualizado automáticamente,cada vez que se inserte o que se actualice un registro. De esa manera, conservaremos siempre en ese campo la fecha y hora de la última actualización de ese dato.)

  • YEAR

  • Atributos de los campos

  • NULL

  • DEFAULT

  • BINARY

  • INDEX (Un índice no es más que una tabla "paralela", que guarda los mismos datos que la tabla original, pero en vez de estar ordenados por orden de inserción o por la clave primaria de la tabla, en el índice se ordenan por el campo que elegimos indexar. La búsqueda se realizará primero en el índice, encontrando rápidamente el título buscado, ya que están todos ordenados y, como resultado, el índice le devolverá al programa MySQL el identificador (id) del registro en la tabla original, para que MySQL vaya directamente a buscar ese registro con el resto de los datos, sin perder tiempo)

  • PRIMARY KEY

  • AUTO_INCREMENT

  • UNIQUE

  • FULLTEXT (examinará el contenido de este campo palabra por palabra, almacenando cada palabra en una celda de una matriz, permitiendo hacer búsquedas de palabras contenidas dentro del campo, y no ya una simple búsqueda de coincidencia total del valor del campo)

questions
ahorro, optimizacion, eficiencia, agilidad¿Qué tipo de dato permitirá consumir menor espacio físico de almacenamiento y brindará la posibilidad de almacenar la cantidad de datos que se espera almacenar en ese campo?
hay que considerar siempre cuál será el valor maximo/minimo que se almacenará dentro de un campo, antes de elegir el tipo de dato más adecuado
existe la posibilidad de duplicar el limite de valor máximo positivo de cada tipo de dato entero, si eliminamos la posibilidad de almacenar valores negativos mediante modificador atributos>UNSIGNED

[Documenting] SQL Syntax review

https://www.w3schools.com/sql/

Practice repetition:

create database;
create database;
create database product;
create database fruits;
create database tulips;
create database regards;
create database shirts;
create database buggy-note_objects;
create database study;
create database shop;
create database dog_heaven;
create database pulse_checkin;

show databases;

  • -show databases; comments
    show databases;
    show databases;

use shop
create table users(
id int,
name varchar(250),
PRIMARY KEY(id)
);

use shirts
create table sizes(
id int,
size enum(S, M, L),
size_description varchar(500),
PRIMARY KEY(id)
);

use products
create table electronics(
product_id int,
product_name varchar(250),
product_price float,
product_stock double,
PRIMARY KEY(product_id)
);

alter table products modify column id int auto_increment;

insert into products (product_name, product_price, product_stock) values (“pc”, 980.86, 45);
insert into products (product_name, product_price, product_stock) values (“cell”, 564.86, 45);

select * from products;
select * from products where id=1;
select * from products where product_name=‘pc’;
select * from products where product_name=‘pc’ and product_price >200;
select * from products where product_name=‘pc’ and product_stock<50;

update products set product_name “laptop1”where id=1;
update products set product_name “cellphone1” where id=2;

delete from products where id=2;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.