Jump to content
  • 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?

Recommended Posts

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

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.