Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klucze obce, relacje
Forum PHP.pl > Forum > Bazy danych > MySQL
Riggs
Witam!
Otóż stworzyłem bazę danych, po jej stworzeniu chciałem za pomocą DBDesigner 4 zrobić układ graficzny (potrzebny do dokumentacji). W bazie nie zakładałem kluczy obcych - po prostu w zapytaniach łączyłem tabele po odpowiednich kolumnach. W phpMyAdmin nigdzie nie ma opcji klucza obcego. Czy można teraz jakoś dodać te klucze, czy dodanie kluczy obcych nie wpłynie negatywnie na bazę danych?
Pozdrawiam
Indeo
Klucze obce są w mysql. Trochę gorzej z szeroko rozumianymi relacjami. W innych systemach relacje zajmują doniosłe miejsce w administracji bazami, w mysql natomiast relacje są jak duch święty, cholernie dużo robią ale ich nie wiadać winksmiley.jpg - po prostu nie mozna w prosty sposób wyrzucić raportu jak co z czym jest powiązane.

Klucze obce trzeba definiować na etapie tworzenia tabel - nie można nałozyc kluczy na istniejących tabelach tak jak można to zrobić ze zwykłymi indeksami (ochrona integralności) - przynajmniej ja nie potrafię. Poszukaj w manualu mysql FOREIGN KEYS. Jak będziesz miał problem ze znalezieniem to napisz to wrzuce z pracy kilka takich powiązanych tabel. Klucze obce to bardzo mądra i przydatna rzecz chroniąca logicznie baze przed głupotami typu pozycje faktury bez nagłówka faktury, czyli "ochrona wdów i sierot" smile.gif.
neoangin
Cytat
Klucze obce trzeba definiować na etapie tworzenia tabel - nie można nałozyc kluczy na istniejących tabelach tak jak można to zrobić ze zwykłymi indeksami (ochrona integralności) - przynajmniej ja nie potrafię.



mozna np napisac w sql:


  1. ALTER TABLE c ADD FOREIGN KEY (d) REFERENCES b(a);



c - tabela w ktorej ma byc klucz obcy
d - rekord tabeli b. kluczem obcym
b - tabela z kluczem glownym
a - klucz glowny do ktorego laczy klucz obcy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.