Ir para conteúdo

POWERED BY:

Arquivado

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

lucas_imasters

Relacionamento no Banco de Dados

Recommended Posts

Pessoal,

 

Eu tenho um banco de dados com uma tabela cliente e todos os seus dados, com uma tabela admin que os dados são somente para login e senha e uma tabela para armezaner arquivos. Sendo que quando eu armazenar arquivos vao ficar varias arquivos. LOGICO.

 

Minha duvida por enquanto é teorica.

 

Como que eu faço pra dividir para que cada cliente tenha sua area de arquivos? Eu vou ter que criar inumeras tabelas de acordo com os clientes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa, simplesmente você pode fazer um WHERE quando pesquisa no banco de dados, mais ou menos assim:

 

<?php
$usuario = 'lala'; //nome do usuario
$query = mysql_query("SELECT*FROM clientes WHERE usuario='$usuario'"); //faz a query com um usuario especificado
 $lista = mysql_fetch_array($query); //lista dados
echo $lista['nome']; //imprime o nome do usuario
?>

 

Aí é só você ir relacionando, você pode fazer uma tabela para armazenar os nomes dos arquivos e, colocar 2 ccédulas, uma com o nome do usuário e outra com o nome do arquivo, assim você poderia fazer um "WHERE" para iidentificar o usuario, e puxar todos os dados com um while.

Compartilhar este post


Link para o post
Compartilhar em outros sites

basta você criar chave estrangeira na tabela de arquivos:

 

tabela cliente:

id_cliente

nome

 

 

tabela arquivos:

id_arquivo

id_cliente (FK)

arquivo

descricao

 

deste modo você pode ter varios arquivos para um cliente e sabe qual arquivo é de qual cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

basta você criar chave estrangeira na tabela de arquivos:

 

tabela cliente:

id_cliente

nome

 

 

tabela arquivos:

id_arquivo

id_cliente (FK)

arquivo

descricao

 

deste modo você pode ter varios arquivos para um cliente e sabe qual arquivo é de qual cliente

 

Obrigado pela ajuda ate o momento.

 

Criei as chaves estrangeiras no MySQL Workbench. Olha aqui a imagem do modelo do banco de dados e vejam se esta certo por favor.

 

DE-R.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltou você adicionar a coluna cli_id na estrutura da tabela arquivo

 

 

então quando você for fazer uma pesquisa na tabela de arquivos você so seleciona onde for o id_cliente = X

 

 

usando o exemplo anterior pegando todos arquivos e nome do cliente com ID 10:

 

SELECT
cli.id_cliente,
cli.nome,
arq.id_arquivo,
arq.arquivo,
arq.descricao,
FROM
clientes cli
INNER JOIN arquivos arq 
ON (cli.id_cliente = arq.id_cliente)
WHERE
cli.id_cliente = 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltou você adicionar a coluna cli_id na estrutura da tabela arquivo

 

 

então quando você for fazer uma pesquisa na tabela de arquivos você so seleciona onde for o id_cliente = X

 

 

usando o exemplo anterior pegando todos arquivos e nome do cliente com ID 10:

 

SELECT
cli.id_cliente,
cli.nome,
arq.id_arquivo,
arq.arquivo,
arq.descricao,
FROM
clientes cli
INNER JOIN arquivos arq 
ON (cli.id_cliente = arq.id_cliente)
WHERE
cli.id_cliente = 10

 

Olha lá eu editei meu post e ja consegui inserir o banco de dados. Agora a minha duvida é como fazer essa divisao. Ex:

 

Eu tenho 3 clientes na tabela clientes e tenho 10 arquivos na tabela arquivo_area. Como eu faço para o ADMINISTRADOR fazer upload de arquivos, porque só quem vai fazer isso vai ser o administrador e o cliente so vai vizualizar, como eu faço para o administrador quando for fazer upload desses 10 arquivos, serem 3 para um cliente, 3 para outro cliente e 6 para outro cliente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, você definiu certo a chave? pq é para aparece mais uma coluna fisica na tabela arquivos com tipagem INT igual a chave primaria id cliente onde o ADMINISTRADOR no seu caso vai inserir o id_cliente referente aquele arquivo assim você sabe que aquelas linhas de registros que forem id_cliente = 4 são todos arquivos do cliente 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, você definiu certo a chave? pq é para aparece mais uma coluna fisica na tabela arquivos com tipagem INT igual a chave primaria id cliente onde o ADMINISTRADOR no seu caso vai inserir o id_cliente referente aquele arquivo assim você sabe que aquelas linhas de registros que forem id_cliente = 4 são todos arquivos do cliente 4

 

