![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czy klucze obce i związki między tabelami w mysql w ogóle działają ?
Utworzylem klucz obcy wedlug wzoru wykonujac zapytanie w phpmyadminie (bo u mnie nie ma nigdzie widoku relacyjnego zeby to zrobic recznie): ALTER TABLE c ADD CONSTRAINT nazwa_ograniczenia 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 Obie tabele ustawiłem na InnoDB. W phpmyadminie w jednej tabeli dodalem wiersz wpisujac w kolumnie, ktora jest kluczem obcym ID, ktore nie wystepuje w drugiej tabeli w kolumnie bedacej kluczem podstawowym i wiersz zostal dodany ![]() --------------------------------------------------------------------------------------------------------------------------------------------------------------------- Już chyba mam przyczynę: najpierw należy zmienić typ tabel a potem zrobić związek między nimi. Ja najpierw zrobiłem związek a potem zmieniłem typ tabel i dlatego związek nie działał. Ten post edytował nieraczek 26.10.2008, 08:54:44 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Relacje w mysql działają pod warunkiem, że:
- używasz MySQL min. w wersji 5. - tabele są typu InnoDB - kolumny kluczy podstawowych i powiązanych z nimi kluczy obcych są tego samego typu -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 2.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
podłączam się do pytania:
Stworzyłam bazę za pomocą phpMyAdmin. Mam (m.in) takie tabele: nauczyciel(id_nauczyciela, ... , nazwa_przedmiotu, id_przedmiotu) przedmiot(id_przedmiotu, nazwa_przedmiotu) Utworzyłam w tabeli nauczyciel klucze obce do id_przedmiotu i nazwy_przedmiotu. Jednak kiedy w tabeli przedmiot zmieniam wartość id_przedmiotu to nie zmienia się ona w tabeli nauczyciel :/ Myślałam, że ten klucz obcy tak właśnie działa, ale coś mi nie gra tylko nie wiem co :/ Czy to błąd w myśleniu? Może w tabeli nauczyciel nic nie ma prawa się zmieniać? (w/w warunki spełnione) Czy to może chodzi o to, że klucz obcy może być tylko do klucza podstawowego utworzony? edit: mam ustawione opcje update cascade ... Ten post edytował fisz 2.01.2009, 23:05:48 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
baza sprawdza spojnosc danych w trybie transakcyjnym jezeli masz 2 tabele np. ludzie (1 - jas 2 - malgosia) i zwierzeta (1- kot - 1(id osoby), 2.-pies -1) to jeżeli zmienisz właściciela kota z 1 na 2 to i tak baza jest w stanie spojnym. Rekordy wiązane sa na podstawie realacji czy istnieje a nie na zasadzie logicznej bo o logice aplikacji decyduje twórca warstwy biznesowej
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 2.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za odpowiedź, sama sobie już w sumie odpowiedziałam:
problemem było to, że wcześniej bazy stworzyłam w krasnalu, teraz przerzuciłam się na WAMPa i bazę tylko skopiowałam. Nie wiem czy to jest przyczyną, ale jak stworzyłam bazę od początku to już wszystko ładnie się razem zmieniało...(wcześniej po skopiowaniu nie miałam pliku .opt) Może to jest przyczyna, a może mając świeższy umysł coś zrobiłam inaczej ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.04.2025 - 08:44 |