sql >> Database >  >> RDS >> Mysql

Hoe tabellen te maken met een N:M-relatie in MySQL?

Veel-op-één (producten kunnen maar één winkel hebben)

create table store(
    id int unsigned not null auto_increment,
    store_name varchar(30) not null,
    primary key(id)
);

Query OK, 0 rows affected (0.02 sec)

create table product(
    id int unsigned not null auto_increment,
    store_id int unsigned not null,
    product_name varchar(30) not null,
    price float not null,
    primary key(id),
    constraint product_store foreign key (store_id) references store(id)
);

Query OK, 0 rows affected (0.02 sec)

Veel-op-veel (producten kunnen in veel winkels liggen)

create table store(
    id int unsigned not null auto_increment,
    store_name varchar(30) not null,
    primary key(id)
);

Query OK, 0 rows affected (0.04 sec)

create table product(
    id int unsigned not null auto_increment,
    store_id int unsigned not null,
    product_name varchar(30) not null,
    price float not null,
    primary key(id)
);

Query OK, 0 rows affected (0.01 sec)

create table product_store (
    product_id int unsigned not null,
    store_id int unsigned not null,
    CONSTRAINT product_store_store foreign key (store_id) references store(id),
    CONSTRAINT product_store_product foreign key (product_id) references product(id),
    CONSTRAINT product_store_unique UNIQUE (product_id, store_id)
)

Query OK, 0 rows affected (0.02 sec)


  1. Mysql ERROR 1005 (HY000):Kan tabel 'tmp' niet maken (errno:13)

  2. afbeelding uploaden naar mysql-database php

  3. 2 manieren om een ​​getal op te maken met voorloopnullen in Oracle

  4. Hoe te controleren of PostgreSQL-array waarde bevat?