sql >> Database >  >> RDS >> Mysql

MySQL voegt automatisch een rij in table2 in op een insert to table1

U zou triggers nodig hebben om het record "automatisch" in een aparte tabel in te voegen.

Het invoegen van het record in UserPrivacy met een aparte query zou de meest gebruikelijke manier zijn om dit te implementeren.

Als het een één-op-één-relatie is, kunt u deze in dezelfde tabel plaatsen om meer eenvoudige zoekopdrachten mogelijk te maken (join is niet vereist).

Beslissingen, beslissingen ...

Bij een één-op-(nul op één) relatie zijn er meer factoren waarmee u rekening moet houden.

Als de UserPrivacy-tabel groot is, kan het zinvol zijn om deze in een aparte tabel te plaatsen om ruimte te besparen. Dit zou ook meer genormaliseerd zijn.

Als je vaak iets opvraagt ​​als "Geef me alle gebruikers die geen PrivacyData hebben", dan is het misschien logisch om het in een aparte tabel te zetten. Aangezien indexen geen NULL-waarden bevatten (standaard), zou het sneller zijn om een ​​JOIN uit te voeren naar een aparte tabel. De oplossing is natuurlijk om een ​​andere waarde dan NULL te gebruiken om "geen privacy-instellingen" weer te geven, maar een lage kardinaliteit heeft ook een negatief effect op de prestaties. Aparte tabellen zouden in dit geval het beste zijn.

Als de privacygegevens regelmatig worden bijgewerkt, maar niet de gebruikersgegevens, zouden afzonderlijke tabellen rijvergrendelingen op de gebruikerstabel voorkomen, en updates zijn sneller op kleinere tabellen, wat de prestaties zou kunnen verbeteren.

Als u de UserPrivacy-gegevens vaak nodig had zonder de UserData, of omgekeerd, wilt u ze misschien scheiden.

Toch kan dit voortijdige optimalisatie zijn. Misschien wilt u ze gewoon scheiden als ze beter bij uw modellen passen. Overweeg de eenvoud van het in dezelfde tabel houden versus de problemen van prestaties, grootte en leesbaarheid.

Als de relatie één-op-(nul tot veel) was, zou u natuurlijk een aparte tabel willen, maar voor één-op-(nul tot één) is dit optioneel.

Eindelijk...

Wees niet bang om ze te scheiden, zolang er een reden voor is.



  1. Converteer mysql-database naar Oracle

  2. wijs alle while-resultaten toe aan een variabele

  3. MySQL-query niet ingevoegd wanneer PHP-variabele enkele aanhalingstekens bevat

  4. Vervolg Pro met Mysql in Docker