Kako razmišljati kao projektant baze
Razmišljanje projektanta baze
Pre CREATE TABLE odgovorite: koje entitete imam, kako su povezani i koje operacije aplikacija najčešće radi? Za hotel: pretraga slobodnih soba, check-in, fakturisanje, izveštaj zaposlenih.
Identifikujte entitete iz poslovnog procesa — gost, soba, rezervacija, plaćanje, zaposleni. Atribut pripada entitetu samo ako opisuje baš njega, ne susedni entitet. U hotel_db recepcija, finansije i housekeeping rade nad istim tabelama gosti, sobe, rezervacije, placanja i zaposleni — svaka izmena mora ostati konzistentna za sve module aplikacije.
Detaljnije
Razmislite o upitima unapred — indeksi i veze prate upotrebu. ER dijagram je živ dokument; evolucija je normalna uz migracije, ne ad-hoc izmene u produkciji. Pre produkcije u Workbench-u izvršite primer SQL-a na test podacima, proverite EXPLAIN kad tabela naraste i dokumentujte očekivani rezultat za kolegu koji održava sistem.
Ključne tačke
- Entiteti iz poslovnog procesa. — primer iz hotel_db.
- Atributi bez dupliranja. — primer iz hotel_db.
- Upiti definišu indekse. — primer iz hotel_db.
- ER pre SQL implementacije. — primer iz hotel_db.
- Migracije umesto ručnih ALTER u panici. — primer iz hotel_db.
Česta greška
Početi sa CREATE TABLE bez modela jer “ćemo kasnije srediti”. Tipična posledica: neusklađeni podaci između recepcije i finansija, gubitak rezervacija ili nemogućnost check-in-a u vrhu sezone — uvek backup pre DDL/DML u produkciji.
Rezime
Dobar model hotel_db štedi mesece refaktorisanja u produkciji. Vežbajte ponovo na hotel_db dok možete objasniti svaki red rezultata i povezati ga sa poslovnim procesom hotela (check-in, naplata, izveštaj).
Napomena: Savet: držite verzionisane .sql skripte (hotel_schema.sql, seed.sql) u Git repozitorijumu — reproducibilnost je ključna kad više ljudi radi na istom hotel_db modelu.
Vežba u Workbench-u
Prepišite SQL primer iz lekcije u novi query tab, prilagodite imena tabela i pokrenite. Posmatrajte plan u EXPLAIN kad upit koristi JOIN.
