![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 11.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przymierzam się do rozpoczecia pisania włąsnego projektu i natrafiłem na pewnien problem, który przedstawie tutaj w uproszczeniu: Mam dwie klasy: koła i kwadraty, które chciałym zapisać w bazie Obie klasy posiadają takie wartości jak położenie (x, y), jednak oprócz tego kwadraty mają długość boku a koła średnicę. Często będę potrzebował znać położenia i jednych i drugich natomiast wydaje mi się bezsensowne toworzenie tabeli zawierającej przemieszane atrybuty dla kół i kwadratów, zresztą o ile się nie myle prowadzi to do stworzenia tabeli w pierwszej postaci normalnej. Poza tym krotek będzie masa. Oczywiście jak pisałem to uproszenie, takich klas do zapisania będzie dużo więcej i będą miały całą masę innych niewspólnych atrybutów, jednak będą i takie które pozostaną wspólne. Jednym z pomysłów jest stworzenie poprostu osobnych tabel dla każdej z klas - co jest niewygodne bo kient musi pobrać dane ze wszystkich tabel i porównywać je u siebie (wspólne atrybuty). Inny pomysł, mojego wykładowcy, zakłada stworzenie odpowiednich powiązań między tabelami ![]() Takich powiązań między tabelami (na poziomie bazy danych) które przy np. próbie wyciągnięcia wszystkich informacji o krotce o #1, zidentyfikują ją jako 'typ: 1' (koło) i przekażą w odpowiedzi odpowiednie pola z tabeli 'typ 1' Z grubsza zakładało to wykorzystanie procedur składowanych (?) ... i tyle z całego pomysł. Chociaż przy mojej, pobieżnej, wiedzy o procedurach skłądowych jakoś ciężko mi sobie to wyobrazić. Dlatego mam: Pytanie zerowe, jak można to wogóle sesownie zrealizować i czy pomysł przedstawiony przed chwilą ma ręce i nogi ? Wstępnie całosć chciałbym stworzyć w oparciu o MySQL'a dlatego pierwsze moje pytanie brzmi: jeżeli pomysł ma ręce i nogi to jak wygląda możliwość stworzenia czegoś takiego pod MySQL właśnie ? Drugie jeżeli nie MySQL, to co innego, bardziej nadającego się ? |
|
|
![]() |
![]() ![]()
Post
#2
|
|
![]() Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
Jeśli idzie o MySQL to twój pomysł ma ręce i nogi, ale jeśli byś wybrał PostgreSQL to mógłbyś użyć dziedziczenia na tabelach w bazie danych, np. tworzysz tabelę klasa (ang. class), która zawiera wszystkie wspólne atrybuty dla każdej klasy i tabele dziedziczące po klasa:
W taki sposób możesz sobie stworzyć strukturę drzewiastą na tabelach ![]() ![]() -------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:14 |