Witam
Chcę rozpocząć nowy projekt od zera. Projekt będzie dotyczył prostego programu edukacyjnego do nauki angielskiego (takie lepsze SuperMemo) opartego o bazę danych. Program ma być dostosowany do użytku na sprytnych telefonach komórkowych z systemem Android (oraz na tabletach i PC z Windows lub Linux).
Chcę do tego projektu zrobić bazę danych. Jednak nie głupią.
Oczekiwane cechy modułu bazy danych:
-
zamyka w sobie całą specyfikę biblioteki pośredniczącej, motoru i zapytań Sql-a.
-
struktura bazy danych generuje się automatycznie z klas C++. Klasy zachowalne w bazie są wzbogacane o makra: PRIMARY_KEY, FOREIGN_KEY(klasa.zmienna1, klasa.zmiennaN), INDEX, NO_STORE. Makra te nic nie robią z poziomu C++, mają znaczenie tylko dla parsera klas zachowalnych.
-
przed zbudowaniem aplikacji jest uruchamiany parser klas zachowalnych
-
parser klas zachowalnych wykrywa zmiany w klasach zachowalnych i generuje: pierwszą wersję pliku struktury danych w SQL-u lub pacz w porównianiu do poprzedniej wersji, oraz nową wersję klasy bazy danych.
-
parser dodaje do pacza pustą i popsutą metodę migrateData() którą trzeba naprawić i odpowiednio uzupełnić (bez naprawienia się nie skompiluje).
-
po skompilowaniu uruchamiana aplikacja wykrywa jakie pacze powinna zastosować na bazie i w razie potrzeby ją aktualizuje w pełni automatycznie.
To wiem jak zrobić.
Natomiast nie wiem, czy generowane funkcje do obsługi bazy danych:
- Powinny znajdować się w jednej super klasie?
- Powinny być rozrzucone w klasach serializujących poszczególne obiekty?
Ja pierwotnie zrobiłem ten generator struktury baz danych i paczy do nich tak że generował jedną super klasę. Jednak nie wiem czy to prawidłowe podejście. Mi się wydaje, że tak, bo całą logikę bazy danych miałem zawsze w jednej klasie jaką sobie przezywałem using-iem tak by mimo podbijania wersji bazy nic nie zmieniać w kodzie.
Jakie są zalety użycia wielu klas (po jednej do każdej zachowalnej klasy?
Jak to robią korporacje? Jak się to robi w dużych systemach?
dzięki tym co wytrwali do końca
pozdro
Szyk Cech