Relaciones de tablas en MySQL

publicado por: user52024

Tengo una gran duda acerca de las relaciones en mysql. Verán, estoy creando un sitio que se parezca a un e-commerce, es para un colega.

Estoy creando una tabla llamada categorias y otra llamada subcategorias. En la tabla subcategorias tengo una columna llamada categoria_id, la cual contendrá la ID de la categoría seleccionada. Entonces así, podre mostrar las subcategorias con sus categorias respectivas.

Un ejemplo: Accesorios para celulares ( categoría ) , Cargadores (subcategoria) y así sucesivamente.

¿Es necesario crear una relación entre la ID de la categoría, y el categoria_id de la tabla “subcategorias”? espero haberme explicado correctamente.

Saludos.

solución

Si por necesario quieres decir obligatorio, la respuesta es no, es decir, puedes crear dos tablas y que ellas aunque compartan información, no tengan ninguna relación entre si.

Sin embargo, es extremadamente aconsejable que SI establezcas una relación entre ambas y cuides la Integridad Referencial de tus datos, ya que de no hacerlo sería técnicamente posible insertar datos de subcategorías que no tuvieran una categoría existente.

Te paso la documentación de MySQL sobre las Foreign Keys.

EDITADO: Te paso un ejemplo que impedirá que puedas tener una subcategoría sin un padre categoría.

CREATE TABLE categoria (
    id INT NOT NULL,
    nom_categoria VARCHAR(15) NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE sub_categoria(
    id INT,
    nom_subcategoria VARCHAR(15) NOT NULL,
    categoria_id INT,
    INDEX par_ind (categoria_id),
    FOREIGN KEY (categoria_id)
        REFERENCES categoria(id)
        ON DELETE CASCADE
) ENGINE=INNODB;
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *