como representar uma estrutura de árv ore no PostgreSQL ?
"Cristiano M. Magalhaes" <[email protected]> Sun, 22 Apr 2018 22:25:03 -0300
| Newsgroups | gmane.comp.db.postgresql.brasil |
|---|---|
| Message-ID | <CAKSeAimgYOwDL-wmeLDSv0ZW5erY7E0UOguSup2mR9HwpFjp6A__7283.75995900041$1524446605$gmane$org@mail.gmail.com> |
--===============8276552123763477070== Content-Type: multipart/alternative; boundary="94eb2c064b7071352f056a79e96d" --94eb2c064b7071352f056a79e96d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Pessoal, sauda=C3=A7=C3=B5es! Por favor, eu estou precisando compreender como eu posso armazenar um estrutura de uma "=C3=A1rvore" de dados, em um SGBD, como o PostgreSQL. Por exemplo , imagine a seguinte estrutura de =C3=A1rvore abaixo, represent= ando uma estrutura de contas cont=C3=A1beis: 1 - Ativos 1.1 - Bancos 1.1.1 - Conta Corrente 1.1.2 - Conta Poupan=C3=A7a 1.1.3 - Conta Corrente 2 2 - Passivos 2.1 - Contas a Receber 3 - Patrim=C3=B4nio L=C3=ADquido 4 - Receitas 4.1 - Vendas 4.2 - Juros Recebidos 5 - Despesas 5.1 - =C3=81gua 5.2 - Luz Como v=C3=AAem, cada "n=C3=B3" (conta) pode ter outros "n=C3=B3s" (contas) = filhos. Como eu poderia representar isso em SQL? Eu penso que os c=C3=B3digos n=C3=A3o deveriam ser chaves prim=C3=A1rias. E= u queria ter a possibilidade de, se eu alterar o valor de um c=C3=B3digo de um n=C3=B3 pai= , isso refletir para os n=C3=B3s filhos. Exemplo: se eu renomear o c=C3=B3digo do = "Ativos" para "10", os ativos seriam renomeados para: 10 - Ativos 10.1 - Bancos 10.1.1 - Conta Corrente 10.1.2 - Conta Poupan=C3=A7a 10.1.3 - Conta Corrente 2 Como fazer isso no PostgreSQL ? -- Cristiano M. Magalh=C3=A3es --94eb2c064b7071352f056a79e96d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac= e,monospace;font-size:small">Pessoal,=C2=A0</div><div class=3D"gmail_defaul= t" style=3D"font-family:monospace,monospace;font-size:small"><br></div><div= class=3D"gmail_default" style=3D"font-family:monospace,monospace;font-size= :small">sauda=C3=A7=C3=B5es!</div><div class=3D"gmail_default" style=3D"fon= t-family:monospace,monospace;font-size:small"><br></div><div class=3D"gmail= _default" style=3D"font-family:monospace,monospace;font-size:small">Por fav= or, eu estou precisando compreender como eu posso armazenar um estrutura de= uma "=C3=A1rvore" de dados, em um SGBD, como o PostgreSQL.</div>= <div class=3D"gmail_default" style=3D"font-family:monospace,monospace;font-= size:small"><br></div><div class=3D"gmail_default" style=3D"font-family:mon= ospace,monospace;font-size:small">Por exemplo , imagine a seguinte estrutur= a de =C3=A1rvore abaixo, representando uma estrutura de contas cont=C3=A1be= is:</div><div class=3D"gmail_default" style=3D"font-family:monospace,monosp= ace;font-size:small"><br></div><div class=3D"gmail_default" style=3D"font-s= ize:small"><font face=3D"monospace, monospace">1=C2=A0 =C2=A0 =C2=A0- Ativo= s</font></div><div class=3D"gmail_default" style=3D"font-size:small"><font = face=3D"monospace, monospace">1.1=C2=A0 =C2=A0- Bancos</font></div><div cla= ss=3D"gmail_default" style=3D"font-size:small"><font face=3D"monospace, mon= ospace">1.1.1 - Conta Corrente</font></div><div class=3D"gmail_default" sty= le=3D"font-size:small"><font face=3D"monospace, monospace">1.1.2 - Conta Po= upan=C3=A7a</font></div><div class=3D"gmail_default" style=3D"font-size:sma= ll"><font face=3D"monospace, monospace">1.1.3 - Conta Corrente 2</font></di= v><div class=3D"gmail_default" style=3D"font-size:small"><font face=3D"mono= space, monospace">2=C2=A0 =C2=A0 =C2=A0- Passivos</font></div><div class=3D= "gmail_default" style=3D"font-size:small"><font face=3D"monospace, monospac= e">2.1=C2=A0 =C2=A0- Contas a Receber</font></div><div class=3D"gmail_defau= lt" style=3D"font-size:small"><font face=3D"monospace, monospace">3=C2=A0 = =C2=A0 =C2=A0- Patrim=C3=B4nio L=C3=ADquido</font></div><div class=3D"gmail= _default" style=3D"font-size:small"><font face=3D"monospace, monospace">4= =C2=A0 =C2=A0 =C2=A0- Receitas</font></div><div class=3D"gmail_default" sty= le=3D"font-size:small"><font face=3D"monospace, monospace">4.1=C2=A0 =C2=A0= - Vendas</font></div><div class=3D"gmail_default" style=3D"font-size:small"= ><font face=3D"monospace, monospace">4.2=C2=A0 =C2=A0- Juros Recebidos</fon= t></div><div class=3D"gmail_default" style=3D"font-size:small"><font face= =3D"monospace, monospace">5=C2=A0 =C2=A0 =C2=A0- Despesas</font></div><div = class=3D"gmail_default" style=3D"font-size:small"><font face=3D"monospace, = monospace">5.1=C2=A0 =C2=A0- =C3=81gua</font></div><div class=3D"gmail_defa= ult" style=3D"font-size:small"><font face=3D"monospace, monospace">5.2=C2= =A0 =C2=A0- Luz</font></div><div class=3D"gmail_default" style=3D"font-fami= ly:monospace,monospace;font-size:small"><br></div><div class=3D"gmail_defau= lt" style=3D"font-family:monospace,monospace;font-size:small">Como v=C3=AAe= m, cada "n=C3=B3" (conta) pode ter outros "n=C3=B3s" (c= ontas) filhos.</div><div class=3D"gmail_default" style=3D"font-family:monos= pace,monospace;font-size:small"><br></div><div class=3D"gmail_default" styl= e=3D"font-family:monospace,monospace;font-size:small">Como eu poderia repre= sentar isso em SQL?=C2=A0</div><div class=3D"gmail_default" style=3D"font-f= amily:monospace,monospace;font-size:small"><br></div><div class=3D"gmail_de= fault" style=3D"font-family:monospace,monospace;font-size:small">Eu penso q= ue os c=C3=B3digos n=C3=A3o deveriam ser chaves prim=C3=A1rias. Eu queria t= er a possibilidade de, se eu alterar o valor de um c=C3=B3digo de um n=C3= =B3 pai, isso refletir para os n=C3=B3s filhos. Exemplo: se eu renomear o c= =C3=B3digo do "Ativos" para "10", os ativos seriam reno= meados para:</div><div class=3D"gmail_default" style=3D"font-family:monospa= ce,monospace;font-size:small"><br></div><div class=3D"gmail_default" style= =3D"font-family:monospace,monospace;font-size:small"> <div class=3D"gmail_default" style=3D"color:rgb(34,34,34);font-family:arial= ,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal= ;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:= start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0= px;text-decoration-style:initial;text-decoration-color:initial"><font face= =3D"monospace, monospace">10=C2=A0 =C2=A0 =C2=A0- Ativos</font></div><div c= lass=3D"gmail_default" style=3D"color:rgb(34,34,34);font-family:arial,sans-= serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-= variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;= text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex= t-decoration-style:initial;text-decoration-color:initial"><font face=3D"mon= ospace, monospace">10.1=C2=A0 =C2=A0- Bancos</font></div><div class=3D"gmai= l_default" style=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-s= ize:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps= :normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:= 0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration= -style:initial;text-decoration-color:initial"><font face=3D"monospace, mono= space">10.1.1 - Conta Corrente</font></div><div class=3D"gmail_default" sty= le=3D"color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font= -style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-w= eight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-trans= form:none;white-space:normal;word-spacing:0px;text-decoration-style:initial= ;text-decoration-color:initial"><font face=3D"monospace, monospace">10.1.2 = - Conta Poupan=C3=A7a</font></div><div class=3D"gmail_default" style=3D"col= or:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:no= rmal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400= ;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none= ;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-dec= oration-color:initial"><font face=3D"monospace, monospace">10.1.3 - Conta C= orrente 2</font></div> <br></div><div class=3D"gmail_default" style=3D"font-family:monospace,monos= pace;font-size:small"><br></div><div class=3D"gmail_default" style=3D"font-= family:monospace,monospace;font-size:small">Como fazer isso no PostgreSQL ?= =C2=A0</div><div class=3D"gmail_default" style=3D"font-family:monospace,mon= ospace;font-size:small"><br></div><div><div class=3D"gmail_signature" data-= smartmail=3D"gmail_signature"><div dir=3D"ltr"><div><font face=3D"monospace= , monospace">--<br>Cristiano M. Magalh=C3=A3es<br></font><div><span style= =3D"font-family:verdana,sans-serif"><br></span></div><div><div style=3D"fon= t-family:'courier new',monospace"><br></div></div></div></div></div= ></div> </div> --94eb2c064b7071352f056a79e96d-- --===============8276552123763477070== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGdici1nZXJh bCBtYWlsaW5nIGxpc3QKcGdici1nZXJhbEBsaXN0YXMucG9zdGdyZXNxbC5vcmcuYnIKaHR0cHM6 Ly9saXN0YXMucG9zdGdyZXNxbC5vcmcuYnIvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3BnYnIt Z2VyYWw= --===============8276552123763477070==--