sql >> Database >  >> RDS >> Mysql

MySQL automatisch verhogen tussen tabellen

Het lijkt erop dat u categorieën en onderwerpen in twee afzonderlijke tabellen wilt onderscheiden, maar dat de id's van beide in een andere tabel worden vermeld likes om gebruikers te helpen een categorie of een onderwerp leuk te vinden.

Wat u kunt doen, is een superentiteitstabel maken met subtypen categories en topics . De automatisch verhoogde sleutel wordt gegenereerd in de superentiteitstabel en ingevoegd in slechts een van de twee subtypetabellen (op basis van of het een categorie of een onderwerp is).

De subtypetabellen verwijzen naar deze superentiteit via het automatisch vermeerderde veld in een 1:1-relatie.

Op deze manier kunt u eenvoudig de super-entiteitstabel koppelen aan de likes tabel alleen gebaseerd op één kolom (die een categorie of een onderwerp kan vertegenwoordigen), en geen id in de subtype-tabellen zullen in beide aanwezig zijn.

Hier is een vereenvoudigd voorbeeld van hoe u dit kunt modelleren:

Met dit model kunt u de relatie tussen categorieën en onderwerpen behouden, maar beide entiteiten veralgemenen in de superentity tafel.

Een ander voordeel van dit model is dat u gemeenschappelijke velden in de subtypetabellen kunt abstraheren in de superentiteitstabel. Zeg bijvoorbeeld dat categories en topics beide bevatten de velden title en url :je zou deze velden in de superentity . kunnen plaatsen tabel omdat ze gemeenschappelijke kenmerken van zijn subtypen zijn. Zet alleen velden die specifiek zijn voor de subtypetabellen IN de subtypetabellen.



  1. Voeg ontbrekende records van de ene tabel naar de andere in met mysql

  2. MYSQL sum() voor verschillende rijen

  3. MySQL/SQL eerste 40 karakters van een tekstveld ophalen?

  4. Hoe een CSV-bestand in een MySQL-tabel te importeren