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.