Thiết kế cơ sở dữ liệu cho các sản phẩm với các gói sản phẩm


13

Tôi đang xây dựng một hệ thống cơ sở dữ liệu cho doanh nghiệp bán lẻ của tôi. Tôi đã thiết lập một số bảng đó là:

  • Sản phẩm
  • Mua, tựa vào, bám vào
  • Bán hàng
  • Thăng bằng

Tất cả được kết nối với nhau và có thể hiển thị mức tồn kho của tôi.

Vấn đề tôi gặp phải là tôi cũng bán các gói sản phẩm - có giá khác với giá riêng của họ.
Ví dụ: Tôi bán một quả cam với giá 1 đô la, một quả táo với giá 1,2 đô la; Tôi bán gói trái cây 1 (2 quả cam và 2 quả táo) với giá 3,8 đô la, gói 2 (4 quả cam và 4 quả táo) với giá 7 đô la.

Có cách nào đúng để tạo mối quan hệ cho các gói sản phẩm này không?

PS: Tôi đang sử dụng FileMaker Pro tạo cái này.

Câu trả lời:


16

Mẫu bạn đang mô tả thường được gọi là " vụ nổ bộ phận " hoặc " hóa đơn vật liệu ". Nó là một phần của đồ thị và phần cây trong nghiên cứu cấu trúc dữ liệu. Bản chất của giải pháp là nhận ra rằng bất kỳ "sản phẩm" nhất định nào cũng có thể được tạo thành từ các "sản phẩm" khác. Thiết kế sau đó là một cấu trúc mạng trong đó có một Productbảng có một hàng cho mỗi sản phẩm - cho dù nó được tạo thành từ các sản phẩm khác hay không, và sau đó một Product Componentbảng có một hàng cho mỗi sản phẩm được tạo thành từ các sản phẩm khác và mỗi sản phẩm tương ứng là một thành phần của sản phẩm đó. Trong trường hợp của bạn, mỗi sản phẩm có một mức giá. Vì vậy, bạn sẽ có một cái gì đó như thế này

Product
-----------------------------------
|Name             |Price          |
-----------------------------------
|Orange           |1             |
|Apple            |1.20          |
|Fruit Package    |3.80          |
-----------------------------------

Product Component
----------------------------------------------------------
|Product               |Contains                |Quantity|
----------------------------------------------------------
|Fruit Package         |Orange                  |2       |
|Fruit Package         |Apple                   |2       |
----------------------------------------------------------

Thiết kế này thích hợp hơn với một bảng duy nhất có liên kết đệ quy vì nó tách biệt rõ ràng hai loại thực thể - nút và liên kết. Trong trường hợp của chúng tôi, các sản phẩm là các nút và các thành phần sản phẩm là các liên kết.

Trong khi thiết kế mạng là một cấu trúc phổ biến, truy vấn nó là vấn đề vì khi điền đầy đủ, nó là một cấu trúc đệ quy có độ sâu khác nhau. Sức mạnh công nghiệp DBMS 'như Oracle và SQL Server có các yếu tố ngôn ngữ đặc biệt (CTN đệ quy của Oracle và CTE đệ quy của SQL Server) để hỗ trợ cho việc khai báo truy vấn. Do bạn đang sử dụng File Maker Pro mà tôi biết rất ít, bạn có thể không có các cấu trúc ngôn ngữ như vậy để trợ giúp và có thể phải viết mã thủ tục để truy cập mạng. Tuy nhiên, vấn đề này có thể được giảm bớt nếu mạng trở nên có độ sâu cố định - giả sử mọi sản phẩm đều không có thành phần hoặc một cấp độ của thành phần. Dưới đây là một số tài liệu tham khảo liên quan đến cấu trúc mạng trong thiết kế cơ sở dữ liệu:

  1. Các vấn đề thực tế trong quản lý cơ sở dữ liệu - Fabian Pascal . Chương 7 cung cấp lời giải thích tốt nhất và dễ hiểu nhất mà tôi đã tìm thấy.
  2. Cây và phân cấp của Joe Celko trong SQL cho Smarties, Ấn bản thứ hai . Đây là toàn bộ cuốn sách về chủ đề cụ thể theo tiêu chuẩn SQL.
  3. Mô hình mô hình doanh nghiệp - David Hay . Một cuốn sách về các mẫu chung cho tất cả các tổ chức (không may là Sơ đồ ER được trình bày trong UML nhưng có thể khắc phục được) có một số ví dụ về cấu trúc mạng.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.