Jump to content


Photo

Banco De Dados, Lógica, Multi-usuários...?


  • Faça o login para participar
5 replies to this topic

#1 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 12/05/2008, 17:20

Olá pessoal!
Eu tenho um sistema de catálogo, cujo possui as seguintes tabelas:
- catalogo (registro do material a ser catálogado. Exemplos: livros, periódicos, revistas, CD's, etc.)
- usuarios (usuários de administração do sistema, além de usuários que retiram o material.)
- categorias (categorias de catálogo.)
- CDD (tabela com valores de CDD.)
- Cutter (tabela com valores de Cutter);
- retiradas (tabela onde será registrada as obras retiradas por usuários.(

Bom...
Como ele é em PHP, muitos gostariam de utilizá-lo, mas ao ter que instalar o conjunto APACHE + PHP + MYSQL ou um pacote com os três, há pessoas que desistem de usá-lo.
Então, estive pensando em disponibilizar um catálogo assim:
A pessoa se inscreve; no momento que se inscrever, ela ganha um endereço do tipo: site.com/usuario (lógico que este seria feito com o módulo rewrite do Apache). Mas essa não é a questão. A questão é: o banco de dados. Como fazer para várias pessoas poderem criar seu catálogo SEM criar um banco de dados para cada um? Ou seja, cada usuário teria seu catálogo. O meu problema vem com o banco de dados, como fazer para que todos usem o mesmo banco se possível, mas com seus respectivos catálogos? Não preciso compartilhar as tabelas CDD e Cutter, pois estas não mudam de usuário para usuário. Ou seja, todos eles usarão todos os valores presentes nestas duas tabelas. Agora as demais, eu preciso compartilhar sim.
Então, o problema é: como fazer isto.
Deste já agradeço,

#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 14/05/2008, 18:11

Você tem que criar uma tabela (empresa, por exemplo) e associar todas as outras tabelas com essa tabela empresa.

Os cuiaddos na hora de qualquer consulta com o banco devem ser triplicados, pois nenhum dos seus clientes ficaria satisfeito ao saber que o seu concorrente teve acesso aos dados dele graças ao seu sistema!
Mas é isso ;)

#3 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 16/05/2008, 16:58

Entendo.
E depois, a cada resultado, a cada informação salva, salvar a empresa num campo de todas as tabelas?
Cuidados triplicados seria selecionar só o necessário, e, ainda mais, requerendo que o ID da empresa cadastrada seja igual ao ID da empresa no campo?
Obrigado,

Edição feita por: Inu, 16/05/2008, 16:58.


#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 16/05/2008, 17:10

É!
Agora todas as tabelas (exceto as de sistema, se houver) são dependentes da tabela empresa.
usarios, por exemplo...
Agora cada usuário vai ter uma FK ligando o usuário à sua respectiva empresa.
Isso permite inclusive ter o mesmo nome de usuário em duas empresas diferentes (Desde que você use PK composta, claro ;) )

E sim... toda ação tem que levar o código da empresa.
Aliás, o mais correto seria, através de regras de banco de dados, não permitir o acesso direto às tabelas.
O correto seria criar procedures, views, etc para acessar essas tabelas. Pelo menos as mais críticas.

#5 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 17/05/2008, 13:04

FK, PK?
Tipo, o que acontece é que, um usuário pode se cadastrar como X numa empresa, endereço X e talz, e como Y, endereço Y noutra... Então, os usuários são unicos e exclusivamentes de cada empresa.

Aliás, o mais correto seria, através de regras de banco de dados, não permitir o acesso direto às tabelas.
O correto seria criar procedures, views, etc para acessar essas tabelas. Pelo menos as mais críticas.

E como faço isso?

Obrigado.

#6 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 18/05/2008, 19:20

FK = Chave estrangeira
PK = Primary Key

O que estou dizendo é que a empresa X pode ter o usuário A e o usuário B.
A empresa Y pode ter o usuário C e o B, sendo que este B não tem nada a ver com o B da empresa X.
Como é uma chave composta, vocÊ não cria nenhum timpo de impedimento. (y)

Como faz pra criar views, etc?
Hm... tem que conhecer de BD! Geralmente as empresas têm DBAs pra fazer isso, mas nada te impede de aprender e fazer...

Já trabalhei com alguns sistemas nessas mesmas condições. Dá trabalho! rs..
Se precisar de alguma coisa, entra em contato por aqui ou por MP...




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq