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

Come costruire tabelle relazionali in un mercato bilaterale

È necessario comprendere il modo di base per registrare le informazioni in modo relazionale, ad esempio nelle tabelle.

Trovare tabelle sufficienti

Basta avere una tabella di base per ogni affermazione di cui hai bisogno per descrivere una situazione aziendale:

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...

I parametri dell'istruzione sono le colonne della tabella.

Se vuoi parlare delle parti di qualcosa che pensi abbia più parti (eterogene o omogenee) significa semplicemente che alcune affermazioni coinvolgeranno una cosa e le sue parti:

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]

Cosa c'è in una tabella

Il valore di una tabella di base è costituito dalle righe che rendono vera la sua affermazione. (Ogni sottoespressione di query ha anche un'istruzione e il suo valore sono le righe che rendono vera la sua affermazione.)

Non confondere le istruzioni della tabella con le regole aziendali. Le regole aziendali affermano le verità. Ma un'istruzione table è un'affermazione che una tupla rende vera (e va nella tabella) o falsa (viene lasciata fuori dalla tabella). Tutte le affermazioni vere e false delle tabelle ti dicono tutto ciò che devi sapere sull'attività. Le regole aziendali non le contraddiranno mai. (Dato che sono sempre vere.)

Riorganizzazione in tavoli migliori

Una chiave è un insieme di colonne di cui tutte le altre colonne sono tali funzioni ma nessuno dei cui sottoinsiemi ha quella proprietà. Una tabella può avere più di una chiave.

Per semplificare l'aggiornamento e la query di un database, è necessario suddividere alcune istruzioni che sono altre istruzioni unite da AND. Rompi fino a quando ogni istruzione consiste in un'istruzione solo sulle colonne chiave ANDed con dichiarazioni di questo modulo:

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

dove key_k_column_1,... sono colonne della stessa chiave key_n.

(Tale tabella è "in quinta forma normale" e l'argomento è "normalizzazione".)