sql >> Database teknologi >  >> RDS >> Mysql

MySQL indsætter automatisk en række i tabel2 på en indsættelse til tabel1

Du vil kræve udløsere for "automatisk" at indsætte posten i en separat tabel.

At indsætte posten i UserPrivacy med en separat forespørgsel ville være den mest almindelige måde at implementere dette på.

Hvis det er en en-til-en-relation, giver det mulighed for flere simple forespørgsler ved at placere den i samme tabel (ingen join nødvendig).

Beslutninger, beslutninger ...

Med et 1-til-(nul til 1) forhold er der flere faktorer at overveje.

Hvis UserPrivacy-tabellen er stor, kan det være fornuftigt at lægge den i en separat tabel for at spare plads. Dette ville også være mere normaliseret.

Hvis du ofte spurgte til noget som "Giv mig alle de brugere, der ikke har PrivacyData", så kan det være fornuftigt at sætte det i en separat tabel. Da indekser ikke inkluderer NULL-værdier (som standard), ville det være hurtigere at lave en JOIN til en separat tabel. Selvfølgelig er opgaven at bruge en anden værdi end NULL til at repræsentere "ingen privatlivsindstillinger", men lav kardinalitet påvirker også ydeevnen negativt. Separate tabeller ville være bedst i dette tilfælde.

Desuden, hvis privatlivsdataene blev opdateret ofte, men ikke brugerdataene, ville separate tabeller forhindre rækkelåse på brugertabellen, og opdateringer er hurtigere på mindre tabeller, hvilket kan forbedre ydeevnen.

Hvis du ofte havde brug for brugerdataene uden brugerdataene eller omvendt, vil du måske adskille dem.

Alligevel kan dette være for tidlig optimering. Du vil måske bare skille dem ad, hvis de passer bedre til dine modeller. Overvej hvor enkelt det er at holde det i samme tabel i forhold til spørgsmålene om ydeevne, størrelse og læsbarhed.

Hvis forholdet var en-til-(nul til mange), ville du naturligvis have en separat tabel, men for en-til-(nul til en), er det valgfrit.

Endelig...

Vær ikke bange for at adskille dem, så længe der er en grund.



  1. Tilslutning af en 32-bit applikation til jBASE

  2. Wierd og irriterende fejl:Kald til udefineret funktion mysql_query()

  3. SQL-visninger

  4. CAST og IsNumeric