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

Thiết kế cơ sở dữ liệu công thức cần bao gồm các thành phần cũng như các công thức phụ

Có vẻ như bạn cần một mô hình cơ sở dữ liệu tương tự như sau:

Mô hình này có các thuộc tính sau:

  • Về cơ bản, mỗi công thức là một chuỗi các bước.
  • Mỗi bước có thứ tự liên quan đến các bước khác của cùng một công thức (BƯỚC_NO), một đơn vị (khối lượng, thể tích, số đếm ...), một số lượng trong đơn vị đó, v.v.
  • Một bước cụ thể được kết nối với một thành phần (khi INGREDIENT_ID không phải là NULL) hoặc với một công thức khác (khi SUBRECIPE_ID không phải là NULL).
  • Ngoài ra, BƯỚC là một bảng nối khá chuẩn thực hiện mối quan hệ nhiều-nhiều, có nghĩa là cùng một thành phần có thể được sử dụng trong nhiều công thức (hoặc thậm chí nhiều bước của cùng một công thức) và một công thức cũng có thể một "công thức phụ" của nhiều công thức khác.
  • Đây thực chất là một biểu đồ có hướng. Bản thân mô hình dữ liệu sẽ không ngăn cản các chu kỳ - nên tránh chúng ở cấp mã máy khách và có thể bị trình kích hoạt phát hiện.

Nếu MySQL hỗ trợ các ràng buộc CHECK (điều này thì không ), bạn có thể đảm bảo rằng một (nhưng không phải cả hai) đều không phải là NULL như thế này:

CHECK (
    (INGREDIENT_ID IS NULL AND SUBRECIPE_ID IS NOT NULL)
    OR (INGREDIENT_ID IS NOT NULL AND SUBRECIPE_ID IS NULL)
)

Như vậy, bạn sẽ cần một bộ kích hoạt cho điều đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buộc InnoDB kiểm tra lại các khóa ngoại trên một bảng / bảng?

  2. Kích hoạt Python để kết nối với MySQL thông qua SSH Tunneling

  3. Cách xóa các hàng trùng lặp khỏi bảng MySQL

  4. 'IS DISTINCT FROM' có phải là toán tử MySQL thực không?

  5. Mysql 1 Hàng Ngẫu nhiên