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

Nếu chúng ta thay đổi giá trị khóa chính, tại sao chúng ta không phải thay đổi giá trị cột phụ thuộc?

TL; DR Mặt hàng / A là PK (khóa chính) ngụ ý rằng chỉ có một giá trị Nhà cung cấp / B cho mỗi giá trị Mặt hàng / A. Nó không nói rằng chỉ có một giá trị trên mỗi bảng.

Video đó là vô nghĩa. Họ đang mắc phải những quan niệm sai lầm tương tự về "phụ thuộc" &FD (phụ thuộc chức năng) &PK như câu hỏi của bạn (vì vậy có thể đó là nơi bạn lấy chúng) và nhiều quan niệm sai lầm khác và họ không biết họ đang nói về cái gì. Tìm sách giáo khoa, trang trình bày và / hoặc khóa học cao đẳng / đại học (trong số đó có nhiều sách trực tuyến miễn phí).

Chúng ta có thể nói về FD, superkey, tập hợp cột duy nhất, CK (khóa ứng viên) &PK của bảng giá trị hoặc bảng biến . Một biến bảng có một ví dụ của một trong những thứ đó nếu mọi giá trị bảng có thể phát sinh trong doanh nghiệp / ứng dụng nhất định đều có nó dưới dạng một ví dụ.

Tập hợp cột phụ thuộc về mặt chức năng vào tập hợp khác khi tập hợp được xác định chỉ có thể có một giá trị cho mỗi giá trị nhất định của tập xác định.

Nhưng điều đó không có nghĩa là các giá trị xác định khác nhau có các giá trị xác định khác nhau.

Siêu khóa là một tập hợp các cột có một giá trị con khác nhau trong mỗi hàng. CK là superkey không chứa superkey nhỏ hơn. PK là một số CK mà bạn đã chọn để PK. Mọi tập hợp cột về mặt chức năng phụ thuộc vào mọi siêu khóa. Một số trong số đó là CK. Một trong số đó có thể là PK.

Nhưng điều đó không có nghĩa là một số con khác hơn một superkey / CK / PK (và mọi subrow phải phụ thuộc về mặt chức năng vào chúng theo định nghĩa) là duy nhất.

Không phải trên cơ sở A là PK / CK. A là PK / CK ngụ ý rằng A và mọi siêu tập của A là duy nhất. Nếu bạn "thay đổi A" theo nghĩa là nhìn vào một hàng khác hoặc xem một giá trị bảng khác có giá trị A khác cho hàng đó (không thể nằm trong bất kỳ hàng nào khác của một trong hai bảng), điều đó không hạn chế những gì B có thể được.

Một số khác ràng buộc có thể hạn chế những gì B có thể được. Ví dụ:nếu FD {Supplier} -> {Supplier Phone} giữ thì điều đó sẽ hạn chế những gì Điện thoại của nhà cung cấp có thể nằm trong các hàng khác mặc dù Mặt hàng là PK thì không.

Việc nắm giữ FD cụ thể nào phụ thuộc vào những hàng được cho là sẽ đi vào bảng trong một tình huống nhất định và những tình huống có thể phát sinh. Sau đó, những gì FD nắm giữ sẽ xác định superkey &CKs là gì. Sau đó, bạn có thể chọn một CK dưới dạng PK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Máy chủ Ruby on Rails sẽ không khởi động:dyld:liên kết biểu tượng lười biếng không thành công:Không tìm thấy biểu tượng:_mysql_get_client_info

  2. Mệnh đề IN không sử dụng chỉ mục

  3. SQL nối nhiều giá trị từ cột vào một ô

  4. Đặt giá trị mặc định cho cột loại DATE thành ngày hiện tại không có phần thời gian?

  5. Cách sử dụng mật khẩu gốc với MySQL 5.7