Duvida com Mysql

6 respostas
S

Então, me deparei com um problema porque preciso que a minha tabela guarde supostamente dados de uma array, eu pensei em criar vários campos semelhantes por exemplo:
primeiro_valor, segundo_valor, terceiro_valor e assim por diante, essa é a maneira mais elegante de se armazenar dados de uma array no mysql?

Obrigado

6 Respostas

lina

Oi,

Isso é uma pergunta meio complicada a se fazer! pois cada pessoa terá uma opinião. Uns preferem simplificar e outras colocar um nome mais robusto
Eu por exemplo, para criação de campos, colunas e/ou variaveis, sempre procurei colocar um nome completo! Vou ter uma melhor visualização e saberei o que realmente estou fazendo!

Tchauzin!

S

lina:
Oi,

Isso é uma pergunta meio complicada a se fazer! pois cada pessoa terá uma opinião. Uns preferem simplificar e outras colocar um nome mais robusto
Eu por exemplo, para criação de campos, colunas e/ou variaveis, sempre procurei colocar um nome completo! Vou ter uma melhor visualização e saberei o que realmente estou fazendo!

Tchauzin!

É o que venho fazendo, mas no caso minha duvida é para arrays, já vi gente usando enums, é eficiente? ou é mais simples tacar várias colunas com o nome semelhante como eu citei acima?

wbdsjunior
Santhell:
Então, me deparei com um problema porque preciso que a minha tabela guarde supostamente dados de uma array, eu pensei em criar vários campos semelhantes por exemplo: primeiro_valor, segundo_valor, terceiro_valor e assim por diante, essa é a maneira mais elegante de se armazenar dados de uma array no mysql?

Obrigado


a minha opinião é que você deve criar uma tabela só para os dados do array.

create table Tabela (
    Id integer,
    Nome varchar,
    primary key (Id)
);

insert into Tabela values (1, 'João');
insert into Tabela values (2, 'Maria');

create table TabelaArray (
    Id integer,
    Valor varchar,
    Id_Tabela integer,
    primary key (Id),
    foreign key (Id_Tabela) references Tabela (Id)
);

insert into TabelaArray values (1, 'A', 1);
insert into TabelaArray values (2, 'B', 1);
insert into TabelaArray values (3, 'C', 1);
...

select *
  from Tabela,
       TabelaArray
 where Tabela.Id = TabelaArray.Id_Tabela
  and Tabela.Id = 1
A

Se você estiver falando de estrutura de tabela tome cuidado. Se esses dados forem colocados em vários campos de uma tabela e posteriormente você necessitar de uma comparação entre eles será muito ruim. Para a identificação e saber melhor o que fazer dentro da tabela siga como a lina disse, use sempre atributos, nomes, etc no qual você não irá se perder.

um exemplo: Você tem uma tabela de funcionários por periodicidade que você identificará por matrículas e horários ou outros atributos no qual haverá a liberação para registro em aplicativo externo (Marcar horário par reunião por exemplo), e o funcionário pode ter somente uma reunião por dia, então sua estrutura no mysql não é aconselhada que seja assim:

horario1 | horario2 | horario3 | horario4 | horario5 | horario6 | horarioX | dia
5458485 5454845 8786597 1515484 8787844 46464 XXXXXX 2009-09-25

no momento de se fazer uma comparação entre elas ou de reaproveitar o que foi posto fica muito mais dificil, estou falando do mysql somente ok? cada db tem suas peculiaridades e facilidades.

ao invés de se ter uma estrutura como aquela, você pode pré-determinar os horários ou os períodos escritos no momento, para isso a sua estrutura ficaria mais bem organizada

dia          |    horario    |    matricula

2009-09-25 9h 1515181
2009-09-25 9h 30m 6595652

sua estrutura se basearia em 4 campos, sendo um deles um codigo identificador, que nem sempre é necessário mas é bom ter para qualquer dúvida de restrições, e facilitaria também para preencher arrays, que é como eu também utilizo.

bem, me desculpe se não fui ao ponto, espero ter ajudado
abraços

Flavio_Luiz

Kra é por isso q eu uso o Hibernate…
o hibernate seria meu gerenciador de dados… é ele q tira, coloca ou recupera os valores do banco…
mas uma das características do hibernate é justamente de dar a sensação de que esta trabalhando com um banco orientado a objeto.
resumindo… vc consegue salvar esse array sem problemas… quem pois quem se preocupara como e quando é o hibernate…

S

Entendo o que todos dizem, no caso, minha tabela é de imposto de renda, e a cada periodo de tempo tem vários tetos, no programa vai ser inserido um valor e então eu vou testar esse valor para cada teto do periodo, vou pegar o valor e testar com o primeiro teto, se estiver dentro eu aplico o valor relacionado ao teto caso não esteja eu passo pro proximo teto e assim por diante:

primeiro_teto primeiro_valor segundo_teto segundo valor
if (valorInserido <= primeiro_teto)  {

imposto = primeiro_valor;

} else if(valor inserido <= segundo_teto {

imposto = segundo_valor

}

E assim por diante, no programa eu ia fazer esses testes por repetições para ficar mais simplificados já que tenho 11 tetos para testar para cada periodo!
Se eu entendi como disseram acima, eu teria que criar um registro novo para cada teto, ficaria meio inviavel 11 tetos para cada periodo, e são mais de 30 periodos...

Com relação ao hibernate, estou estudando não me sinto seguro ainda de implementar ele no programa que to usando, então to evitando por enquanto!

Valew a todos

Criado 28 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 6
Participantes 5