ฉันได้เขียนแอปพลิเคชันเว็บฐานข้อมูลหลายตัว (MySQL) มาแล้ว แต่ฉันคิดว่าโครงสร้างของฉันค่อนข้างซุ่มซ่าม ฉันต้องการปรับปรุงรูปแบบการเขียนโปรแกรม / การออกแบบที่ฉันใช้หวังคำแนะนำบางอย่างที่นี่ โดยเฉพาะอย่างยิ่งฉันไม่สามารถหาโครงสร้างที่เสริมวิธี OOP ที่ห่อหุ้มการใช้งานฐานข้อมูล (schema) ผม
คิดว่าคำถามของฉันสามารถอธิบายได้ดีที่สุดจากตัวอย่าง มี 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 ควรเลือกสิ่งที่จำเป็นเท่านั้น แต่การปรากฏตัวของตัวแปรสมาชิกในใบแจ้งหนี้ดูเหมือนจะแปลว่า "รับประกันข้อมูล"
ไม่ทราบว่าฉันอธิบายคำถามอย่างชัดเจนอะไรคือวิธีที่ดีที่สุดในการออกแบบสถาปัตยกรรม / รูปแบบการออกแบบ / อะไรที่มันรู้จักกันในชื่อนี้?
ขอบคุณสำหรับคำแนะนำ