sql >> Database >  >> RDS >> PostgreSQL

Hoe relationele tabellen te bouwen in een tweezijdige marktplaats?

U moet de basismanier begrijpen om informatie relationeel op te nemen, dat wil zeggen in tabellen.

Voldoende tafels vinden

Zorg dat je een basistabel hebt voor elke stelling die je nodig hebt om een ​​zakelijke situatie te beschrijven:

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

De parameters van het statement zijn de kolommen van de tabel.

Als je wilt praten over de delen van iets waarvan je denkt dat het meerdere delen heeft (heterogeen of homogeen), betekent dat alleen maar dat sommige uitspraken een ding en zijn delen omvatten:

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]

Wat zit er in een tabel

De waarde van een basistabel is de rijen die de verklaring waar maken. (Elke query-subexpressie heeft ook een instructie en de waarde ervan is de rijen die de instructie waar maken.)

Verwar tabeloverzichten niet met bedrijfsregels. Bedrijfsregels geven waarheden aan. Maar een tabelinstructie is een verklaring die een of andere tuple waar maakt (en in de tabel gaat) of onwaar (wordt weggelaten uit de tabel). Alle ware en valse verklaringen uit de tabellen vertellen u alles wat u moet weten over het bedrijf. De bedrijfsregels zullen ze nooit tegenspreken. (Omdat ze altijd waar zijn.)

Herschikken naar betere tafels

Een sleutel is een verzameling kolommen waarvan alle andere kolommen dergelijke functies zijn, maar waarvan geen enkele subset die eigenschap heeft. Een tabel kan meer dan één sleutel hebben.

Om een ​​database gemakkelijker bij te werken en te doorzoeken, moet u bepaalde verklaringen opsplitsen die andere verklaringen zijn die door AND worden samengevoegd. Splits op totdat elke verklaring alleen uit een verklaring bestaat over sleutelkolommen EN met verklaringen van deze vorm:

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

waarbij key_k_column_1,... kolommen zijn met dezelfde sleutel key_n.

(Zo'n tabel is "in de vijfde normaalvorm" en het onderwerp is "normalisatie".)




  1. Haal de laatste niet-null-record van elke kolom op voor elke record_id in MySQL

  2. Hoe doe je een Left Outer join met Laravel?

  3. SQLAlchemy DateTime tijdzone

  4. Hoe mysql impliciete commit te voorkomen?