Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Klucze obce, relacje
Riggs
post 30.06.2007, 17:22:11
Post #1





Grupa: Zarejestrowani
Postów: 162
Pomógł: 13
Dołączył: 16.06.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Indeo
post 30.06.2007, 23:50:19
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
neoangin
post 7.12.2007, 12:56:19
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.07.2006
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 02:54