Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacje w mysql i phpmyamin
Forum PHP.pl > Forum > Bazy danych > MySQL
joka13
Witam

Mam do napisania stronę z bazą (mysql), która będzie zarządzana z poziomu phpmyadmin'a.
Tak bardzo ogólnikowo, to ta strona ma być pewnego rodzaju bazą osób. W jednej tabeli będą dane osób (imię, nazwisko,...) w kolejnej jakieś wizyta (data wizyty, cel, ...), w ostatniej palcówka (nazwa, adres).
Problem w tym, że te tabele muszą posiadać relacje.
Próbowałem wzorowzć się na tym => http://dev.mysql.com/doc/refman/5.0/en/inn...onstraints.html ale nie działało mi to.
Podam przykłady tych tabel:

Tabela pierwsza:
osoba
#pesel (pk)
*imię
*nazwisko
*data urodzenia

Tabela druga:
wizyta:
#lp (pk)
*data_wizyty
*cel

Tabela trzecia:
placowka
#numer_palcowki
*adres (oczywiście podział na ulicę, kod...)
*nazwa

Teraz gdy będzie dodana jakaś wizyta dla danej osoby, to muszą być one powiązane relacją, aby konkretnej osobie odpowiadały konkretne wizyty (tabela druga) oraz informacja, że miało to miejsce w konkretnej placówce (tabela trzecia). Pytanie tylko gdzie w tych przykładowych tabelach musi być foreign key (fk) tak, aby połączył te tabele?
Tu musi być relacja jeden (po stronie osoby) do wiele (po stronie wizyty). Tak samo w przypadku osoba-placówka.
Da się to zrobić w phpmyadminie?
Norr
Doradzam pobrać Ci programik, który jest na stronie MySQL, nazywa się <a href="http://dev.mysql.com/downloads/workbench/5.1.html" target="_blank">MySQL Workbench</a>. W graficzny sposób możesz stworzyć tabele i powiązać je relacjami, a następnie wygenerować kod SQL, który wklejasz w okienku SQL w phpmyadmin. Chyba najprostrzy sposób.
joka13
Cytat(Norr @ 3.08.2009, 00:56:07 ) *
Doradzam pobrać Ci programik, który jest na stronie MySQL, nazywa się <a href="http://dev.mysql.com/downloads/workbench/5.1.html" target="_blank">MySQL Workbench</a>. W graficzny sposób możesz stworzyć tabele i powiązać je relacjami, a następnie wygenerować kod SQL, który wklejasz w okienku SQL w phpmyadmin. Chyba najprostrzy sposób.

Dzięki, bardzo fajna aplikacja.
Jeszcze tak, żeby się upewnić, że dobrze myślę... tabele będą wyglądały tak (już z kluczami obcymi):

Tabela pierwsza:
osoba
#pesel (pk)
*imię
*nazwisko
*data urodzenia

Tabela druga:
wizyta:
#lp (pk)
*pesel (fk)
*data_wizyty
*cel

Tabela trzecia:
placowka
#numer_palcowki
*pesel (fk)
*adres (oczywiście podział na ulicę, kod...)
*nazwa

Tak powinno to wyglądać ?
simi20
Nie tak.
Ale tak jest już dobrze
Tabela pierwsza:

(w takeli osoba w zasadzie pesel może być PK to już jak wolisz nie jeden pewnie przyczepi się i powie że po co dodatkowa kolumna z daną skoro pesel jest unikatową wartością ale z kolei jeżeli wstawisz kolumnę id_osoba dasz jej auto increment to masz pewność że wartość nigdy się nie powturzy a tak przy peselu musiałbyś sprawdzać czy dany numer już nie występuje, w sumie i tak musiałbyś to sprawdzać smile.gif, ale ja wolę mieć i tak zawsze w każdej tabeli kolumnę id dla większej przejrzystości)

osoba
id_osoba (PK)
pesel
imię
nazwisko
data urodzenia

Tabela druga:
wizyta:
id_wizyta (PK)
id_osoba (FK)
id_placowka (FK)
data_wizyty
cel

Tabela trzecia: placowka
id_placowka (PK)
nazwa
ulica
miasto
kod
itd... (zależy jakie dane chcesz trzymać o tej placówce)

Powodzenia smile.gif
joka13
simi20, dzięki.
Tabele oczywiście podałem przykładowe, żeby poglądowo dowiedzieć się jak z tymi FK to wygląda.
Już wiem co i jak z kluczami.

Teraz muszę jeszcze dopieścić/dopracować tabele, bo to podstawa i można brać się za pisanie w php.

Dzięki jeszcze raz wszystkim, za pomoc.
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-2024 Invision Power Services, Inc.