phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Zrozumienie baz danych kluczy podstawowych i relacji z MySQL (phpmyadmin)

TL;DR Nie potrzebujesz zadeklarować "powiązanie" tj. klucz obcy (FK) do zapytania. Ale to dobry pomysł . Kiedy to zrobisz, FK może odwoływać się do klucza podstawowego (PK) lub wszelkie inne UNIKALNE kolumny.

PK i FK są błędnie nazywane „związkami” w niektórych metodach i produktach. Relacje aplikacji są reprezentowane przez tabele . (Tabele bazowe i wyniki zapytań.) PK i FK są ograniczeniami:informują DBMS, że mogą wystąpić tylko określone sytuacje, więc może zauważyć, kiedy popełnisz określone błędy. Nie są to relacje, są to stwierdzenia prawdziwe w &każdym stanie bazy danych i sytuacji aplikacji. Nie musisz znać ograniczeń, aby aktualizować i przeszukiwać bazę danych.

Po prostu wiedz, co oznacza każdy stół . Tabele podstawowe mają znaczenia nadane przez DBA, które mówią, co oznaczają ich wiersze. Zapytania mają również znaczenia, które mówią, co oznaczają ich wiersze. Znaczenia zapytań są łączone ze znaczeń tabeli podstawowej równolegle z tym, jak ich wartości wynikowe są łączone z wartościami i warunkami tabeli podstawowej.

  • image_tbl -- obraz [Id] znajduje się w albumie o nazwie [AlbumName], ma nazwę [nazwa], ma datę [data/godzina] i ma komentarz [komentarz]
  • album_tbl -- album [identyfikator albumu] ma nazwę [nazwa albumu]

Nie masz masz zadeklarować jakiekolwiek PK/UNIKALNE lub FK! Ale to dobry pomysł ponieważ wtedy DBMS może zabronić niemożliwych/błędnych aktualizacji. PK/UNIQUE mówi, że wartość podrzędu dla jego kolumn musi pojawić się tylko raz. FK mówi, że wartość podrzędu dla jego kolumn musi pojawić się jako wartość podrzędna PK/UNIQUE w tabeli, do której się odwołuje. Fakt, że te ograniczenia dotyczą tabel podstawowych, oznacza, że ​​pewne ograniczenia dotyczą wyników zapytań. Jednak znaczenie tych wyników zapytania zależy od kombinacji tabeli i warunków zapytania, niezależnie od tych ograniczeń. Np. czy nazwy albumów są unikalne,

  • image_tbl JOIN album_tbl USING albumName -- obraz [Id] znajduje się w albumie o nazwie [NazwaAlbumu], nosi nazwę [Nazwa], ma datę [data/godzina] i ma komentarz [komentarz] ORAZ album [IDAlbumu] nosi nazwę [NazwaAlbumu]

Jedynym problemem jest to, że jeśli nazwy albumów nie są unikalne, to znajomość nazwy albumu obrazu nie powie ci, w którym albumie się on znajduje; wiesz tylko, że jest w albumie o tej nazwie. Z drugiej strony, jeśli nazwy albumów są unikalne, nie potrzebujesz album_tbl albumID.

Jeśli więc nazwy albumów są unikalne, zadeklaruj albumName UNIQUE w album_tbl. Następnie w image_tbl zidentyfikuj album według jakiejś kolumny PK/UNIQUE w album_tbl. Ponieważ identyfikator_albumu jest prawdopodobnie obecny tylko w celu identyfikacji albumów, normalnie spodziewalibyśmy się, że zostanie wybrany. Następnie w image_tbl zadeklaruj tę kolumnę jako FK odwołującą się do album_tbl.

Indeksy PS generalnie przyspieszają wykonywanie zapytań kosztem czasu i przestrzeni. Deklaracja klucza podstawowego w deklaracji tabeli automatycznie deklaruje indeks. Dobrym pomysłem jest indeksowanie zestawów kolumn PK, UNIQUE i FK.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Jak uzyskać dostęp do mysql z terminala mac, używając xampp?

  2. phpMyAdmin:Nie można zaimportować dużego pliku bazy danych, jakieś sugestie?

  3. Ciąg SQL Select nie działa

  4. Jak stworzyć relację między dwiema tabelami za pomocą PHPMyAdmin?

  5. Wylogowujesz się z phpMyAdmina?