Da uma olhada como eu defini a chave estrangeira:

 

print.png

 

E ai? ta certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca usei esse mysq workbench mas a coluna que você referencia nao é o id_arquivo você tem que criar mais uma coluna na tabela de arquivos para receber o id_cliente

 

veja:

bancoah.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca usei esse mysq workbench mas a coluna que você referencia nao é o id_arquivo você tem que criar mais uma coluna na tabela de arquivos para receber o id_cliente

 

veja:

bancoah.jpg

 

Eu preciso criar mais uma coluna tambem para receber o id do administrador?

 

Agora eu te entendi, nao apareceu uma nova coluna no meu arquivo_area porque eu usei a coluna do id_arquivo mais como voce esta dizendo que precisa de uma nova coluna pra fazer o relacionamento entao vou fazer e vou mostrar.

 

Agora acho que esta certo, bem parecido com o seu.

 

DE-R-1.png

 

Se estiver agora podemos pular para a parte do codigo né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim parece que ta ok agora

 

 

codigo você quer dizer o SQL?

se for vai ser igual o exemplo que fiz la em cima, da o join onde cliente.cli_id = arquivo.cliente_cli_id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim parece que ta ok agora

 

 

codigo você quer dizer o SQL?

se for vai ser igual o exemplo que fiz la em cima, da o join onde cliente.cli_id = arquivo.cliente_cli_id

 

Nao sei se PHP ou SQL. Eu usei o seguinte tutorial para fazer upload de arquivos e deu certo.

 

http://imasters.com.br/artigo/12775/php/manipulacao-de-dados-blob-com-php-e-mysql

 

Só que agora eu tenho que adaptar para quando ele for fazer o upload ele fazer referente ao usuario que eu escolher. E é isso que eu não sei. Ah esqueci de agradecer né. MUITISSIMO OBRIGADO pela ajuda que você deu ate agora.

 

O código que você usou la emcima é para que?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a dúvida?

no insert você vai inserir normal... so ver qual id do cliente que o arquivo que você vai cadastrar é e inserir na tabela de arquivos.

 

so uma observação, esse tipo de armazenamento de dados no banco usando BLOB não é muito aconselhavel devido a baixa performace e seu banco vai ficar gigante tb. Normalmente o armazenamento é feio com upoad em pastas no servidor e você salva somente o caminho do arquivo no banco de dados para recuperar e fazer o download

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a dúvida?

no insert você vai inserir normal... so ver qual id do cliente que o arquivo que você vai cadastrar é e inserir na tabela de arquivos.

 

so uma observação, esse tipo de armazenamento de dados no banco usando BLOB não é muito aconselhavel devido a baixa performace e seu banco vai ficar gigante tb. Normalmente o armazenamento é feio com upoad em pastas no servidor e você salva somente o caminho do arquivo no banco de dados para recuperar e fazer o download

 

Vlw. Como assim feito com upload em pastas? Como eu vou salvar somente o caminho do arquivo no banco de dados e aonde fica o arquivo? Nao entendi.

 

Pesquisei um pouco, é esse o metodo que voce aconselhou: http://sdevlab.wordpress.com/2010/10/03/php-como-fazer-upload-de-arquivos-para-o-servidor/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Performace, é uma maneira mais rapida fazer utilizando as pastas, porém requer a criação de um controle a mais para os dados não serem acessador diretamente nas pastas por quem não tem permissao tipo www.site.com.br/arquivos/meu_arquivo.pdf. Além disso os provedores web tem limite de tamanho de banco de dados e se você guarda arquivos direto no banco esse tamanho cresce muito rapidamente.

 

creio que todos os sistemas atuais do genero cms (wordpress joomla moodle etc) guardam arquivos dessa maneira que sugeri

Compartilhar este post


Link para o post
Compartilhar em outros sites

Performace, é uma maneira mais rapida fazer utilizando as pastas, porém requer a criação de um controle a mais para os dados não serem acessador diretamente nas pastas por quem não tem permissao tipo www.site.com.br/arquivos/meu_arquivo.pdf. Além disso os provedores web tem limite de tamanho de banco de dados e se você guarda arquivos direto no banco esse tamanho cresce muito rapidamente.

 

creio que todos os sistemas atuais do genero cms (wordpress joomla moodle etc) guardam arquivos dessa maneira que sugeri

 

Entendi, Me responde la no outro tópico feito por mim por favor, a minha duvida é justamente sobre esse metodo que voce aconselhou, nao estou conseguindo enviar para a pasta especificada.

 

http://forum.imasters.com.br/topic/430066-criacao-de-pastas-no-servidor-com-banco-de-dados/

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.