Database Tables and Indexes

Has aprendido lo suficiente de los fundamentos en este momento para comenzar a trabajar en tu primer mini proyecto. 隆Hagamos una aplicaci贸n de notas! Comenzaremos con la estructura inicial de la base de datos, que nos dar谩 la oportunidad de revisar los 铆ndices de MySQL.

Que aprenderemos

  • Table Relationships
  • Indexes

Vamos a crear nueva base de datos:

  • mis_notas Con las Tablas:
  • notes
    • id INT, Primary Key, Auto Increment
    • body Text not null
    • user_id Foreign_Key users(id)
  • users
    • id INT, Primary Key, Auto Increment
    • name Varchar(255), not null
    • email Varchar(255), not null, (unique)

Todo lo vamos hacer a nivel base de datos, con el Database Manager DBeaver.

Paso 1 - Conectarnos a MySQL Local Host

Widgets Test Connection y confirmar que se conecto correctamente!

Paso 2 - Crear Nueva Base de Datos

Widgets

Paso 3 - Crear Tabla notes

Widgets

Paso 4 - Crear Campos id (Columna)

Widgets

id

Widgets

Asignar Primary Key a id

Widgets

Paso 5 - Crear Tabla users

Con el mismo procedimiento anterior creamos los campos id y name.

Hacer el campo de email unique

Tenemos que generar este c贸digo: CREATE UNIQUE INDEX users_email_IDX USING BTREE ON mis_notas.users (email); Para generar este c贸digo, estando en las propiedades de la tabla users, dar click derecho en el campo email y escoger la opci贸n new index from selection y seleccionar la opci贸n (check box) de unique. Widgets

Y dar click a Salvar! Widgets Con esto se genera el c贸digo necesario para crear el unique field

Por ultimo click en Persist. Widgets

As铆 quedan los campos de la tabla users

Widgets

Paso 6 - Llave for谩nea user_id en tabla notes

Para la llave for谩nea (foreign key) user_id para poder relacionar que un usuario creo esta nota, agregamos el campo user_id a la tabla notes

Para Entrar a la pantalla de foreign key en DBeaver Widgets

Y asignar en la pantalla el foreign key as铆: Widgets

ALTER TABLE mis_notas.notes ADD CONSTRAINT notes_FK FOREIGN KEY (user_id) REFERENCES mis_notas.users(id) ON DELETE CASCADE;

Usamos la propiedad CASCADE de la base de datos MySQL para poder borrar todas las notas relacionadas con el usuario, cuando decidimos borrar al un usuario de nuestra base de datos, tabla users.

As铆 quedan los campos de la tabla notes

Widgets

Todo el DDl queda as铆

DDL (El lenguaje de definici贸n de datos)

CREATE TABLE `notes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `body` text NOT NULL,
  `user_id` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `notes_FK` (`user_id`),
  CONSTRAINT `notes_FK` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Tabla para las notas';