Поки що я написав багато веб-додатків бази даних (MySQL), але завжди думаю, що моя структура ніби незграбна. Я хочу вдосконалити схему програмування / дизайну, яку я використовую, сподіваючись на деякі поради тут. Зокрема, я не можу знайти структуру, яка доповнює підхід OOP, який інкапсулює реалізацію бази даних (схеми). Я
Подумайте, моє питання найкраще пояснити на прикладі. Я використовую 2 підходи, які кажуть, що у мене є об'єкт / клас рахунків-фактур:
По-перше, це використовувати статичні функції членів
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);
};
Другий підхід - це помістити кожну річ в об’єкт бази даних:
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...
}
Я вважаю, що обидва способи (член SQL) функції членів дуже невіддільні від "представлення", оскільки "погляд" визначає, що потрібно мати класам, а отже, здається, порушує архітектуру документа / перегляду.
Крім того, це видається неефективним, наприклад, оператор SELECT повинен вибрати лише те, що потрібно, але наявність змінних членів у рахунку-фактурі, здається, означає "гарантовані дані".
Не знаю, чи я пояснив це питання чітко: Які ще найкращі підходи до цієї структури архітектури / дизайну / що - це - відомо?
Дякую за поради