(Lưu ý: Phần này không hướng dẫn anh em thiết kế database. Thiết kế database là một phạm trù lớn, đòi hỏi nhiều chi tiết, nỗ lực và việc tối ưu ngay trong từng các attribute cụ thể). Notes dưới đây mình hướng dẫn anh em vẽ: Sơ đồ Quan hệ thực thể – ERD, một cách đơn giản, chính xác, và hiệu quả nhất có thể. Và nó dùng để capture yêu cầu của khách hàng theo góc nhìn database. Từ đó, anh em Database Designer dựa vào ERD để thiết kế database sao cho tối ưu và hiệu quả nhất 🙂 … Vẽ ERD thì có 3 bước cơ bản mà ai cũng thấy cái một đó là: Xác định entity >> xác định relationship >> thêm mắm dặm muối. Bắt đầu dự án, anh em sẽ làm tùm lum tùm la, A, B, C, X, Y, Z để có được specific requirements từ khách hàng. Dựa vào các requirements đó, anh em dòm vào, đừng làm gì nhiều, việc cần làm đầu tiên là: Vẽ ra các ĐỐI TƯỢNG cần lưu trữ cái đã. Đoạn này anh em chưa cần care nhiều tới các attribute, chỉ cần sơ khởi một vài attribute nổi bật của entity đó là được. Ô kê, giờ có được các đối tượng rồi, anh em sẽ đọc tiếp. Mục đích đọc lần này là tìm kiếm mối quan hệ giữa các đối tượng. Sau đó vẽ ra: LIÊN KẾT GIỮA CÁC ĐỐI TƯỢNG là gì? *Lưu ý ngay lúc này anh em nên xác định luôn: các entity nó quan hệ cụ thể như thế nào trong 6 cái cardinality ở bài trước. Nếu chưa xác định được thì đơn thuần anh em chỉ cần vẽ một đường thẳng nối 2 entity để đánh dấu là 2 tụi nó có quan hệ, lát nữa quay lại bổ sung sau, khỏi quên. Lúc này ERD đã ổn 80% rồi. Bước cuối cùng là: dặm mắm dặm muối vào sơ đồ ERD của mình. Nghĩa là bổ sung thêm các attribute, hoặc relationship còn thiếu ở bước trên là xongggg!!! Trên là lý thuyết, giờ là thực tế nhé anh em. 💡 💡 💡 Mình có một case study sau, anh em thử áp dụng 3 bước trên để vẽ ERD của nó nhé. (phải thực hành thì mới nhớ lâu được) TN là một đơn vị kinh doanh chuyên cung cấp dịch vụ Promoter quảng cáo. Ví dụ các Promoter tại một quầy trưng bày của Nestle Cụ thể là TN sỡ hữu rất nhiều Promotion Girl (PG) và Promotion Boy (PB). Nếu một đơn vị có nhu cầu:
Thì đơn vị đó có thể liên hệ TN. TN sẽ giúp khách hàng của họ: trưng bày sản phẩm, bán hàng tại quầy với các KPIs cụ thể mà khách hàng có thể đưa ra. Hiện tại TN có độ phủ rộng khắp 54 tỉnh thành, với hơn 80,000 promoters khắp cả nước. Vì nhu cầu phát sinh càng lớn, nên họ cần:
Với một đống nhu cầu quản lý trên, họ cần tự động hóa các quy trình này, và quản lý chúng trực tiếp ngay trên mobile device. Cụ thể, họ cần có:
Nói về các dự án và khách hàng của TN TN sẽ quản lý các dự án đã ký với khách hàng, với các thông tin đặc thù như: thời gian, sản phẩm mẫu, số lượng, KPIs, chi phí dự trù, chi phí thực tế, vâng vâng. Khách hàng của TN đa phần là các nhãn hàng FMCG. Mỗi nhãn hàng gồm từ 1 đến 2 người liên hệ cụ thể để làm việc cho nhãn hàng đó. Nói về Sup và Promoter Promoter được các Supervisor quản lý. Trước mỗi 2 tuần, Sup sẽ lên kế hoạch làm việc cho Promoter, bao gồm những thứ như: địa điểm làm việc, sản phẩm, số lượng sản phẩm, hoặc KPIs cần đạt. Sau khi nhận lịch làm việc, Promoter có thể yêu cầu đổi ca làm việc, địa điểm làm việc, hoặc chỉnh sửa các nội dung cần thiết khác, trước khi xác nhận kế hoạch làm việc với Sup. Ngoài Promoter ra, Sup cũng cần được lên kế hoạch làm việc. Admin sẽ lên kế hoạch những địa điểm cần kiểm tra trong ngày hôm đó. Tạo thành một lộ trình gồm các địa điểm mà Sup phải ghé và kiểm tra chất lượng trong ngày hôm đó. Nói về địa điểm làm việc Trong một dự án, Promoter có thể trực ở nhiều quầy khác nhau. Mỗi quầy thuộc một địa điểm nào đó. Ví dụ về địa điểm làm việc và quầy:
Nói về công việc của Promoter và Sup sẽ làm trong ngày Trước mỗi ca làm, Promoter sẽ check in bắt đầu làm việc, bao gồm: chụp một tấm hình với kệ trưng bày, ghi nhận thời gian vào làm và nhập số lượng sản phẩm nhận được lúc đầu ca vào mobile apps. Lúc kết ca cũng tương tự, Promoter sẽ phải check out như sau: chụp một tấm hình với kệ trưng bày, ghi nhận thời gian ra về, và nhập số lượng còn lại sau ngày hôm đó vào mobile apps. Nhiệm vụ chính của Promoter là giới thiệu sản phẩm đến càng nhiều người càng tốt. Ngoài ra, họ sẽ bán các sản phẩm này và được thưởng huê hồng cho mỗi lượng sales nhất định. Với mỗi sản phẩm bán được, Promoter sẽ ghi nhận đơn hàng trên mobile apps để tính KPIs cho họ. Còn Sup, họ có nhiệm vụ hỗ trợ và kiểm tra chất lượng làm việc của Promoter. Mỗi ngày, họ sẽ đi đến các quầy để kiểm tra tác phong, quần áo, thái độ, tình hình bán hàng, hoặc mật độ người qua lại tại khu vực đó. Để chấm điểm Promoter ngay trên mobile apps dành cho Supervisor. Mỗi promoter sẽ có số điểm cụ thể cho mỗi ngày làm việc. Điểm này sẽ được tổng hợp, và tạo thành báo cáo đánh giá Promoter cuối mỗi tháng. Về phía khách hàng của TN Các nhãn hàng này mong muốn được TN báo cáo chính xác số lượng sản phẩm bán được, sản phẩm tồn kho, và sản phẩm thất thoát cuối mỗi kỳ. . . . XONGGGG! Hi vọng anh em đọc hết, và đọc cẩn thận case study này. Nhiệm vụ tiếp theo: anh em lên trang draw.io >> thực hành ngay và luôn ERD cho nóng. . . . 15 phút trôi qua . . . 30 phút trôi qua… . . . Ô kieeeee, hi vọng anh em đã vẽ xong. Dưới đây là ERD của mình để anh em đối chiếu. Sample ERD cho hệ thống của TN Giờ mình sẽ giải thích cách làm của mình. Note những điểm mình tô màu dưới đây:
Nói về các dự án và khách hàng của TN TN sẽ quản lý các dự án đã ký với khách hàng, với các thông tin đặc thù như: thời gian, sản phẩm mẫu, số lượng, KPIs, chi phí dự trù, chi phí thực tế, vâng vâng. Khách hàng của TN đa phần là các nhãn hàng FMCG. Mỗi nhãn hàng gồm từ 1 đến 2 người liên hệ cụ thể để làm việc cho nhãn hàng đó. ĐOẠN NÀY CHO CHÚNG TA:
Nói về Sup và Promoter Promoter được các Supervisor quản lý. Trước mỗi 2 tuần, Sup sẽ lên kế hoạch làm việc cho Promoter, bao gồm những thứ như: địa điểm làm việc, sản phẩm, số lượng sản phẩm, hoặc KPIs cần đạt. Sau khi nhận lịch làm việc, Promoter có thể yêu cầu đổi ca làm việc, địa điểm làm việc, hoặc chỉnh sửa các nội dung cần thiết khác, trước khi xác nhận kế hoạch làm việc với Sup. Ngoài Promoter ra, Sup cũng cần được lên kế hoạch làm việc. Admin sẽ lên kế hoạch những địa điểm cần kiểm tra trong ngày hôm đó. Tạo thành một lộ trình gồm các địa điểm mà Sup phải ghé thăm và kiểm tra chất lượng trong ngày hôm đó. ĐOẠN NÀY CHO CHÚNG TA:
Nói về địa điểm làm việc Trong một dự án, Promoter có thể trực ở nhiều quầy khác nhau. Mỗi quầy thuộc một địa điểm nào đó. Ví dụ về địa điểm làm việc và quầy:
ĐOẠN NÀY CHO CHÚNG TA:
Nói về công việc của Promoter và Sup sẽ làm trong ngày Trước mỗi ca làm, Promoter sẽ check in bắt đầu làm việc, bao gồm: chụp một tấm hình với kệ trưng bày, ghi nhận thời gian vào làm và nhập số lượng sản phẩm nhận được lúc đầu ca vào mobile apps. Lúc kết ca cũng tương tự, Promoter sẽ phải check out như sau: chụp một tấm hình với kệ trưng bày, ghi nhận thời gian ra về, và nhập số lượng còn lại sau ngày hôm đó vào mobile apps. Nhiệm vụ chính của Promoter là giới thiệu sản phẩm đến càng nhiều người càng tốt. Ngoài ra, họ sẽ bán các sản phẩm này và được thưởng huê hồng cho mỗi lượng sales nhất định. Với mỗi sản phẩm bán được, Promoter sẽ ghi nhận đơn hàng trên mobile apps để tính KPIs cho họ. Còn Sup, họ có nhiệm vụ hỗ trợ và kiểm tra chất lượng làm việc của Promoter. Mỗi ngày, họ sẽ đi đến các quầy để kiểm tra tác phong, quần áo, thái độ, tình hình bán hàng, hoặc mật độ người qua lại tại khu vực đó. Để chấm điểm Promoter ngay trên mobile apps dành cho Supervisor. Mỗi promoter sẽ có số điểm cụ thể cho mỗi ngày làm việc. Điểm này sẽ được tổng hợp, và tạo thành báo cáo đánh giá Promoter cuối mỗi tháng. ĐOẠN NÀY CHO CHÚNG TA:
*Bonus Entity Inventory Adjustment là để Promoter nhập số lượng tồn đầu ngày và cuối ngày của 1 sản phẩm bất kỳ. Đây là dữ liệu user tự nhập thủ công (tức đầu ngày đếm bao nhiêu chai >> nhập vô apps, cuối ngày đếm bao nhiêu chai >> nhập vô apps). Còn Inventory On-hand là để hệ thống lấy con số Opening Balance trên entity Inventory Adjustment, trừ đi Số lượng sản phẩm bán được trong ngày từ entity Order Line. Để từ đó đối chiếu với con số tồn cuối ngày mà user nhập thủ công. Vì có thể Promoter chào sản phẩm cho KH >> KH đồng ý mua và bỏ sản phẩm vào giỏ đi chợ >> Promoter cập nhật bán thêm được 1 sản phẩm vào Order Line (trên apps). Nhưng khi đến quầy tính tiền, KH đổi ý >> bỏ sản phẩm ra không tính >> dẫn tới chênh lệch giữa số lượng tồn thực tế và số lượng tồn mà Promoter nhập thủ công vào. Ví dụ: Record: Inventory Adjustment Record: Inventory Adjustment Record: Order Line Record: Inventory On-hand
… Mặc dù không thể cover được hết mọi ngóc ngách trong ERD mình vẽ. Nhưng hi vọng phần giải thích trên đủ để anh em hình dung được: cách chúng ta vẽ ERD dựa trên nguồn thông tin có được như thế nào. Nếu ERD của anh em khác biệt quá thì còm men xuống dưới cùng trao đổi nhé. Bài note cũng đã dài rồi nên mình sẽ kết thúc tại đây 🙂 Bái bai và hẹn gặp anh em ở những bài sauuuuu!!! |