1- XÂY DỰNG MÔ HÌNH (MODEL) ĐỂ LƯU TRỮ
THÔNG TIN VỀ SẢN PHẨM
Đối với các hệ thống eCommerce thì sản phẩm (product) là
đối tượng hiển thị chính các thông tin để người dùng thực
hiện việc mua bán.
Một sản phẩm có nhiều thuộc tính đa dạng về số lượng,
loại thuộc tính, kiểu dữ liệu. Mỗi thuộc tính có các yêu cầu
khác nhau về tính chất dữ liệu như: độ dài, kiểu kí tự, các
yêu cầu về nghiệp vụ… Do đó mô hình sản phẩm (product
model) là một mô hình không có cấu trúc cố định (schema-
less structure).
Cách tiếp cận phổ biến để giải quyết vấn đề này là sử
dụng mô hình dạng EAV - Entity Attribute Value. Đây là mô
hình được Magento, Wordpress sử dụng để lưu trữ các cấu
trúc đa dạng không định trước. Đặc điểm của cấu trúc EAV
là tách phần lưu trữ giá trị thuộc tính (attribute value) khỏi
phần cấu trúc các thuộc tính (attribute) của mô hình. Nhờ
đó có thể định nghĩa được nhiều loại cấu trúc thuộc tính
khác nhau của sản phẩm.
Trong sơ đồ trên, bộ thuộc tính (attribute set) là bảng
dùng để lưu một tập hợp các thuộc tính. Các thuộc tính
được phân biệt với nhau bởi mã thuộc tính và loại kiểu dữ
liệu. Một thuộc tính có thể thuộc nhiều bộ thuộc tính khác
nhau. Một sản phẩm chỉ thuộc một bộ thuộc tính. Các giá
trị thuộc tính (attribute value) của sản phẩm tương ứng với
các thuộc tính được đặc trưng bởi kiểu dữ liệu và mã thuộc
tính. Giá trị thuộc tính có kiểu dữ liệu được định nghĩa bởi
thuộc tính.
Bằng cách tổ chức như vậy, hệ thống có thể thêm các bộ
thuộc tính mới dễ dàng, cũng như bổ sung các thuộc tính
vào các bộ thuộc tính đã có.
Ngoài ra một điểm khác cần lưu ý khi thiết kế mô hình
sản phẩm đó là: một sản phẩm có nhiều hình ảnh, có thể
thuộc nhiều danh mục (category) cũng như có thể có nhiều
biến thể khác nhau (có quan hệ liên hệ với nhiều product
khác). Ví dụ: điện thoại iphone có nhiều dòng sản phẩm
có màu sắc khác nhau; hay một chiếc váy có nhiều kích cỡ
khác nhau.
2- THIẾT KẾ TẦNG NGHIỆP VỤ (BUSINESS LAYER)
Các nghiệp vụ sẽ được phát triển xoay quanh mô hình đã
được xây dựng. Đây là tầng (layer) phức tạp nhất, chiếm
phần lớn khối lượng công việc. Nghiệp vụ quản lý sản phẩm
tập trung vào việc thay đổi các thuộc tính đa dạng của sản
phẩm.
Khi thiết kế tầng này, người kỹ sư cần đảm bảo các mục tiêu
thiết kế như:
• Đảm bảo nguyên lý không lặp lại (Don’t Repeat Yourself)
một cách tốt nhất, giúp các nghiệp vụ được phân tách rõ
ràng, cô đọng và tập trung.
• Có thể mở rộng, sửa đổi các thành phần một cách độc
lập.
• Linh hoạt trong việc phát triển.
• Có khả năng dễ dàng kiểm tra và bảo trì
Các mục tiêu đó sẽ ảnh hưởng tới các cách thiết kế mô hình
ứng dụng khác nhau. Phần dưới đây sẽ phân tích từng mô
hình thiết kế phần mềm để đưa ra sự lựa chọn phù hợp
nhất.
2.1- Mô hình Model-View-Controller (MVC)
Mô hình MVC là mô hình phổ biến thường được lựa chọn để
xây dựng ứng dụng. Đó là mô hình đơn giản, dễ tiếp cận và
giúp các kỹ sư nhanh chóng đưa ra được các tính năng mới.
Theo mô hình MVC, thì phần quản lý danh mục (catalouge)
sẽ có kiến trúc như sau:
DIJSKTRA
9