Tôi đã viết nhiều ứng dụng web cơ sở dữ liệu (MySQL) cho đến nay nhưng tôi luôn nghĩ rằng cấu trúc của tôi hơi vụng về. Tôi muốn cải thiện mẫu lập trình / thiết kế mà tôi sử dụng, hy vọng một số lời khuyên ở đây. Đặc biệt, tôi không thể tìm thấy một cấu trúc bổ sung cho cách tiếp cận OOP đóng gói việc thực hiện cơ sở dữ liệu (lược đồ). Tôi
Hãy nghĩ rằng câu hỏi của tôi có thể được giải thích tốt nhất bằng ví dụ. Có 2 cách tiếp cận tôi sử dụng bây giờ nói rằng tôi có một đối tượng / lớp Hóa đơn:
đầu tiên là sử dụng các hàm thành viên tĩnh
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);
};
Cách tiếp cận thứ hai là đặt mọi thứ trong một đối tượng cơ sở dữ liệu:
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...
}
Tôi thấy rằng cả hai cách các hàm thành viên (SQL) đều không thể tách rời khỏi "khung nhìn", trong đó "khung nhìn" xác định những gì các lớp cần phải có và do đó dường như phá vỡ kiến trúc tài liệu / khung nhìn.
Ngoài ra, có vẻ như không hiệu quả, ví dụ, một câu lệnh CHỌN chỉ nên chọn những gì cần thiết, nhưng sự hiện diện của các biến thành viên trong Hóa đơn dường như ngụ ý "dữ liệu được bảo đảm".
Không biết nếu tôi giải thích rõ ràng câu hỏi, một số cách tiếp cận tốt nhất khác đối với kiến trúc / mẫu thiết kế này / cái gì được biết đến như là gì?
Cảm ơn lời khuyên