Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

LuBoc

Campos Dinâmicos em SQL Server, como usar em Stored Procedures?

Mensagens Recomendadas

LuBoc

Olá,

Gostaria de saber as vossas ideias e/ou soluções para esta situação:

Pretendo ter uma forma de criar "campos dinâmicos" para registos em SQL Server.

Tenho um conjunto de tabelas com campos "base" (os mínimos necessários), depois tenho tabelas auxiliares onde ficam referidos os campos Extra, a que tabela diz respeito e registo original.

Um SQL para obter os campos "base" e respectivos campos Extra consigo, o problema levanta-se quando pretendo guardar/actualizar esses campos, visto ter que passar os valores para os campos Extra, mas como estes são variáveis e em qualquer altura se pode adicionar mais campos, como lidar com esta situação?

Não sei se fui claro na minha explicação! Se houver dúvidas tentarei reformular.

Agradeço resposta.

Cumprimentos,

LuBoc

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

A estratégia comum nestes casos é ter uma tabela com os campos e outra com os valores, que me parece que é o que tens.

A tabela dos campos tem um id (chave) e o nome do campo (obviamente pode ter mais informação como por exemplo descrição do campo, valores possíveis ou se o campo está activo ou não).

A tabela dos valores tem o id do campo, o valor do mesmo e a chave estrangeira para o registo a que se destina (chave é composição desta chave estrangeira e id do campo).

Exemplo:

ID, Parâmetro

  1, Nome

  2, Telefone

  3, Data de nascimento

  4, Sexo

...

FK_Pessoa_ID, FK_Parametro_ID,  Valor

1, 1, Orlando

1, 2, 919191919

1, 3, 1990

1, 4, M

2, 1, Ana

2, 2, 969696969

2, 3, 1991

2, 4, F

...

Se meteres todos os campos, base e extra, usando apenas estas tabelas deixas de ter problemas em relação à gestão de várias tabelas que têm, na verdade, a mesma função. Podes ter um campo na tabela de parâmetro que te indica se um campo é base ou extra. E é possível que, por exemplo, apenas alguns tipos de entidade tenham alguns dos campos extra. No exemplo acima, por exemplo, podes ter campos exta específicos de acordo com o sexo, é uma gestão que se faz ao nível da aplicação.

Com uma estrutura destas é muito fácil obter e gerir toda a informação de uma entidade.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.