2010/12/8 Marcelo Florindo <[email protected]>:
> Herança no Postgres é uma cópia fiel da tabela pai na tabela filha.
O conceito da herança (SQL) para modelagem de dados não faz o menor
sentido porque é implementado de forma a emular, de maneira bastante
grosseira, a especialização do paradigma OO. Repare que em OO faz todo
sentido utilizarmos subtipos porque existe comportamento a ser herdado
do supertipo, além dos atributos.
Não podemos sobrescrever atributos com a atual definição de herança no
SQL, tal como fazemos com sobrecarga na OOP e isto gera anomalias de
inclusão, atualização e exclusão dependências funcionais e u mais um
tantão de dificuldades para manipulação dos dados.
> Eu vejo a herança como um agilizador na geração de tabelas.
IMHO, herança (SQL) é um facilitador para futuras dores de cabeça.
> Eu crio uma tabela padrão com os dados:
> data_inclusao
> data_ultima_alteracao
> situacao
Como eu disse antes, vc poderia trabalhar com especialização da seguinte forma:
Pessoa: R=({#ID_PESSOA, NOME, IDADE, [...]})
Paciente: R=(#ID_PESSOA, CID, [atributos de pacients])
Definição SQL:
CREATE TABLE Pessoa(
id_pessoa PRIMARY KEY
, nome VARCHAR
, idade INTEGER
);
CREATE TABLE Paciente(
id_pessoa INTEGER REFERENCES Pessoa(id_pessoa)
, cid CID_SUS -- (domínio do subtipado)
, [...]
);
Só pra constar, utilziando INHERIT a definição correta seria compor a
nova tabela com o atributo que caracteriza o Paciente:
CREATE TABLE Paciente(
cid CID_SUS
) INHERITS(Pessoa);
> e com herança eu não tenho que ficar digitando sempre a mesma coisa
> ;)
Pague para entrar e reze para sair...
Abraço
-Leo
--
Leonardo Cezar
http://postgreslogia.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral