Jak stworzyć taką relacje?

Odpowiedz Nowy wątek
Mateo442
2016-10-08 16:31
Mateo442
0

Witam.

[Osoba]

  • Imie
  • Nazwisko
    -Id

[Pies]

  • Imie
  • Id wlasciciela

[Karta Choroby]
-Id_psa

[Wizyta]
-id_karty_choroby
-data
-informacje

Mam trochę problem, aby w phpmyadmin stworzyć taką relacje. Chodzi mi o to,
aby jedna Osoba mogła mieć wiele psów, a każdy pies jedną kartę choroby, a w karcie choroby - wiele wizyt.

Próbuje tworzyć klucze obce, ale wychodzą mi jakieś błędy. Czy powinienem usunąć dane z BD przed takimi modyfikacjami ? i robić je na pustej bazie?
Ewentualnie jak powinno wyglądać zapytanie, które stworzy mi taką relacje jak wyżej ?

Pozdrawiam

Pozostało 580 znaków

Świetny Młot
2016-10-08 17:31
Świetny Młot
0

Skoro pies może mieć tylko jedną kartę choroby to po co mu robić osobną tabelę? Może id psa połącz od razu z wizytami.

Pozostało 580 znaków

c7
2016-10-08 17:39
c7

Rejestracja: 5 lat temu

Ostatnio: 2 godziny temu

0

A w jaki sposób próbujesz utworzyć te klucze obce?
W twoich tabelkach brak jest unikatowego ID dla każdego rekordu.
(Pies ma tylko imie i Id_właściciela) więc w jaki sposób chcesz połączyć je z [karta choroby] która zawierać ma id_psa?

Pozostało 580 znaków

2016-10-08 17:47

Rejestracja: 4 lata temu

Ostatnio: 8 godzin temu

3

Jaki masz problem? Daj komunikat błędu. Daj też kod sql.
Nie powinno być problemu. Dajesz coś w stylu:

ALTER TABLE Pies
ADD FOREIGN KEY (id_wlasciciela)
REFERENCES Osoba(id)

To że masz dane nie powinno być problemem, co innego jakbyś np. chciał ustawić not null na nullowych kolumnach itp ale samo dodanie kluczy obcych to nie robi.

edytowany 1x, ostatnio: szarotka, 2016-10-08 20:00
Wstawiaj kod w znaczniki kolorujące składnie. - nz 2016-10-08 19:57
a masz faszysto, co to za kod, linijka jedna pffff - szarotka 2016-10-08 20:00

Pozostało 580 znaków

2016-10-08 17:48

Rejestracja: 10 lat temu

Ostatnio: 7 miesięcy temu

0

Trochę to trzeba uporządkować...

Tu jest relacja jeden-do-wielu między tabelami Osoba i Pies oraz analogiczna relacja jeden-do-wielu między tabelami Pies i Wizyta.
Nie widzę sensu tworzenia tabeli KartaChoroby, jeśli tam nie ma żadnych danych wspólnych dla wszystkich wizyt oprócz klucza.

  1. Tworzysz tabelę Osoba
  2. Tworzysz tabelę Pies i relację z tabelą Osoba
  3. Tworzysz tabelą Wizyta i relację z tabelą Pies

Osoba
OsobaId --klucz główny, int identity not null
ImieOsoby
Nazwisko

Pies
PiesId --klucz główny, int identity not null
OsobaId --klucz obcy, int null
ImiePsa

Wizyta
WizytaId --klucz główny, int identity not null
PiesId --klucz obcy, int null
DataWizyty
Informacje

edytowany 1x, ostatnio: Artur Protasewicz, 2016-10-08 18:19

Pozostało 580 znaków

Mateo442
2016-10-08 18:26
Mateo442
0

Dziękuje, właśnie o takie informacje mi chodziło :)
Biorę się za za kod :)

Pozostało 580 znaków

2016-10-09 00:25
Moderator

Rejestracja: 12 lat temu

Ostatnio: 21 sekund temu

Lokalizacja: Wrocław

0
Mateo442 napisał(a):

Ewentualnie jak powinno wyglądać zapytanie, które stworzy mi taką relacje jak wyżej ?

Którą relację, bo wypisałeś cztery?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0