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
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';