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
Test Connection y confirmar que se conecto correctamente!
Paso 2 - Crear Nueva Base de Datos
Paso 3 - Crear Tabla notes
Paso 4 - Crear Campos id (Columna)
id
Asignar Primary Key a id
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.
Y dar click a Salvar!
Con esto se genera el código necesario para crear el unique field
Por ultimo click en Persist
.
Así quedan los campos de la tabla users
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
Y asignar en la pantalla el foreign key
así:
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
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';