sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan man bygger relationelle tabeller på en tosidet markedsplads

Du skal forstå den grundlæggende måde at registrere information på relationelt, dvs. i tabeller.

Find tilstrækkelige tabeller

Bare hav en basistabel for hver erklæring, du skal bruge for at beskrive en forretningssituation:

User(user_id,name,...)
    // User [user_id] is named [name]
Contacted(contact_id,item,offer_id)
    // user [contact_id] was contacted re item [item] offered by user [offer_id]
...etc...

Parametrene for sætningen er kolonnerne i tabellen.

Hvis du vil tale om de dele af noget, som du tænker på at have flere dele (heterogene eller homogene), betyder det bare, at nogle udsagn vil involvere en ting og dens dele:

table request(request_id,start_date,end_date,...)
    // [request_id] goes from [start_date] to [end_date] and ...
table requested(request_id,item_id,person_id,...)
    // person [person_id] requested item [item_id] in request [request_id]

Hvad er der i en tabel

En basistabels værdi er de rækker, der gør dens udsagn sand. (Hvert forespørgselsunderudtryk har også en sætning, og dens værdi er de rækker, der gør dens sætning sand.)

Forveksle ikke tabelopgørelser med forretningsregler. Forretningsregler angiver sandheder. Men et tabeludsagn er et udsagn, som en eller anden tuple gør sandt (og går i tabellen) eller falsk (udeladt af tabellen). Alle de sande og falske udsagn fra tabellerne fortæller dig alt, hvad du behøver at vide om virksomheden. Forretningsreglerne vil aldrig modsige dem. (Da de altid er sande.)

Omarrangering til bedre borde

En nøgle er et sæt af kolonner, som alle andre kolonner er sådanne funktioner af, men ingen af ​​hvis undersæt har den egenskab. Et bord kan have mere end én nøgle.

For at gøre en database nemmere at opdatere og forespørge på, bør du opdele visse udsagn, der er andre udsagn, der er sammenføjet af AND. Bryd op, indtil hvert udsagn består af et udsagn kun om nøglekolonner OG med udsagn af denne form:

[my_column]=my_function([key_k_column_1],[key_k_column_2],...)

hvor key_k_column_1,... er kolonner med den samme nøgle key_n.

(Sådan en tabel er "i femte normalform", og emnet er "normalisering".)




  1. SQL-opdatering ved dubletnøgleopdatering

  2. Har brug for et tip om simpelt MySQL db-design

  3. I MySQL trigger, er det muligt at indstille en brugervariabel med NEW.col og bruge den i opdateringsforespørgsel?

  4. Kan ikke oprette forbindelse til databasen (000webhost)