Skocz do zawartości

[SQL]: Problem, mądrych relacji między tabelami


yonami

Polecane posty

Witam

 

Potrzebuję zrobić najmądrzej jak się da, relację między tabelami. Być może problem tylko ja widzę, gdyż jestem w zasadzie newbie jeżeli chodzi o MySQL.

 

W każdym bądź razie, postaram się wyjaśnić na prostym przykładzie, gdzie ja dostrzegam problem.

 

PRZYKŁADOWE TABELE

KOD

create table parents ( id int, firstname varchar(32), lastname varchar(32), age int(2) );

create table children ( id int, firstname varchar(32), lastname varchar(32), age int(2) );

 

 

Teraz potrzebna jest relacja między rodzicami a dziećmi. Załóżmy, że wyglądała by tak:

KOD

alter table children add ( pid int, foreign key pid references parents(id) );

 

 

Dlaczego widzę problem? Załóżmy, że chcę wyświetlić na stronię imiona dzieci i imię rodzica, w sytuacji gdy podany mam id rodzica (pseudokod):

KOD

x = select * from children where pid=0;

y = select * from parents where id=0;

print x['firstname'] + y['firstname'];

 

 

Jak widać muszę przeszukiwać wielokrotnie bazę selectem. Chciałbym, mieć referencję od razu też do imiona rodzica:

KOD

alter table children add ( pfirstname varchar(32), foreign key pfirstname references parents(firstname) );

 

 

Wyjdzie mi: (pseudokod)

KOD

x = select * from children where pid=0;

print = x['firstname'] + x['pfirstname'];

 

 

Jednak wtedy problem ( ja przynajmniej go widzę ), jest w dodawaniu dzieci:

KOD

insert into children values ( 0, 'Jadzia', 'Nazwiskowa', 3, 'Nazwiskowy' );

 

 

Czy da się, zrobić relację, nie wymagającą podawania ciągów znaków, tak jak w tym przypadku "Nazwiskowy" przy nazwisku rodzica? Aby podając samo id rodzica, tworzona była przez mysql referencja do nazwiska?

 

PS: Właśnie teraz, kiedy wysłałem posta, pomyslałem, że jest to relacja "jeden do wielu"... Obudziłem się co dopiero :-D Zerknę na neta, bo chyba te relacje trzeba dodawać grupami, bo inaczej przeciez będą się gryźć. Poza tym z nazwiska trzeba jakoś zrobić klucz i oba również jakoś połączyć w relacji :-)

 

Mam nadzieję, że jasno wyjasniłem problem.

Bardzo proszę o podpowiedź :-)

yonami

Link do komentarza
Udostępnij na innych stronach

Doczytalem do polowy, reszty raczej nie ma sensu, bo problem widze w tych dwoch identycznych tabelach, nie wygladaja mi na "madre".

 

Stworz jedna tabele z ludzmi z i z dodatkowa kolumna ParentID.

 

Dodawanie do tabeli czegos co jest wiadome, ze bedzie, tez nie jest zby madre(alter).

 

Nie, nie. Te tabele są tylko przykładem. W rzeczywistości wszystkie tabale są całkowicie odmienne.

Po prostu potrzebuje mieć referencje do id i nazwy z innej tabeli, aby nie wykonywac zbyt wielu selectów.

Bo te dane są po prostu mi od kopa potrzebne i zawsze potrzebne będą.

 

I szczerze pisząc, nie mam zielonego pojęcia jak to zrobić. Google mi wcale nie pomaga - obraził się chyba :-)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...