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

Czy mogę użyć tego samego ograniczenia klucza obcego w dwóch różnych tabelach?

Są kolumny i klucze obce (FK) i są ograniczenia.

Możesz mieć nazwę kolumny w tabeli niezależnie od innych tabel.

FK to odwołująca się tabela i zestaw kolumn oraz przywoływana tabela i zestaw kolumn. Wszystkie nazwy razem identyfikują FK. To koncepcyjna rzecz dotycząca bazy danych.

Ograniczenie FK, będące ograniczeniem, to rzecz, której nazwa musi być unikalna w bazie danych. Posiada i egzekwuje powiązany FK, a mianowicie ten opisany w jego deklaracji. Możesz mieć wiele ograniczeń FK w tabeli, wymuszając ten sam FK.

DBMS ma automatyczne unikalne nazwy dla ograniczeń FK. Np. część nazwy plus część liczbowa, gdzie ograniczenie jest numerem FK ograniczenia tabeli o tej nazwie. W rzeczywistości możesz mieć ten sam bezimienny tekst definicji ograniczenia FK wiele razy w tabeli iw wielu tabelach, każda dla innego ograniczenia FK. (Te w danej tabeli wymuszają to samo FK.)

Powinieneś mieć unikalny schemat nazewnictwa, kiedy chcesz je nazwać. Odwołania i nazwy tabel, do których się odwołują, powinny być zaangażowane, a w razie potrzeby rozróżniać nazwy kolumn.

Myląc, mówimy FK, gdy mamy na myśli ograniczenie FK.

Kiedy mówisz „To ten sam klucz obcy w dwóch różnych tabelach”, to nadużywa terminów. W grę wchodzą dwa różne FK i odpowiadające im ograniczenia FK. Masz na myśli, że może „to te same odwołujące się kolumny i przywoływana tabela i kolumny w obu ograniczeniach FK” lub „to ten sam tekst odwołujący się w deklaracjach ograniczenia FK obu deklaracji tabeli”. Ale nazwy ograniczeń FK muszą być unikalne.

Kiedy mówisz „W obu przypadkach odnosi się to do użytkownika wewnętrznego”, potwierdzasz, że typ i/lub tabela kolumny, do której się odwołuje, są takie same dla obu ograniczeń FK. Ale są to różne ograniczenia FK dla różnych FK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykładowa baza danych MySQL

  2. mysql_real_escape_string i array_map zwraca puste ciągi?

  3. Czy COUNT(*) zawsze zwraca wynik?

  4. Porównaj struktury dwóch baz danych?

  5. Serwer MYSQL zniknął