Khi đưa dữ liệu từ Cửa hàng nguồn sang VirtueMart, cần hiểu rằng các bản ghi thương mại được lưu trong môi trường Joomla nhưng không theo mô hình dùng Article làm Products như J2Store hoặc J2Commerce. Products, Categories của thương mại điện tử, nhà sản xuất, giá, tồn kho, trường tùy chỉnh, nhóm người mua, quy tắc tính giá, Orders, phương thức vận chuyển và phương thức thanh toán thuộc VirtueMart. Joomla cung cấp danh tính user, menus, Modules, Templates, framework ngôn ngữ, routing, quy tắc truy cập và môi trường extensions bao quanh những bản ghi đó.
Sự phân chia quyền sở hữu này biến chuyển đổi thành bài toán biểu diễn lại các quan hệ. Một biến thể ở nguồn có thể trở thành Products con, trường tùy chỉnh hoặc một quan hệ có cấu trúc khác. Một phân khúc Customers có thể trở thành nhóm người mua chi phối giá và khả năng sử dụng một phương thức. Một giá trị thuế hoặc chiết khấu có thể là thông tin lịch sử nằm trong Orders cũ, hoặc là quy tắc tính giá đang hoạt động cho cart mới. Cấu trúc đích phù hợp phụ thuộc vào vai trò kinh doanh của dữ liệu nguồn.
Phân định dữ liệu do Joomla và VirtueMart quản lý
Một cửa hàng VirtueMart được ghép từ hai mô hình liên kết. VirtueMart sở hữu catalog và bản ghi giao dịch, còn Joomla quản lý phần lớn bối cảnh website và danh tính giúp những bản ghi đó được truy cập và sử dụng.
| Mảng nghiệp vụ | Chủ sở hữu chính trên đích | Quan hệ cần giữ |
|---|---|---|
| Danh tính và dữ liệu catalog của Products | VirtueMart | Products với Categories, nhà sản xuất, media, giá, tồn kho, trường tùy chỉnh và Products liên quan |
| Danh tính đăng nhập | Joomla user | User với hồ sơ người mua VirtueMart và địa chỉ |
| Phân nhóm người mua | Nhóm người mua VirtueMart, đôi khi kết hợp quyền truy cập Joomla | Người mua với giá, khả năng hiển thị, thuế, phương thức thanh toán hoặc vận chuyển |
| Route của storefront | Joomla menu, router, alias, ngôn ngữ và VirtueMart view | Products hoặc Categories với trang đích người mua cần truy cập |
| Hiển thị Products | Layouts VirtueMart kết hợp Joomla Template và Modules | Mã định danh bản ghi với kết quả hiển thị đúng trên trang |
| Thanh toán và vận chuyển | Phương thức cùng plugins của VirtueMart | Quy tắc phương thức đang hoạt động với dữ liệu Orders trong lịch sử và cách quy trình checkout hoạt động |
Một bản ghi Products có thể đã tồn tại trong VirtueMart nhưng thiếu route dành cho người mua, vị trí Module hoặc bối cảnh ngôn ngữ. Tương tự, Joomla user có thể tồn tại trong khi nhóm người mua, địa chỉ hoặc lịch sử đơn hàng bị tách rời. Mỗi phía của quan hệ đều cần xác định rõ thành phần chịu trách nhiệm.
Products, Categories, nhà sản xuất và media
Products trên VirtueMart có thể liên kết với nhiều cấu trúc thương mại. Một bản ghi Products ở nguồn có thể cần một hoặc nhiều Categories, nhà sản xuất, ảnh và tệp, trường tồn kho, kích thước, trạng thái sẵn bán, giá, thuế, nhóm người mua, trường tùy chỉnh, Products con, Products liên quan, Reviews và nội dung đã dịch.
| Ý nghĩa ở nguồn | Câu hỏi khi biểu diễn trên VirtueMart | Quan hệ bắt buộc |
|---|---|---|
| Phân loại Products | Products cần thuộc những Categories nào trên VirtueMart? | Quan hệ Products với Categories và cấu trúc phân cấp dự kiến |
| Danh tính thương hiệu | Đây là nhà sản xuất, Categories, trường tùy chỉnh hay khóa bên ngoài? | Quan hệ Products với nhà sản xuất và trang thương hiệu nếu có |
| Gallery và tệp | Media nào là ảnh, tệp tải xuống hoặc tài nguyên nội dung? | Vai trò media với Products, thứ tự và khả năng hiển thị |
| Products liên quan hoặc phụ kiện | Quan hệ dùng cho bán kèm/giới thiệu sản phẩm, tương thích, thay thế hay gói sản phẩm? | Quan hệ giữa Products với mục đích được định nghĩa rõ |
| Tồn kho và kích thước | Giá trị thuộc Products cha hay từng Products con? | Quyền sở hữu tồn kho và dữ liệu ảnh hưởng vận chuyển |
| Reviews và điểm đánh giá | Đây là bản ghi có sẵn trong VirtueMart, Joomla nội dung hay dữ liệu extension? | Quan hệ người đánh giá, Products, điểm đánh giá, nội dung và trạng thái công khai |
Không nên nhầm cấu trúc Categories của VirtueMart với điều hướng Joomla. Categories của VirtueMart tổ chức catalog thương mại điện tử, còn Joomla menu items đưa một số view Categories hoặc Products ra storefront. Vì vậy, cấu trúc phân cấp Categories từ nguồn có thể được chuyển chính xác trong khi điều hướng đích vẫn dùng cấu trúc route khác.
Bản ghi nhà sản xuất cũng cần được đánh giá theo ý nghĩa. Ở nguồn, thương hiệu có thể chỉ là nội dung chữ hiển thị hoặc có thể chi phối bộ lọc, trang riêng, dữ liệu xuất qua feed, quy tắc tính giá và khóa bên ngoài của các tích hợp. Nền tảng đích cần giữ những chức năng vẫn còn giá trị thay vì mặc định biến mọi nhãn thương hiệu thành cùng một đối tượng dữ liệu.
Products con, trường tùy chỉnh và ý nghĩa của biến thể
Trường tùy chỉnh của VirtueMart có thể mô tả Products, thu thập dữ liệu người mua nhập, gắn bản ghi liên quan, kích hoạt cách plugin hoạt động hoặc tham gia vào cấu trúc lựa chọn Products. Products con có thể có SKU, giá, tồn kho, kích thước, ảnh hoặc trạng thái sẵn bán riêng. Vì cả hai cơ chế đều có thể xuất hiện dưới dạng lựa chọn trên storefront, các biến thể ở nguồn không thể được xử lý theo một cách mapping duy nhất.
| Cách hệ thống nguồn hoạt động | Cách biểu diễn có thể dùng trên VirtueMart | Ý nghĩa phải giữ |
|---|---|---|
| Size hoặc color có SKU và tồn kho riêng | Quan hệ Products cha/con, thường được đưa ra dưới dạng trường có thể chọn | Mỗi lựa chọn phải gắn với đúng tồn kho và đúng danh tính mặt hàng được ghi trong Orders |
| Lựa chọn làm thay đổi giá nhưng dùng chung tồn kho | Trường tùy chỉnh của Products hoặc quan hệ giá được cấu hình | Phần điều chỉnh giá vẫn gắn với lựa chọn người mua đã chọn |
| Người mua nhập văn bản hoặc tải thông tin lên | Trường tùy chỉnh nhận dữ liệu người mua nhập hoặc bản ghi do extension quản lý | Giá trị người mua nhập vẫn gắn với đúng mặt hàng trong Orders |
| Thông số kỹ thuật | Trường tùy chỉnh mô tả | Giá trị vẫn đọc được và, khi cần, vẫn dùng được cho lọc |
| Products hoặc Categories liên quan | Quan hệ trường tùy chỉnh ở cấp hệ thống | Liên kết tiếp tục trỏ đến đúng bản ghi dự kiến |
| Công cụ cấu hình dựa trên plugin | Trường tùy chỉnh và bảng dữ liệu do plugin quản lý | Trạng thái cấu hình có hệ thống đích được hỗ trợ để tiếp tục quản lý |
Quyết định mapping cần trả lời năm câu hỏi: lựa chọn có thay đổi SKU, tồn kho, giá, ảnh hoặc cách xử lý đơn hàng hay không? Nếu không thay đổi yếu tố nào, giá trị có thể chỉ mang tính mô tả chứ không phải biến thể. Nếu nhiều yếu tố thay đổi, Products con hoặc cấu trúc do plugin quản lý thường phù hợp hơn một trường văn bản đơn giản.
Trường tùy chỉnh của VirtueMart gồm định nghĩa có thể tái sử dụng và phần được gán cho từng Products. Loại trường, thứ tự, khả năng hiển thị, plugin quản lý trường và giá trị riêng trên Products là các quan hệ khác nhau. Chỉ sao chép giá trị hiển thị có thể làm mất định nghĩa giúp giá trị đó trở thành lựa chọn hoặc kích hoạt chức năng.
Nhóm người mua, giá và quy tắc tính giá
Nhóm người mua trên VirtueMart có thể ảnh hưởng khả năng nhìn thấy catalog, giá Products, thuế, phương thức thanh toán, phương thức vận chuyển và các quy tắc thương mại khác. Vì vậy, một nhóm khách hàng ở nguồn không nhất thiết tương đương với một nhãn nhóm người mua trên VirtueMart.
Giá cũng có thể phụ thuộc bối cảnh. Một bản ghi Products có thể có nhiều giá gắn với khoảng số lượng, nhóm người mua, tiền tệ hoặc điều kiện khác. Các quy tắc tính toán có thể áp dụng thuế, chiết khấu, biên lợi nhuận hoặc điều chỉnh giá và có thể giới hạn theo Categories, nhà sản xuất, nhóm người mua, quốc gia, bang/tỉnh, tiền tệ hoặc ngày.
| Quy tắc ở nguồn | Quan hệ trên VirtueMart | Hệ quả khi chuyển đổi |
|---|---|---|
| Bảng giá bán sỉ | Nhóm người mua kết hợp bản ghi giá Products | Quan hệ Customers với nhóm người mua và điều kiện được hưởng giá phải tiếp tục liên kết |
| Người mua được miễn thuế | Nhóm người mua, vị trí địa chỉ và quy tắc tính giá | Danh tính, địa lý và điều kiện của quy tắc phải khớp nhau |
| Chiết khấu theo Categories | Categories của Products kết hợp quy tắc tính giá | Quy tắc phụ thuộc việc Products thuộc Categories, không phải một trường chiết khấu được sao chép |
| Thuế theo khu vực | Quốc gia/bang-tỉnh kết hợp quy tắc tính giá | Địa chỉ của Customers hoặc Orders cung cấp một phần đầu vào cho quy tắc |
| Khuyến mãi có thời hạn | Quy tắc tính giá hoặc Coupons có ngày hiệu lực | Thời gian hoạt động và phép tính phải được xác định rõ |
| Giá theo tiền tệ | Quan hệ giữa giá và tiền tệ | Số tiền, tiền tệ và bối cảnh hiển thị không được nhập làm một khái niệm |
Số tiền đã ghi trong các đơn hàng trước đây và quy tắc tính giá đang hoạt động là hai loại thông tin khác nhau. Lịch sử đơn hàng cần giữ đúng thuế, chiết khấu, tiền tệ và tổng tiền đã ghi tại thời điểm mua. Ngược lại, checkout mới phụ thuộc vào quy tắc đang hoạt động trên Nền tảng đích.
Hồ sơ người mua, địa chỉ, trường và Orders
VirtueMart thường liên kết Joomla user với hồ sơ người mua, nhóm người mua và thông tin địa chỉ. Orders của khách mua không đăng nhập có thể tồn tại mà không cần tài khoản Joomla dùng lại về sau. Các trường dành cho người mua có thể thu thập dữ liệu đăng ký, thanh toán, vận chuyển, thuế, công ty hoặc thông tin riêng cho giao dịch.
Mô hình đích cần gán từng trường theo vòng đời sử dụng:
- danh tính đăng nhập lâu dài thuộc Joomla user;
- phân khúc người mua có thể dùng lại thuộc quan hệ nhóm người mua;
- thông tin thanh toán hoặc vận chuyển dùng lại thuộc hồ sơ người mua/địa chỉ;
- thông tin của khách mua không đăng nhập thuộc snapshot trong Orders;
- ghi chú giao hàng hoặc hướng dẫn mua hàng dùng một lần thuộc Orders;
- dữ liệu thành viên hoặc trạng thái đồng ý do extension quản lý thuộc hệ thống tiếp tục sử dụng dữ liệu đó.
Orders cung cấp dữ liệu đối chiếu cho lịch sử giao dịch. Orders có thể chứa dữ liệu Products được ghi nhận tại thời điểm đặt hàng, trường tùy chỉnh đã chọn, danh tính Products con, số lượng, giá, thuế, chiết khấu, Coupons, bối cảnh nhóm người mua, địa chỉ, nhãn thanh toán và vận chuyển, trạng thái, tiền tệ, ghi chú và hóa đơn.
| Thông tin trong Orders | Vì sao quan hệ này quan trọng |
|---|---|
| Products và Products con | Xác định đúng mặt hàng đã bán thay vì chỉ Products cha |
| Lựa chọn trường tùy chỉnh | Giải thích cấu hình, cá nhân hóa hoặc option đã mua |
| Thông tin người mua và địa chỉ tại thời điểm đặt hàng | Giữ thông tin ai đã mua và địa chỉ thanh toán/giao hàng tại thời điểm đặt |
| Giá, thuế, chiết khấu và tiền tệ | Giải thích kết quả tài chính của giao dịch lịch sử |
| Phương thức thanh toán và vận chuyển | Cung cấp bối cảnh cho hỗ trợ Customers và xử lý đơn hàng |
| Trạng thái và mốc thời gian | Thể hiện lịch sử vận hành của Orders |
| Tham chiếu bên ngoài | Kết nối bản ghi kế toán, ERP, carrier hoặc Marketplace |
Plugins thanh toán và vận chuyển có thể tạo thêm metadata. Nhãn lịch sử và tham chiếu tới nhà cung cấp có thể cần nằm trong Orders sau chuyển đổi, trong khi cấu hình plugin đang hoạt động thuộc Nền tảng đích.
Storefront, ngôn ngữ, URL và phần trình bày của Joomla
Bản ghi Products và Categories trong VirtueMart không tự quyết định website mà người mua nhìn thấy. Joomla menus, Modules, template overrides, aliases, language assignments, access levels và routing cùng định hình storefront cuối cùng.
URL ở nguồn có thể dựa trên slugs của Products, Categories lồng nhau, tiền tố ngôn ngữ, menu aliases hoặc SEO extension. Routes của VirtueMart có thể phụ thuộc đồng thời vào aliases phía thương mại điện tử và bối cảnh Joomla menu. Vì vậy, dự án nên xác định trang đích canonical cho từng Products và Categories có giá trị cao, sau đó gắn redirects với trang đích đó.
Dữ liệu đa ngôn ngữ có thể trải rộng trên Products và Categories đã dịch, nội dung chữ của nhà sản xuất, nhãn trường tùy chỉnh, Joomla menus, Modules và metadata. Quan hệ ngôn ngữ chỉ hoàn chỉnh khi bản ghi thương mại điện tử đã dịch được truy cập qua đúng bối cảnh ngôn ngữ và route của Joomla.
| Thành phần storefront | Trách nhiệm trong mô hình dữ liệu |
|---|---|
| Aliases của Products và Categories trên VirtueMart | Danh tính phía thương mại điện tử được routes sử dụng |
| Joomla menu item | Điểm truy cập và bối cảnh route cho một view |
| Module | Query và vị trí để hiển thị Products hoặc Categories |
| Template override | Quy tắc trình bày phụ thuộc vào trường hoặc mã định danh cụ thể |
| Language association | Quan hệ giữa nội dung đã dịch, menus và bản ghi thương mại điện tử |
| Metadata và trang canonical | Thành phần chịu trách nhiệm cho thông tin phục vụ công cụ tìm kiếm trên trang |
Không nên đưa quy tắc trình bày vào trường của Products chỉ để tái tạo một trang. Phần này cần nằm trong lớp trình bày Joomla/VirtueMart trên đích và sử dụng các bản ghi đã chuyển thông qua những quan hệ ổn định.
Dữ liệu do plugins, phần tùy chỉnh và hệ thống bên ngoài quản lý
Cửa hàng VirtueMart thường sử dụng extensions cho thanh toán, vận chuyển, trường tùy chỉnh, đăng ký định kỳ, công cụ tạo Products, tìm kiếm, nguồn cấp dữ liệu, hóa đơn, Marketplace, kế toán và xử lý đơn hàng. Những extensions này có thể tạo bảng dữ liệu và tham chiếu nằm ngoài mô hình Products, hồ sơ người mua hoặc Orders thông thường.
| Yếu tố phụ thuộc | Dữ liệu có thể nằm ngoài bản ghi cốt lõi | Câu hỏi khi xác định đích đến |
|---|---|---|
| trường của plugin tùy chỉnh | Giá trị của công cụ cấu hình, tệp người mua cung cấp, quan hệ Products con, quy tắc tính giá | Có plugin tương đương hay bản ghi có cấu trúc phù hợp trên đích không? |
| Extension quản lý đăng ký hoặc giao dịch định kỳ | Gói, chu kỳ, lần gia hạn, tham chiếu cổng thanh toán và quyền lợi | Hệ thống nào sẽ quản lý trạng thái định kỳ sau chuyển đổi? |
| Extension tạo Products hoặc bundle | Products thành phần, công thức và cấu hình đã lưu | Đích có thể biểu diễn cấu hình mà không làm mất quan hệ hay không? |
| Plugin thanh toán hoặc vận chuyển | Mã giao dịch, nhãn, mã theo dõi và metadata phương thức | Giá trị nào là dữ liệu lịch sử, giá trị nào là cấu hình đang hoạt động? |
| Kết nối ERP hoặc kế toán | Mã định danh Products, Customers, thuế, hóa đơn và Orders | Mã định danh nào phải được duy trì vì hệ thống bên ngoài tiếp tục sử dụng? |
| Template hoặc Module override | Các trường cần có và quy tắc hiển thị | Mã định danh nào sau chuyển đổi phải ổn định để phần trình bày hoạt động? |
Các cột tùy chỉnh trong cơ sở dữ liệu không tự giải thích ý nghĩa kinh doanh. Tên cột có thể cho biết nơi lưu trữ nhưng không cho biết mục đích. Mỗi giá trị cần giữ phải có hệ thống tiếp tục sử dụng, vòng đời và quan hệ đích được xác định rõ.
Khác biệt của VirtueMart làm thay đổi phạm vi xử lý dữ liệu như thế nào
Phạm vi dữ liệu khi VirtueMart là Nền tảng đích nên được mô tả theo cách từng quan hệ cần được xử lý:
| Cách xử lý | Ví dụ thường gặp trên VirtueMart | Hệ quả đối với phạm vi |
|---|---|---|
| Chuyển bản ghi trực tiếp | Products, Categories, nhà sản xuất, hồ sơ người mua, Orders, media | Đối chiếu trường tiêu chuẩn và mã định danh giữa nguồn và đích |
| Tái lập quan hệ | Products cha/con, quan hệ gán trường tùy chỉnh, nhóm người mua, giá, điều kiện của quy tắc tính giá | Tái tạo liên kết và đầu vào của quy tắc |
| Cấu trúc trình bày trên Joomla | Menus, Modules, routes, bối cảnh ngôn ngữ, template overrides | Giao cho phần triển khai website trên đích |
| Dữ liệu do plugins sở hữu | Công cụ cấu hình, dữ liệu đăng ký định kỳ, trường checkout đặc biệt, metadata phương thức | Xác định đích đến được hỗ trợ hoặc lưu trữ riêng |
| Duy trì quan hệ với hệ thống bên ngoài | Mã định danh ERP, kế toán, xử lý đơn hàng, nguồn cấp dữ liệu hoặc Marketplace | Giữ khóa ổn định và trách nhiệm quản lý dữ liệu |
| Chủ động loại bỏ | Plugins lỗi thời, trường tùy chỉnh không dùng, routes trùng lặp, quy tắc đã bỏ | Loại khỏi phạm vi với lý do được ghi nhận |
Mô hình dữ liệu được coi là nhất quán khi có thể truy vết một bản ghi Products qua Categories, Products con, trường tùy chỉnh, giá, tồn kho, quy tắc nhóm người mua, chi tiết mặt hàng trong Orders, routes Joomla và mã định danh bên ngoài mà không phải dựa vào giả định kỹ thuật chưa được làm rõ.
Kết luận
Khác biệt trong mô hình dữ liệu VirtueMart xuất phát từ sự tương tác giữa bản ghi thương mại điện tử của VirtueMart và cấu trúc website Joomla. Products có thể phụ thuộc Categories, nhà sản xuất, media, Products con, trường tùy chỉnh, nhóm người mua, giá, quy tắc tính giá và plugins. Dữ liệu Customers có thể trải trên Joomla users, hồ sơ người mua, địa chỉ và nhóm người mua. Orders giữ dữ liệu lịch sử ghi nhận tại thời điểm giao dịch và dữ liệu đó cần tiếp tục có ý nghĩa ngay cả khi quy tắc và plugins đang hoạt động trên đích khác với nguồn.
Một dự án chuyển sang VirtueMart cần biểu diễn lại các quan hệ này một cách rõ ràng. Dữ liệu lịch sử của Orders phải được tách khỏi quy tắc tính giá và checkout đang hoạt động; routing Joomla phải được tách khỏi bản ghi Products; dữ liệu do plugins hoặc hệ thống bên ngoài quản lý cần có đích đến cụ thể. Mục tiêu là giữ đúng ý nghĩa thương mại, không chỉ tái tạo các hàng trong cơ sở dữ liệu.
Câu hỏi thường gặp
Vì sao không thể đưa mọi variants ở nguồn vào cùng một loại option trên VirtueMart?
Một số lựa chọn là Products con có SKU, tồn kho, giá, ảnh hoặc kích thước riêng. Những lựa chọn khác là điều chỉnh giá, trường tùy chỉnh mô tả, dữ liệu người mua nhập hoặc cấu hình do plugin quản lý. Chức năng kinh doanh của từng lựa chọn quyết định cấu trúc phù hợp trên đích.
Định nghĩa trường tùy chỉnh khác gì với giá trị được gán cho Products?
Định nghĩa xác lập loại trường, cách trường hoạt động, khả năng hiển thị và quy tắc plugin có thể liên quan. Phần gán cho Products cung cấp giá trị hoặc lựa chọn của riêng Products đó. Cả hai quan hệ có thể đều cần thiết để storefront hoạt động đúng.
Nhóm người mua ảnh hưởng đến mô hình dữ liệu như thế nào?
Nhóm người mua có thể chi phối giá, khả năng hiển thị, thuế, phương thức thanh toán, phương thức vận chuyển và các quy tắc khác. Chỉ giữ tên nhóm mà không giữ quan hệ người mua với nhóm và những quy tắc sử dụng nhóm sẽ làm mất ý nghĩa kinh doanh.
Có nên tính lại lịch sử đơn hàng bằng quy tắc thuế và chiết khấu trên đích không?
Không nên. Dữ liệu đơn hàng trước đây cần giữ số tiền và nhãn đã được ghi tại thời điểm mua. Quy tắc đang hoạt động trên Nền tảng đích chỉ áp dụng cho carts mới và phải được quản lý tách biệt với snapshot lịch sử.
Vì sao Joomla menus quan trọng khi Products được lưu trong VirtueMart?
Menus có thể tạo bối cảnh route và điểm truy cập storefront. Aliases của Products và Categories có thể đúng nhưng URL ưu tiên cho người mua vẫn phụ thuộc vào quan hệ Joomla menu và ngôn ngữ.
Nên xử lý dữ liệu do plugins quản lý như thế nào?
Cần xác định bản ghi do plugin tạo, quan hệ Products, hồ sơ người mua hoặc Orders mà plugin sử dụng, và hệ thống đích sẽ tiếp tục sở hữu cùng chức năng kinh doanh. Chỉ giữ những giá trị có mục đích sử dụng tiếp theo được xác định rõ.