Dijkstra June 2018 | Page 9

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