ďťż
 
[postgres] Dziedziczenie tabel. ďťż
 
[postgres] Dziedziczenie tabel.
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[postgres] Dziedziczenie tabel.



Grzegorz Nowakowski - 13-03-2006 11:20
[postgres] Dziedziczenie tabel.
  Witam i pozdrawiam.

Skrobię aplikację opartą na Postgresie no i jakoś przy okazji wyszło,
że przyda mi się mechanizm dziedziczenia tabel. Ogólnie nie mam z tym
problemów, lecz pojawiły się takie ciekawostki, których jakoś nie mogę
doczytać się w dokumentacji.

Mamy bazę:

CREATE TABLE parent (
key int PRIMARY KEY,
parent_data int
);

CREATE TABLE child (
child_data int
) INHERITS (parent);

1) Czy istnieje możliwość wprowadzenia wiersza najpierw do tabeli
parent a dopiero później 'wypromowanie' go do tabeli child?

2) Dodajmy tabelę:

CREATE TABLE uncle (
key int PRIMARY KEY,
loves int REFERENCES child(key)
);

Postgres w tym momencie pyskuje, że child(key) nie jest unikatowy.
Wygląda na to, że indeksy nie są dziedziczone ani potomek nie korzysta
z indeksów ojca. To jest bug czy feature?

Pozdrawiam.
--
Grzegorz Nowakowski





Robert Grabowski - 13-03-2006 11:20

  Grzegorz Nowakowski wrote:
[...]
Z indeksami będzie problem. Próbowałem używać dziedziczenia kilka lat
temu jeszcze na 7.0 - 7.2 i też wychodziły różne kfiatki. Wg. mnie nie
warto się w to pakować - lepiej zrobić do koszernie. Np. późniejsze
przerzucenie zawartości bazy do innego RDBMS będzie problematyczne. Może
ktoś ma pozytywne doświadczenia z dziedziczeniem. Chętnie poczytam.

pozdrawiam
Robert Grabowski




Grzegorz Nowakowski - 13-03-2006 11:20

  Robert Grabowski <grabba@env.pl> writes:

> Grzegorz Nowakowski wrote:

> [....] Wg. mnie nie
> warto się w to pakować - lepiej zrobić do koszernie.

A co masz na myśli?

Pozdrawiam.
--
Grzegorz Nowakowski




wloochacz - 13-03-2006 11:21

  >> [....] Wg. mnie nie
>> warto się w to pakować - lepiej zrobić do koszernie.
>
> A co masz na myśli?
Jak Jehowa przykazał.

--
wloochacz





Grzegorz Nowakowski - 13-03-2006 11:21

  wloochacz <wl@no.spam> writes:

>>> [....] Wg. mnie nie
>>> warto się w to pakować - lepiej zrobić do koszernie.
>> A co masz na myśli?
> Jak Jehowa przykazał.

A tak nieco konkretniej?

Pozdrawiam.
--
Grzegorz Nowakowski




Grzegorz Nowakowski - 13-03-2006 11:21

  Grzegorz Nowakowski <krecik@rohlik.e-wro.net> writes:

> Wygląda na to, że indeksy nie są dziedziczone ani potomek nie korzysta
> z indeksów ojca. To jest bug czy feature?

Feature. Co prawda cecha unikatowości jest de facto dziedziczona ale
zbiór kluczy dziecka jest jakimś podzbiorem kluczy ojca, więc
rodzicielski indeks jest tu nieprzydatny.

Czasem dobrze jest się wyspać.

Pozdrawiam.
--
Grzegorz Nowakowski




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-03-2006 11:21

  Grzegorz Nowakowski wrote:
> Grzegorz Nowakowski <krecik@rohlik.e-wro.net> writes:
>
>
>>Wygląda na to, że indeksy nie są dziedziczone ani potomek nie korzysta
>>z indeksów ojca. To jest bug czy feature?
>
>
> Feature. Co prawda cecha unikatowości jest de facto dziedziczona ale
> zbiór kluczy dziecka jest jakimś podzbiorem kluczy ojca, więc
> rodzicielski indeks jest tu nieprzydatny.

Hmmm....:

http://www.postgresql.org/docs/8.1/i...l-inherit.html

These deficiencies will probably be fixed in some future release, but in the meantime considerable care is needed in
deciding whether inheritance is useful for your problem.

Feature, który będzie fixed? :)

--
P.M.




Robert Grabowski - 13-03-2006 11:21

  Grzegorz Nowakowski wrote:
> wloochacz <wl@no.spam> writes:
>
>>>> [....] Wg. mnie nie
>>>> warto się w to pakować - lepiej zrobić do koszernie.
>>> A co masz na myśli?
>> Jak Jehowa przykazał.
>
> A tak nieco konkretniej?
>
> Pozdrawiam.

Robisz normalną strukturę bazy, którą normalizujesz, tzn. wydzielasz
encje, dla których robisz osobne tabelki. Jeżeli masz ojca i syna, to
robisz:

osoba
id

ojciec
osoba_id

syn
osoba_id
ojciec_id

To tak dla przykładu, bo model danych do przechowywania danych osobowych
powinien być zupełnie inny :)

pozdrawiam
Robert Grabowski




Grzegorz Nowakowski - 13-03-2006 11:21

  Robert Grabowski <grabba@env.pl> writes:

> Robisz normalną strukturę bazy, którą normalizujesz, tzn. wydzielasz
> encje, dla których robisz osobne tabelki. Jeżeli masz ojca i syna, to
> robisz:
>
> osoba
> id
>
> ojciec
> osoba_id
>
> syn
> osoba_id
> ojciec_id

Zabawne, bo dokładnie od takiego schematu chciałem uciec. :)

Pozdrawiam.
--
Grzegorz Nowakowski




Grzegorz Nowakowski - 13-03-2006 11:21

  Paweł Matejski <madej@spam.madej.pl.eu.org> writes:

> Grzegorz Nowakowski wrote:
>> Grzegorz Nowakowski <krecik@rohlik.e-wro.net> writes:
>>
>>>Wygląda na to, że indeksy nie są dziedziczone ani potomek nie korzysta
>>>z indeksów ojca. To jest bug czy feature?
>> Feature. Co prawda cecha unikatowości jest de facto dziedziczona ale
>> zbiór kluczy dziecka jest jakimś podzbiorem kluczy ojca, więc
>> rodzicielski indeks jest tu nieprzydatny.
>
> Hmmm....:
>
> http://www.postgresql.org/docs/8.1/i...l-inherit.html
>
> These deficiencies will probably be fixed in some future release, but
> in the meantime considerable care is needed in deciding whether
> inheritance is useful for your problem.

Holender! Z tego co tu piszą, to temat jest mocno zamotany.
Aczkolwiek testy, które robiłem u siebie na 7.4, dawały spodziewane
rezultaty.

> Feature, który będzie fixed? :)

Pażywiom, uwid'zim. :)

Pozdrawiam.
--
Grzegorz Nowakowski
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • adwokat.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com