Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jeśli zmienimy wartość klucza podstawowego, dlaczego nie musimy zmienić wartości kolumny zależnej?

TL;DR Pozycja/A będąca PK (klucz podstawowy) oznacza, że ​​istnieje tylko jedna wartość Dostawca/B na wartość Pozycja/A. Nie mówi, że jest tylko jedna wartość na tabelę.

Ten film to bzdura. Cierpią z powodu tych samych błędnych przekonań na temat „zależności” i FD (zależności funkcjonalnych) i PK, jak twoje pytanie (więc może stąd je masz) i wielu innych błędnych przekonań i nie wiedzą, o czym mówią. Znajdź podręcznik, slajdy i/lub kurs na uczelnię/uniwersytet (z których wiele jest bezpłatnych online).

Możemy mówić o FD, superkeys, unikalnych zestawach kolumn, CK (klucze kandydujące) i PK wartości tabeli lub tabela zmienna . Zmienna table ma instancję jednej z tych rzeczy, jeśli każda wartość tabeli, która może pojawić się w danej firmie/aplikacji, ma ją jako instancję.

Zestaw kolumn jest funkcjonalnie zależny od drugiego, gdy określony zestaw może mieć tylko jedną wartość na daną wartość zestawu określającego.

Ale to nie oznacza, że ​​różne wartości określające mają różne wartości określone.

Superklucz to zestaw kolumn, które mają inną wartość podrzędu w każdym wierszu. CK to superklucz nie zawierający mniejszego superklucza. PK to niektóre CK, które wybrałeś jako PK. Każdy zestaw kolumn funkcjonalnie zależy od każdego superklucza. Niektóre z nich to CK. Jednym z nich może być PK.

Ale to nie oznacza, że ​​jakiś podrzęd inny niż superklucz/CK/PK (i co wiersz musi być funkcjonalnie zależnym od nich z definicji) jest unikalny.

Nie na podstawie A będącego PK/CK. Bycie PK/CK implikuje, że A i każdy nadzbiór A jest unikalny. Jeśli „zmienisz A” w sensie patrzenia na inny wiersz lub patrzenia na inną wartość tabeli, która ma inną wartość A dla tego wiersza (która nie może znajdować się w żadnym innym wierszu żadnej tabeli), nie ogranicz to, co może być B.

Niektóre inne ograniczenie może ograniczać to, czym może być B. Np. jeśli FD {Dostawca} -> {Telefon dostawcy} ma zastosowanie, to ogranicza to, jaki numer telefonu dostawcy może znajdować się w innych wierszach, nawet jeśli pozycja będąca PK nie.

To, czy jakaś konkretna FD jest wstrzymana, zależy od tego, jakie wiersze mają trafić do tabeli w danej sytuacji i jakie sytuacje mogą się pojawić. Wtedy to, co trzymają FD, określa, jakie są superklucze i CK. Następnie możesz wybrać CK jako 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. Tablica w zapytaniu SQL?

  2. Błąd podczas wysyłania danych wyjściowych zapytania mysql do pliku csv

  3. Przechowywanie obrazów w systemie plików jako pliki lub w polu bazy danych BLOB jako pliki binarne

  4. Błąd java.lang.ClassNotFoundException:com.mysql.jdbc.Driver podczas uruchamiania JAR za pomocą wiersza poleceń

  5. Problem z mysqldump:opcja --defaults-extra-file nie działa zgodnie z oczekiwaniami