poniedziałek, 24 września 2012

baza danych nie istnieje

o problemi słów kilka

Zdarzyło mi się kilka (lub trochę więcej:) razy, że przy prezentowaniu projektu aplikacji programistom, padało pytanie: 'a gdzie jest baza danych?'.
No właśnie, gdzie ona jest?
Skoro prezentuje działanie aplikacji, jej logikę, to pojawiaja się przecież jakaś reprezentacja danych (modele), ale gdzie ja je trzymam, skądś muszę je odczytać, jakoś zapisać, zaktualizować. Gdzie? Kiedy? Jak? I dlaczego nie ma tego wszystkiego w projekcie?

baza danych nie istnieje

Dlaczego tego nie ma w projekcie? Ponieważ baza danych na tym etapie nie istnieje, na tym etapie nawet nie zastanawiam się, gdzie te dane będą zapisywane (może wcale nie zdecyduję się na bazę danych tylko np. na pliki XML?).

Na samym początku, gdy mamy jedynie garstkę wymagań od klienta i żadnej linii kodu, warto skupić się przed wszystkim na problemie. A problemem jest to, co klient chce, aby nasza aplikacja robiła. Dlatego też musimy wiedzieć, co jest nam potrzebne i jak te cosie działają, w jakie interakcje pomiędzy sobą wchodzą, jakie zależności są niezbędne?
I nim te wszystkie wiadomości uda się nam zebrać, powiązać w spójną, zrozumiałą dla nas, ale i również dla klienta, całość, wszelkie pozostałe rzeczy to jedynie niepotrzebne (na tym etapie) śmieci.
Po co zastanawiać się nad tabelami, kolumnami, kluczami i indeksami, skoro jeszcze nie znamy w pełni problemu? Dopóki nie mamy wystarczająco dużo danych od klienta (nie chodzi mi o komplet wymagań, bo to niemożliwe, ale o taką ich ilość, aby można było już zacząć implementację), to na wybór sposobu zapisu danych, które mają być przechowywane, jest jeszcze za wcześnie.

dlaczego ta baza nie istnieje?

Posiadanie projektu logiki aplikacji (nie obarczonego żadnymi dodatkowymi informacjami) posiada jeszcze tą o tyle istotną zaletę, że dzięki niemu kolejna osoba w zespole z łatwością będzie w stanie zrozumieć, o co w tym wszystkim chodzi:)

Poza tym, patrząc na projekt będziecie w stanie wybrać sposób przechowywania danych taki, jaki będzie najlepszy dla danej aplikacji. Bo przecież nie musi być to koniecznie baza danych, a nawet jeżeli, to może nie MySQL? Może to będzie coś innego, co lepiej będzie pasowało do Waszych wymagań:)