Skip to content

Latest commit

 

History

History

Ejemplo-03

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Fullstack con Python > Backend con Python > Sesión 06 > Ejemplo-03

Definiendo una relación muchos a muchos y agregando datos con SQL

OBJETIVOS

  • Dado un modelo entidad-relación definir las tablas y sus relaciones con SQL
  • Dado un formulario web agregar los datos a las tablas con SQL

REQUISITOS

  1. Modelo de entidad-relación:

    Diagrama entidad-relación

  2. Carpeta de repo actualizada

  3. Usar la carpeta de trabajo Clase-06/Ejemplo-03

DESARROLLO

  1. Crea la tabla Usuario usando el archivo sql/tabla-usuario.sql:

    Clase-06/Ejemplo-03 $ docker exec -i mariadb mysql -hlocalhost -uBiblioteca -pBiblioteca Biblioteca < sql/tabla-usuario.sql
    
    Clase-06/Ejemplo-03 $

    Si no hay mensajes de error, entonces el comando se ha ejecutado con éxito.

  2. Crear las tablas Prestamo y LibroPrestamo:

    Conectándose a la base de datos:

    Clase-06/Ejemplo-03 $ docker exec -it -e LANG=C.UTF-8 mariadb mysql -hlocalhost -uBiblioteca -pBiblioteca Biblioteca
    [...]
    MariaDB [Biblioteca]>

    Creando la tabla Prestamo:

    CREATE TABLE Prestamo (id INT PRIMARY KEY AUTO_INCREMENT, idUsuario INT NOT NULL, fechaPre DATE, fechaDev DATE);
    Query OK, 0 rows affected (0.105 sec)

    Creando la tabla LibroPrestamo:

    CREATE TABLE LibroPrestamo (idLibro INT NOT NULL, idPrestamo INT NOT NULL, PRIMARY KEY (idLibro, idPrestamo));
    Query OK, 0 rows affected (0.036 sec)

    Validando la creación de las tablas:

    DESCRIBE Prestamo;
    +-----------+---------+------+-----+---------+----------------+
    | Field     | Type    | Null | Key | Default | Extra          |
    +-----------+---------+------+-----+---------+----------------+
    | id        | int(11) | NO   | PRI | NULL    | auto_increment |
    | idUsuario | int(11) | NO   |     | NULL    |                |
    | fechaPre  | date    | YES  |     | NULL    |                |
    | fechaDev  | date    | YES  |     | NULL    |                |
    +-----------+---------+------+-----+---------+----------------+
    4 rows in set (0.001 sec)
    
    DESCRIBE LibroPrestamo;
    +------------+---------+------+-----+---------+-------+
    | Field      | Type    | Null | Key | Default | Extra |
    +------------+---------+------+-----+---------+-------+
    | idLibro    | int(11) | NO   | PRI | NULL    |       |
    | idPrestamo | int(11) | NO   | PRI | NULL    |       |
    +------------+---------+------+-----+---------+-------+
    2 rows in set (0.001 sec)

  3. Agregar los datos del siguiente formulario web a las tablas Prestamo y LibroPrestamo:

    Fomulario:

    Fomulario

    Identificando datos relacionados con la tabla Prestamo:

    Fomulario

    Agregando datos a la tabla Prestamo:

    INSERT INTO Prestamo VALUES (null, 1, "2019-06-05", null);
    Query OK, 1 row affected (0.001 sec)

    Identificando datos relacionados con la tabla LibroPrestamo:

    Fomulario

    Agregando datos a la tabla LibroPrestamo:

    INSERT INTO LibroPrestamo VALUES (1, 1), (2, 1);
    Query OK, 2 rows affected (0.001 sec)
    Records: 2  Duplicates: 0  Warnings: 0

    Validando resultados:

    select * from Prestamo;
    +----+-----------+------------+----------+
    | id | idUsuario | fechaPre   | fechaDev |
    +----+-----------+------------+----------+
    |  1 |         1 | 2019-06-05 | NULL     |
    +----+-----------+------------+----------+
    1 row in set (0.000 sec)
    
    select * from LibroPrestamo;
    +---------+------------+
    | idLibro | idPrestamo |
    +---------+------------+
    |       1 |          1 |
    |       2 |          1 |
    +---------+------------+
    2 rows in set (0.000 sec)