Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida na Estrutura


Everson Tomasi

Pergunta

Seguinte, gostaria de cadastrar usuários e em seguida eles poderem cadastrar seus próprios itens. Estou em dúvida de como deve ser o banco para que isso seja possivel, pois a cada nvo usuário ele precisa criar uma nova tabela, não ?

exemplo:

add_user.php

$login

$senha

cadastrando.php
$cadastro=mysql_query("

CREATE TABLE $login

(id int auto_increment,

nome char(20) NOT NULL,

tipo char(20) NOT NULL,

PRIMARY KEY(id))");

adiciona_item

aqui o usuário cadastra seus itens:

$nome

$tipo

Como faria para cada novo usuário que fosse cadastrado ele criasse uma tabela? Essa é a melhor forma?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Não.... já imaginou um banco com 10 mil tabelas? desse jeito seu ai não rola.

Existem muitas formas de isso se feito, depende do que são os seus itens mas eu faria assim:

CREATE TABLE `items` (
  `id_item` INT(11) NOT NULL AUTO_INCREMENT,
  `id_usuario` INT(11) NOT NULL,
  `item` VARCHAR(50) NOT NULL,
  PRIMARY KEY (`id_item`),
  KEY `FK_items` (`id_usuario`),
  CONSTRAINT `FK_items` FOREIGN KEY (`id_usuario`) REFERENCES `usuarios` (`id_usuario`) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;


CREATE TABLE `usuarios` (
  `id_usuario` INT(11) NOT NULL AUTO_INCREMENT,
  `nome` CHAR(20) NOT NULL,
  `tipo` INT(1) NOT NULL,
  PRIMARY KEY (`id_usuario`)
) ENGINE=INNODB DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

Dessa forma os itens seriam ligados a seu usuario proprietario pela foreign key id_usuario. Depois basta vocês dar um SELECT item FROM items WHERE id_usuario = $usuario para obter a lista de itens de cada user

Link para o comentário
Compartilhar em outros sites

  • 0

Meu SQL deveria ficar assim então?

CREATE TABLE `items` (
`id_item` INT(11) NOT NULL AUTO_INCREMENT,
`id_usuario` INT(11) NOT NULL,
`item` VARCHAR(20) NOT NULL,
`tipo` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id_item`),
KEY `FK_items` (`id_usuario`),
CONSTRAINT `FK_items` FOREIGN KEY (`id_usuario`) REFERENCES `usuarios` (`id_usuario`) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

CREATE TABLE `usuarios` (
`id_usuario` INT(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(20) NOT NULL,
`senha` VARCHAR(10) NOT NULL,
PRIMARY KEY (`id_usuario`)
) ENGINE=INNODB DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

Nesse caso, não preciso ficar criando tabelas pelo PHP, que era o que eu estava imaginando.

Editado por Everson Tomasi
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...