Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z opracowaniem odpowiedniej struktury tabel
tornax
post
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ę ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Zbłąkany
post
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:
  1. CREATE SEQUENCE id_class_seq MINVALUE 1 NOMAXVALUE NO CYCLE;
  2. CREATE TABLE class (
  3. id INTEGER NOT NULL UNIQUE DEFAULT NEXTVAL('id_class_seq') PRIMARY KEY,
  4. name VARCHAR(100) NOT NULL UNIQUE,
  5. x INTEGER NOT NULL,
  6. y INTEGER NOT NULL
  7. );
  8. CREATE TABLE circle (
  9. diameter INTEGER NOT NULL
  10. ) INHERITS class;

W taki sposób możesz sobie stworzyć strukturę drzewiastą na tabelach smile.gif . Mimo wszystko do czegoś takiego poleciłbym PostgreSQL tongue.gif


--------------------
Ś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"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 10:14