Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vítor André

Inserir mais de um registro no mesmo campo

Recommended Posts

Olá pessoal!

Estou com uma dúvida sobre banco de dados.

Estou querendo fazer um álbum de fotos, onde seriam cadastradas fotos, mas na boa, ainda não sei quase nada de banco de dados.

Tem como inserir mais de uma foto no mesmo id?

Ex.: Meus campos no BD -

ID - FOTOS

01 - foto1.jpg, foto2.jpg, foto3.jpg

 

Acho que isso não rola, né? Teria que ser uma foto pra cada id?

 

É que minha ideia era que cada álbum fosse "chamado" pelo numero do id.

 

Senão vou ter que fazer algo assim:

 

ID - FOTOS - ALBUM

01 - foto1.jpg - primeiro

02 - foto2.jpg - primeiro

03 - foto3.jpg - segundo

 

Tá certo meu raciocínio?

 

Obrigado!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre o motivo de usar auto incremento, e não usar ? se for isso, seria mais pelo fato de você ter que alterar ou deletar a foto quando o usuário solicitar, veja bem, você tem lá 'foto1,foto2,foto3,foto4,foto5', tudo na mesma linha, como você iria deletar ou alterar essa foto ? existe sim um jeito que até é mais porco, mas é uma solução, seria você fazer um explode em cada vírgula achar a posição da nova no array retornado, depois que achar essa posição, você pode remover esse índice e fazer um implode novamente e fazer o update nesse campo com os novos dados das fotos. o que é totalmente desnecessário. o motivo de usar auto incremento, seria a liberdade que você vai ter em manipular esses dados, trata-se do mesmo caso alterar, excluir, até outras possíveis coisas que você pode fazer, como exibir a foto do usuário aleatoriamente, etc ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre o motivo de usar auto incremento, e não usar ?

NÃO!
o motivo de usar auto incremento, seria a liberdade que você vai ter em manipular esses dados, trata-se do mesmo caso alterar, excluir, até outras possíveis coisas que você pode fazer, como exibir a foto do usuário aleatoriamente, etc ..

Certo. Mas como faço isso? Tem algum tuto, video, apostila qualquer coisa onde eu possa aprender o FUNCIONAMENTO disso?

Grato pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente você teria uma tabela com o nome do Álbum (album1, album2, album3....) e depois uma outra tabela fotos_album, nessa tabela você teria uma chave estrangeira relacionando com a tabela de albuns.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem vou dar uma pesquisada no que vocês disseram. Acho que peguei a ideia. Mas vou estudar como se faz isso. Volto em breve pra dar o resultado. De qualquer forma, se alguém souber ONDE eu consigo um material de apoio pra aprender isso, fico agradecido!

E se mais alguém tiver sugestões, manda aí!!!

 

Falou!

B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente você teria uma tabela com o nome do Álbum (album1, album2, album3....) e depois uma outra tabela fotos_album, nessa tabela você teria uma chave estrangeira relacionando com a tabela de albuns.....

Lógico que não, isso é um erro grave de modelagem !!

 

Você vai ter uma unica tabela chamada álbuns, depois você vai ter os seguintes campos ' aid, álbum, descrição, ... '

No campo aid, você vai definir ele como KEY ou como chave primária, então na tabela fotos álbuns, você vai relacionar o aid do álbum com a foto cadastrada, veja um exemplo:

andrey@andrey:~$ mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create schema imasters;
Query OK, 1 row affected (0.03 sec)

mysql> use imasters;
Database changed
mysql> create table albuns(
   ->     aid smallint( 6 ) not null auto_increment,
   ->     album varchar( 34 ) not null,
   ->    descricao text not null,
   ->    primary key( aid )
   -> )engine = innodb;
Query OK, 0 rows affected (0.09 sec)

mysql> create table fotos(
   ->       fid int( 11 ) not null auto_increment,
   ->      aid smallint( 6 ) not null,
   ->     foto varchar( 34 ) not null,
   ->   primary key( fid ),
   ->   key( aid ),
   ->  constraint `fkFotos` foreign key ( aid ) references `albuns`( aid ) on update restrict on delete cascade
   -> )engine = innodb;
Query OK, 0 rows affected (0.11 sec)


mysql> insert into albuns values( 1, 'Fotos do casamento', 'Descrição' );
Query OK, 1 row affected (0.05 sec)

mysql> insert into fotos values( 1, 1, 'foto1.jpg' ), ( 2, 1, 'foto2.jpg' ), ( 3, 1, 'foto3.jpg' );
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from fotos inner join albuns on fotos.aid = albuns.aid;
+-----+-----+-----------+-----+--------------------+-----------+
| fid | aid | foto      | aid | album              | descricao |
+-----+-----+-----------+-----+--------------------+-----------+
|   1 |   1 | foto1.jpg |   1 | Fotos do casamento | Descrição |
|   2 |   1 | foto2.jpg |   1 | Fotos do casamento | Descrição |
|   3 |   1 | foto3.jpg |   1 | Fotos do casamento | Descrição |
+-----+-----+-----------+-----+--------------------+-----------+
3 rows in set (0.00 sec)

 

O Mais interessante da foreign key, seria o cascade, veja bem:

mysql> delete from albuns;
Query OK, 1 row affected (0.05 sec)

mysql> select * from fotos;
Empty set (0.00 sec)

Se a referencia da foto for apagada, todas as fotos que tem o aid do álbum será apagada !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então me expressei errado, desculpa :(

Seria uma tabela album e dentro dela os campos album1, album2, etc... e então faria o relacionamento de 1 album para n fotos igual você colocou no exemplo :thumbsup:

 

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.