GARANTIR DESCONTO

Fórum Como armazenar array? Campo , TXT ou o que? #46151

19/08/2004

0

Preciso armazenar 260 valores booleanos em cada registro;
Creio não ser a melhor opção criar um campo para cada valor, pois a tabela ficaria com pelo menos 300 campos. Me sugeriram usar um vetor e achei um grande idéia mas não sei qual a melhor maneira de armazenar este array que recebe 260 valores.

Seria ÓTIMO se fosse possível armazenar o array em um campo só da tabela mas até onde sei não é. Uso Firebird e Delphi 7.
Sei que posso criar um TXT mas não sei se seria seguro criar um TXT para cada registro e puxa-los de uma pasta qualquer. Me disseram também para colocar esse TXT em um campo BLOB mas já ouvi comenta´rio que isso também não é bom.

Bom, o modo como for armazenar estes dados será fundamental no desenvolvimento da aplicação e não gostaria de me arrepender depois.
Por isso peço algumas opiniões sobre isso.

Então a questão é:
Como armazenar 260 valores (ou um array) booleanos no Firebird?
Obrigado desde já;


Ricna

Ricna

Responder

Posts

19/08/2004

Gandalf.nho

O Interbase/Firebird permite criar arrays nas tabelas, dê uma olhada na documentação sobre os tipos de dados.


Responder

Gostei + 0

19/08/2004

Afarias

Não aconselho usar arrays do IB (ou FB) pelo ´fraco´ suporte existente (só podem ser manipulados por API)

Quando quero guardar um ´array´ de valores boleanos costumo usar um campo Interger -- mas como no seu caso o array é muito grande, então sugiro q use um varchar(260) dai vc coloca em cada posição do valor um V ou F (ou T/F ou 0/1)



T+


Responder

Gostei + 0

19/08/2004

Vinicius2k

Eu faço como o afarias, com a exceção de que não importando o tamanho do array eu sempre uso Varchar(N)...

Creio que seja a melhor solução... vc só vai precisar de montar uma função para ler este array dando os valores aos devidos componentes e vice-versa...

T+


Responder

Gostei + 0

19/08/2004

Ipc$

Será que não seria melhor guardá-los num Blob?
Um varchar(260) é uma string que ficaria muito fácil alguém escrever qualquer coisa nela.
Já um Blob é mais difícil e o campo ficaria mais seguro.
Vc cria um TMemoryStream, dá um setsize de 260 e colocar os valores lá.


Responder

Gostei + 0

19/08/2004

Vinicius2k

Bem, pode até ser... eu particularmente só uso Blobs em último caso... praticamente apenas com imagens...
Só não entendi uma coisa... como assim ´fica fácil alguém escrever qualquer coisa nela´ ?
Só se vc quer dizer editando diretamente no banco, pq este campo não permitiria edição direta e, logicamente, os componentes que vão dar os valores boleanos à cada posição da string, tem que estar setados para só permitir o domínio escolhido (T/F, S/N, 0/1, etc...)

T+


Responder

Gostei + 0

20/08/2004

Ipc$

No caso de um Select * p/ um DBGrid; pronto, a segurança foi embora.


Responder

Gostei + 0

20/08/2004

Vinicius2k

Falando como um bom mineiro : ´Uai, aí vc bagunçou o trem...´ :D

Afinal, quem vai determinar o select é o próprio desenvolvedor... que, se quiser, também pode exibir e/ou deixar o blob em modo de edição direta...
Quando faço isso com ´arrays´ eu sei que não pode ser editado manualmente de forma nenhuma, então eu não o deixo disponível em lugar nenhum...

Acho q continuei sem entender seu ponto de vista... :roll:

T+


Responder

Gostei + 0

20/08/2004

Afarias

Sem falar q não se pode usar um BLOB com SQL (sem usar uma UDF) -- assim, só seria possível manipular os dados no cliente!




T+


Responder

Gostei + 0

20/08/2004

Ipc$

Bom, depende do ponto de vista, da aplicação, da empresa.
Particularmente, ainda acho que um (Blobinho) ainda é mais seguro do que uma string.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar