Do tej pory napisałem wiele aplikacji internetowych baz danych (MySQL), ale zawsze uważam, że moja struktura jest trochę niezdarna. Chcę poprawić wzorce programowania / projektowania, których używam, mając nadzieję na kilka porad tutaj. W szczególności nie mogę znaleźć struktury, która uzupełniałaby podejście OOP, które zawiera implementację bazy danych (schemat). ja
Pomyśl, że moje pytanie najlepiej wyjaśnić na przykładzie. Teraz używam 2 podejść, że mam obiekt / klasę faktury:
pierwszym jest użycie statycznych funkcji składowych
class Invoice
{
int id;
string ref;
int customer_id;
date created;
date due;
static id create();
static bool update(id, field1, field2, ...);
static bool delete(id);
static bool get(id);
};
Drugie podejście polega na umieszczeniu wszystkiego w obiekcie bazy danych:
class Database extends ProprietaryDBConnecter, Singleton
{
id createInvoice();
bool updateInvoice(id, field1, field2, ...);
bool deleteInvoice(id);
bool getInvoice(id);
id createCustomer();
bool updateCustomer(id, field1, field2, ...);
bool deleteCustomer(id);
bool getCustomer(id);
// etc...
}
Uważam, że w obie strony funkcje składowe (SQL) są bardzo nierozdzielne od „widoku”, ponieważ „widok” określa, co klasy muszą mieć, a zatem wydaje się, że psuje architekturę dokumentu / widoku.
Wydaje się również, że jest to trochę nieefektywne, na przykład instrukcja SELECT powinna tylko wybierać to, co jest potrzebne, ale obecność zmiennych składowych na fakturze wydaje się sugerować „dane gwarantowane”.
Nie wiem, czy jasno wyjaśniłem pytanie: Jakie są inne najlepsze podejścia do tej architektury / wzorca projektowego / co to jest znane?
Dziękuję za porady