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

Iniciante


tony

Pergunta

Ola pessoal...td legal..???

Sou iniciante com sql...e preciso de uma orientaçao..

Estou desenvolvendo um sstema em php...e nesse sistema terá que possuir categoria e subcategoria..... como eu posso fazer o relacionamento de uma tabela e outra.... tenho uma tabela produtos,categorias e subcategorias...será que alguém poderia me passar um exemplo simples...de por exemplo um produto na categoria A e subcategoria B POR EXEMPLO....

agradeço a atencao

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Guest Felipe Trevisan

Você poderia fazer apenas uma tabela pra controlar as Categorias e SubCategorias.

Por exemplo, a tabela PRODUTOS teria os campos:

#idProduto (código do produto)

*fkIdCategoria (código da categoria onde ele está)

strNome (nome do produto)

A tabela CATEGORIA teria os campos:

#idCategoria (código da categoria)

fkidCategoria (código da 'categoria pai')

strNome (nome da categoria)

# = Chave primária.

* = Chave estrangeira.

Na tabela produtos, o relacionamento é fácil. O campo produtos.fkidCategoria = categoria.idCategoria.

Na tabela categoria, também existe um relacionamento com ela mesma, mas esse relacionamento é apenas lógico (você não precisa fazer o relacionamento no banco; apenas deve saber que ela se relaciona com ela mesma), da seguinte forma: Categoria.fkIdCategoria = Categoria.idCategoria.

Dessa forma, se uma categoria é "Pai", isto é, não está dentro de nenhuma, o fkidCategoria dela é Zero (0). Se ela for "filha", isto é, uma sub-categoria, o fkidCategoria dela vai ser igual ao código da categoria pai dela.

Exemplo.

CATEGORIA

idCategoria fkIdCategoria strNome

1 0 Informática

2 0 Eletrônicos

3 1 Memória

4 1 Processadores

5 3 512Mb

6 0 Telefonia

Neste exemplo, temos 6 categorias (algumas são subcategorias) cadastradas.

As categorias Informática, Eletrônicos e Telefonia são Categorias principais (categorias "pai").

Você consegue saber isso, pois o fkidCategoria delas é igual a 0. (por este motivo que o reacionamento não pode existir, de fato, no banco. Se ele existisse, você não poderia atribuir 0 para este campo, já que uma chave estrangeira PRECISA ter uma referência na tabela relacionada).

As categorias Memória e Processadores são subCategorias da categoria Informática (o fkidCategoria delas é o código da Categoria Informática (1).)

Por fim, a Categoria 512Mb é uma subcategoria da (sub)categoria Memória. (pois o fkidCategoria dela é igual ao id da categoria Memória).

Graficamente, este exemplo ficaria assim:

Informática

Memória

512Mb

Processadores

Eletrônicos

Telefonia

Na sua tabela de PRODUTOS você teria o seguinte:

idProduto fkIdCategoria strNome

1 1 Computador

2 3 Memória Gerérica

3 5 Samsumg DDR400

Os produtos, neste caso, estão dentro de categorias, ou subcategorias:

1-Computador (Informática)

2-Memória Gerérica (Informática -> Memória)

3-Samsumg DDR400 (Informática -> Memória -> 512Mb)

Espero que esta explicação tenha te ajudado.

Qualquer coisa, entre em contato por e-mail: flptrevisan@yahoo.com.br

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Felipe Trevisan

Que pena que não funcionaram aos "espaços" que eu dei pra deixar mais bonitinho. A idéia era fazer assim:

"

Graficamente, este exemplo ficaria assim:

-Informática

---Memória

-----512Mb

---Processadores

-Eletrônicos

-Telefonia

"

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...