sql >> Database >  >> RDS >> Mysql

Een-op-veel-relatie in MySQL - hoe een model te bouwen?

create table Area(id int primary key auto_increment, name varchar(100));

create table Map(id int primary key auto_increment, 
                 area_id int not null,
                 name varchar(100),
                 foreign key (area_id) references area(id));

SqlFiddle

Elke Map MOET een Area hebben , als area_id is niet null (en is een Foreign key op Area )

Maar je zult niet in staat zijn (en het is ook niet gewenst) om "ten minste één kaart" voor elk gebied te hebben.

Op een dag moet je een Area . maken . En het heeft geen Map op dit moment. Of voer "regelmatige" controles uit om de gebieden zonder kaart te zien.

Misschien wil je een Area . verwijderen , als het geen gerelateerde Map meer heeft , wanneer u een Map . verwijdert .



  1. Oracle JDeveloper 12c gebruiken met Oracle Database 12c op Oracle Cloud Platform, deel 1

  2. Illegale mix van sorteringen (utf8_unicode_ci,IMPLICIT) en (utf8_general_ci,IMPLICIT) voor bewerking '='

  3. Prestaties van MySQL-query's verbeteren - zware wiskundequery

  4. voorwaardelijke unieke beperking