![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zamierzam zrobić drzewo genealogiczne. I w przypadku jakby to były zwykłe dane typ data urodzenia, miejsce, imię, nazwisko itp. Nie było by problemu. Problem pojawia się w momencie dodatkowych informacji typu matka, ojciec, współmałżonek oraz dzieci. W takim przypadku każde wpisane dziecko może być rodzicem oraz posiadać współmałżonka, jak również każde wpisany współmałżonek może posiadać dzieci. Nie mam pojęcia w jaki sposób to rozwiązać ![]() Przykład poniżej Tabela główna Id_główne – imię – nazwisko – data urodzenia – miejsce – współmałżonek itp. Tabela dodatkowa (współmałżonek) Id_współ – id_główne – imię – nazwisko - data urodzenia – miejsce itp. Tabela dodatkowa (dziecko) Id_dziecko – id_główne - imię – nazwisko - data urodzenia – miejsce itp. Proszę o pomoc... |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj na stronie depesz.com o drzewach. Tu się prosi o zwykłe drzewko id, parentid.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za przykład, a jaka metoda drzewa w moim przypadku byłaby najlepsza ? bo na stronie jest kilka.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A która ma id, parentid?
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Generalnie 3 metody mają parametr id i parent_id w przykładzie
metoda wielu tabel metoda “śledzenie rodzica” metoda pełnych ścieżek Witam ponownie Przeanalizowałem sugerowane rozwiązanie – id, parentid I generalnie w drzewie genealogicznym nie można tego zastosować – już tłumacze dlaczego – proszę o sprostowanie jeżeli podszedłem do zagadnienia. Jest Ojciec Marek [id] [parenid] [nazwa] 1 0 Marek I ma Córkę Zosię i syna Olka [id] [parenid] [nazwa] 2 1 Zosia 3 1 Olek A syn Olek na Córkę Marysie [id] [parenid] [nazwa] 4 3 Marysia I tak dalej – to oczywiście jest jasne i przejrzyste. A co w przypadku gdy Ojciec Marek ma żonę Annę ? Przecież nie mogę nie mogę dodać wpisu w takiej formie [id] [parenid] [nazwa] 5 0 Anna Ponieważ Dziecko nie będzie powiązane z dwoma rodzicami a tylko z jednym. Z powyższego przykładu wynika że drzewo należy wprowadzać od korzenia. A co w przypadku gdy okaże się że będę chciał wprowadzić Ojca i Matkę Marka, w powyższym przykładzie nie ma takiej możliwość. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jakoś tak, nie chce mi się już myśleć o tej porze http://sqlfiddle.com/#!17/f6c3e/1
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ok to jest dla mnie jasne, ale jak dodać wpis do bazy. Bo przecież np. Ojciec jest dodany, następnie dodajemy Dziecko do Ojca a co z Matką ? Soko już Dziecko jest dodane ? do Ojca ?
A co z wprowadzaniem danych ? w tym przypadku można tylko i wyłącznie wprowadzać dane od korzenia. Ten post edytował busyboy 11.03.2020, 22:02:08 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym się chyba pokusił o Nested Set ale z założeniem że małżonek jest przyklejony przez np. partner_id. Cała reszta by była spoko. Zaczynasz od zerowego korzenia a potem dodajesz pierwszy wpis
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Pyton_000 ja rozumie jedną i drugą metodę (Nested Set z tego co doczytałem jest to metoda left - right) strukturę w bazię itp. A jak dodawać w tym przypadku rekordy. Skoro jak dodam Ojca a następnie jego dziecko to w jaki sposób mam dodać Matkę do dziecka skoro już zostało dodane do Ojca ?
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie dodajesz.
Jeśli dzieckiem rodzica jest Mężczyzna to żona jest przyklejona jako partner_id Potem dziecko przyklejasz do ojca. Ojciec ma "w sobie" informację o matce. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem
![]() Dodaje pierwszy wpis [id] [parenid] [Nazwa] 1 0 Marek (Ojciec) Dodaje drugi wpis [id] [parenid] [Nazwa] 2 1 Kasia (Córka) A Matka gdzie ? jak ją dodam skoro już jest jeden wpis z dzieckiem i nie może być dwóch ? |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
ja mówię o nested set z partner_id
Coś takiego: Kod root (1,8) | / Marek (ojciec) (2,7) partner_id = 1(Ola) | / \ Ala(3,4) Tomek(5,6) tabela partners id, name --------------- 1, Ola Czyli Ola (matka) jest przyklejona do Marka przez kolumnę partner_id (obok parametrów left i right) Ten post edytował Pyton_000 11.03.2020, 22:38:40 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czyli można również to zrobić w taki sposób (dodać)
[id_rodzic] [id_dziecko] [nazwa] 1 0 Marek (Ojciec) 2 1 Kasia (Córka) 3 1 Monika (Córka) A następnie dodać e oddzielnej tabeli (partner) [id] [id_partner][nazwa] 1 1 Marta (Żona Martka) 2 3 Tomek (Mąż Moniki) Dobrze rozumiem ? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dałem ci pełen przykład z twoimi danymi a ty się upierasz na wciskanie imienia do drzewa. A jak będziesz chciał date urodzenia np dodać? Oczywiste że musisz zacząć od góry choćby ze względu na klucze obce których mi się nie chciało zakładać. Metoda z przypieciem matki też może być.
-------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Rozdziel sobie tabele na 2 lub więcej
W jednej są tabele identyfikacyjne ludzi, imiona, nazwiska, daty W drugiej powiązania. W ogóle co z dziećmi, skąd wiadomo które jest czyje. Przecież są różne przypadki rodzicielstwa. Więc powinna być kolejna tabela z gdzie: id_child | id_men_parnter | id_women_partner | id_relationship id_relationship - to typ relacji np. 1 - dziecko rodzone 2 - adopcja 3 - etc. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czy tak może wyglądać tabela ? przykład poniżej
[id] [id_partner] [id_dziecko] [imie] [płec] [naziwsko] [data_urodzenia] [miejsce] 1 0 0 Marek M Nowak 10.08.1965 Warszawa Tata 2 1 0 Anna K Nowak 15.05.1969 Warszawa Mama 3 0 1 Zosia K Kowalska 20.03.1989 Toruń Córka (Taty i Mamy) 4 0 1 Tomek M Nowak 15.04.1990 Wrocław Syn (Taty i Mamy) 5 3 0 Wojtek M Kowlaski 13.02.2987 Toruń Mąż Zosi 6 3 0 Marek M Lisiecki 15.06.1985 Poznań 2 Mąż Zosi 7 0 6 Bosia K Lisiecka 10.02.2017 Poznań Córka (Zosi i 2 męża Marka) |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Tak jak powiedział Viking, nie wrzucaj do drzewa danych osobowych. W drzewie zostaw podstawowe powiązania czyli same ID.
Dwa... [id_partner] [id_dziecko] Po co to tutaj? Co z przypadkami wielożeństwa, wielodzietnością? Z dziećmi z małżeństw mieszanych? Nazewnictwo: Tata, mama to tak się mówi w domu, powinieneś używać oficjalnego nazewnictwa powiązań: Ojciec, matka, stryj, pasierb, wuj, ciotka, swat, teść, teściowa, świekr, świekra, szwagier, zięć, synowa, probant, kuzyn, brat/siostra cioteczny/wujeczny etc. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 22.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Nazewnictwo typu Mat,Tata podał tylko i wyłącznie do przykładu (oczywiście że te dane nie zostaną napisane) Jeżeli chodzi o nazewnictwo (w tym przypadku nie jest mi coś takiego potrzebne - stryj,treść,wuj etc.) Chodzi mi tylko o podstawowe informacje imię,nazwisko,data urodzenia,miejsce plus ewentualnie inne dane które można dodać (podstawowe) Wielożeństwo jest brane pod uwagę, wielodzietność też a jeżeli chodzi o małżeństwa mieszane hmm nie idźmy aż w takie strajności to ma być proste drzewo genealogiczne przedstawiające rodziców oraz ich dzieci nic więcej. Dlaczego nie mogę do tabeli wrzucać dodatkowych danych tylko powiązania ? W takim przypadku (tak mi się wydaje) jestem w stanie zrobić to w jednej tabeli... W przykładzie powyżej (tabeli) pokazałem moje rozwiązanie (mam dzieje poprawne) i prosiłem Was o weryfikację. Jest tam uwzględniona wielodzietność oraz przypadek wielożeństwa [id] [id_partner] [id_dziecko] [imie] [płec] [naziwsko] [data_urodzenia] [miejsce] 3 0 1 Zosia K Kowalska 20.03.1989 Toruń Córka (Taty i Mamy) 4 0 1 Tomek M Nowak 15.04.1990 Wrocław Syn (Taty i Mamy) [id] [id_partner] [id_dziecko] [imie] [płec] [naziwsko] [data_urodzenia] [miejsce] 3 0 1 Zosia K Kowalska 20.03.1989 Toruń Córka (Taty i Mamy) 5 3 0 Wojtek M Kowlaski 13.02.2987 Toruń Mąż Zosi 6 3 0 Marek M Lisiecki 15.06.1985 Poznań 2 Mąż Zosi |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zrób jak uważasz. Najwyżej przepiszesz.
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 23:03 |