PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie man relationale Tabellen in einem zweiseitigen Marktplatz erstellt

Sie müssen verstehen, wie Informationen relational, dh in Tabellen, erfasst werden.

Ausreichende Tische finden

Haben Sie einfach eine Basistabelle für jede Aussage, die Sie zur Beschreibung einer Geschäftssituation benötigen:

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

Die Parameter der Anweisung sind die Spalten der Tabelle.

Wenn Sie über die Teile von etwas sprechen wollen, von dem Sie denken, dass es mehrere Teile hat (heterogen oder homogen), bedeutet das nur, dass einige Aussagen ein Ding und seine Teile betreffen:

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]

Was steht in einer Tabelle

Der Wert einer Basistabelle sind die Zeilen, die ihre Aussage wahr machen. (Jeder Teilausdruck einer Abfrage hat auch eine Aussage, und sein Wert sind die Zeilen, die seine Aussage wahr machen.)

Verwechseln Sie Tabellenanweisungen nicht mit Geschäftsregeln. Geschäftsregeln sagen Wahrheiten aus. Aber eine Tabellenanweisung ist eine Aussage, die ein Tupel wahr (und in die Tabelle einfügt) oder falsch (aus der Tabelle weggelassen) macht. Alle wahren und falschen Aussagen aus den Tabellen sagen Ihnen alles, was Sie über das Geschäft wissen müssen. Die Geschäftsregeln werden ihnen niemals widersprechen. (Da sie immer wahr sind.)

Neuanordnung zu besseren Tabellen

Ein Schlüssel ist eine Menge von Spalten, von denen alle anderen Spalten solche Funktionen sind, aber keine der Teilmengen diese Eigenschaft hat. Eine Tabelle kann mehr als einen Schlüssel haben.

Um das Aktualisieren und Abfragen einer Datenbank zu vereinfachen, sollten Sie bestimmte Anweisungen aufteilen, die andere Anweisungen sind, die durch AND verbunden sind. Unterbrechen Sie, bis jede Anweisung nur aus einer Anweisung über Schlüsselspalten besteht, die mit Anweisungen dieser Form UND-verknüpft sind:

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

wobei key_k_column_1,... Spalten desselben Schlüssels key_n sind.

(Eine solche Tabelle ist „in fünfter Normalform“ und das Thema ist „Normalisierung“.)