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

Bảng của tôi có cần chuẩn hóa nhiều hơn không?

Chuẩn hóa yêu cầu biết các phụ thuộc chức năng (FD) và phụ thuộc nối (FD). Bạn đã không đưa chúng.

Ứng dụng của bạn Chúng tôi chỉ có thể cho bạn biết FD và JD nếu chúng tôi biết chính xác "mối quan hệ mà tôi muốn diễn đạt" (tức là vị từ) cho mỗi bảng là gì (tức là đến mức chúng tôi có thể xem xét một tình huống và biết mọi hàng có thể có. nó tạo ra một mệnh đề đúng từ vị ngữ và do đó thuộc về bảng) và chính xác những tình huống có thể xảy ra có thể phát sinh (thông qua "quy tắc nghiệp vụ" về các tình huống ứng dụng có thể xảy ra, tương đương với các ràng buộc về trạng thái cơ sở dữ liệu có thể có).

"Chìa khóa" của bạn Bạn đã không cung cấp FDs. Bạn vừa đưa một khóa ứng viên (CK) và một "khóa duy nhất". Nhưng bạn không thể xác định một số hoặc tất cả các CK nếu không biết những điều nhất định về FD. Vì vậy, khi bạn cung cấp CK cũng giống như nói rằng có và không có FD nhất định. Bạn cần cho chúng tôi biết bạn đã cung cấp cho chúng tôi những gì khi bạn cung cấp cho một số tập hợp cột có nhãn PK hoặc "khóa duy nhất":"Khóa duy nhất" là CK (không chứa tập hợp con duy nhất nhỏ hơn) hay chỉ là siêu khóa (duy nhất)? Bạn đã đưa tất cả CK hay có thể có những CK khác? Có thể có superkey nào khác ngoài các superset của những cái đã cho không? Sẽ hữu ích nhất nếu bạn chỉ cho chúng tôi biết chính xác FD nào bạn biết nắm giữ (thông qua một trang bìa tối thiểu) và FD nào bạn không nắm giữ.

Đoán
Tôi không biết is_calculated là gì dành cho.
Có thể là một date nhất định và meal cặp có đúng một content ?

TL; DR Bạn thực sự cần phải kiểm tra từng nhóm cột có thể có để xem liệu nó có xác định được từng cột khác về mặt chức năng hay không. Tức là đối với mỗi trạng thái cơ sở dữ liệu, một nhóm con của các giá trị cho tập hợp các cột chỉ xuất hiện với một giá trị cho cột. Chúng tôi chỉ có thể đoán mà không hiểu rõ về các vị từ và ứng dụng của bạn. Bạn có thể giảm bớt công việc bằng cách sau:Nếu một tập hợp các cột là duy nhất thì các tập hợp trên của nó sẽ xác định tất cả các cột khác. Nếu một tập hợp các cột là tối thiểu duy nhất (là một CK) thì không tập hợp con nào nhỏ hơn của nó xác định tất cả các cột khác. Bạn có thể tìm kiếm các ví dụ đếm ngược cho FD giả định, trong đó hai hàng có thể có cùng một nhóm con giá trị cho một định thức giả định nhưng có các giá trị khác nhau cho một thuộc tính xác định giả định. Các tiên đề của Armstrong tạo ra tất cả các FD được ngụ ý bởi các tiên đề đã cho.

JDs Chuẩn hóa thành 4NF và 5NF liên quan đến việc chia bảng thành nhiều bảng để loại bỏ các JD không được hàm ý bởi CK. Vị từ của bảng có thể được biểu thị dưới dạng AND của các bảng khác chính xác khi một JD giữ tương ứng với các tập hợp cột của vị từ. Một quan hệ ở dạng 5NF khi mọi liên từ trong mỗi JD chồng lên một số liên kết khác trên ít nhất một CK. (Thuật toán thành viên của Fagin.)

Tái bút Nếu bạn quan tâm đến các ràng buộc, bạn có bị mất một khi chuyển từ bàn này sang bàn khác không?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt vô hiệu hóa SQL

  2. Chỉ có thể chuyển các biến bằng tham chiếu - php

  3. ScaleGrid DigitalOcean Hỗ trợ cho MySQL, PostgreSQL và Redis ™ Hiện đã có

  4. Cách thay đổi hành động cho khóa ngoại

  5. mysql_fetch_array chỉ trả về một hàng