Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thiết kế cơ sở dữ liệu:hàng tồn kho và hệ thống bán hàng?

Giải pháp bạn đang tìm kiếm sẽ dựa trên mô hình kế toán và một vài hóa đơn nguyên vật liệu (BOM). Các loại thực thể chính của bạn sẽ bao gồm:

  • Mã hàng Đây là danh sách những thứ bạn bán. Thuộc tính của nó sẽ bao gồm những thứ như mô tả sản phẩm và giá bán lẻ hiện tại. Bạn có thể nhận được giá ưa thích và phá vỡ thành một bảng con cung cấp giá theo thời gian. Hãy giả sử rằng bạn sẽ để lại nếp nhăn đó ngay bây giờ. Một số SKU có thể là "tổ hợp" của loại mà bạn đang nói đến.

  • THÀNH PHẦN Đây là danh sách những thứ tạo nên SKU, chẳng hạn như khăn ăn, cốc, bánh, chả, xi-rô cô-ca, v.v. - để sử dụng ví dụ của bạn. Cũng giống như SKU có mô tả và giá, LINH KIỆN có mô tả và chi phí đơn vị. (Bảng này cũng có thể được ghi trong bảng con.) Bảng này là nơi bạn cũng thường lưu trữ ROP của mình.

  • THÀNH PHẦN Đây là BOM giao nhau giữa SKU và COMPONENT và cho biết có bao nhiêu đơn vị của mỗi COMPONENT đi vào một đơn vị của SKU. Bạn cũng cần một trong những thứ này để giao nhau giữa hai SKU (đối với kết hợp). Bạn có thể sử dụng một bảng hoặc hai bảng cho việc này. Hai bảng sẽ khiến những người theo chủ nghĩa thuần túy hài lòng, một bảng sẽ phù hợp với quan điểm của lập trình viên.

  • BÁN HÀNG Đây là bảng giao dịch cung cấp tiêu đề để ghi lại việc bán một hoặc nhiều SKU. Bảng này sẽ có những thứ như ngày giao dịch, ID thủ quỹ và các mục tiêu đề khác.

  • SALE_ITEM Đây là bảng chi tiết giao dịch sẽ bao gồm SKU nào đã được bán (và số lượng bao nhiêu) và giá bao nhiêu. Giá của SKU tại thời điểm bán là bao nhiêu, nhưng cũng có thể bao gồm bất kỳ thay đổi đặc biệt nào đối với giá. Giá thực tế được tính cho SKU là một điều tốt để không chuẩn hóa bởi vì ai đó có thể chỉnh sửa giá niêm yết trong SKU và sau đó bạn sẽ mất theo dõi số tiền thực sự được tính cho mặt hàng vào thời điểm đó.

  • INVENTORY_HDR Đây là bảng giao dịch tương tự như BÁN về mặt khái niệm, nhưng nó là tiêu đề cho giao dịch hàng tồn kho, chẳng hạn như nhận khoảng không quảng cáo mới, sử dụng hết khoảng không quảng cáo (như khi bán nó) và để điều chỉnh khoảng không quảng cáo. Một lần nữa, đây sẽ là nội dung về ngày tháng / mô tả, nhưng nó có thể bao gồm liên kết trực tiếp đến SALE_ITEM cho các chuyển động của khoảng không quảng cáo là doanh số bán hàng nếu bạn muốn. Bạn không cần phải làm theo cách đó, nhưng một số người muốn thiết lập mối liên hệ giữa doanh thu và chi phí trên một giao dịch theo cơ sở giao dịch.

  • INVENTORY_DTL Đây là chi tiết cho một giao dịch hàng tồn kho. Điều này cho biết COMPONENT nào đang vào hoặc ra, số lượng vào hoặc ra và giao dịch INVENTORY_HDR mà phong trào này áp dụng. Đây cũng sẽ là nơi bạn giữ chi phí thực tế phải trả cho thành phần.

  • VỊ TRÍ Bạn cũng có thể (nếu muốn) theo dõi vị trí thực của khoảng không quảng cáo mà bạn nhận và sử dụng / bán. Trong một nhà hàng, điều này có thể không quan trọng nhưng nếu bạn có một chuỗi hoặc nếu nhà hàng của bạn có một nhà kho ngoại vi cho các thành phần nguyên liệu thì bạn có thể quan tâm.

Hãy xem xét ERD sau:

Để thực hiện hạch toán doanh thu, bạn sẽ cộng số tiền được ghi trong bảng SALE_ITEM.

Mức tồn kho được tính toán dựa trên việc thêm thông tin đăng nhập INVENTORY_DTL cho từng COMPONENT. (Không lưu trữ lượng hàng hiện tại trong một bảng - Điều này chắc chắn sẽ gây ra các vấn đề về điều chỉnh.)

Để thực hiện kế toán chi phí, bạn sẽ cộng số tiền được ghi trong bảng INVENTORY_DTL. Lưu ý rằng bạn thường sẽ không biết chính xác cái nào khăn ăn hoặc bánh mì mà bạn đã bán, vì vậy sẽ không thể liên kết các lần nhận thành phần cụ thể với doanh số SKU cụ thể. Thay vào đó, bạn cần có một quy ước để xác định thành phần nào được sử dụng cho bất kỳ SKU nhất định nào. Bạn có thể có các quy tắc kế toán chỉ rõ quy ước nào bạn được yêu cầu sử dụng. Hầu hết mọi người sử dụng FIFO. Một số ngành công nghiệp sử dụng LIFO và tôi thậm chí đã thấy kế toán chi phí bình quân gia quyền.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ModuleNotFoundError:Không có mô-đun nào có tên 'mysql'

  2. Ví dụ về MySQL LOAD DATA LOCAL INFILE trong python?

  3. RegEx với preg_match để tìm và thay thế một chuỗi SIMILAR

  4. Sự cố bộ đệm MySqlDataReader GetBytes ...

  5. Ném lỗi ngăn cập nhật bảng trong trình kích hoạt MySQL