tony_lu 1 Denunciar post Postado Maio 2, 2015 Ola pessoal, estou com um projeto grande para realizar e tenho duvidas da melhor forma de trabalhar com o banco de dados. Se trata de um guia comercial. Cada empresa será classificada por categorias. Tenho em mente as seguintes tabelas: Tabela Empresas idEmpresa nomrEmpresa endereco cidade estado etc... Tabela Categorias idCategoria nome No portal, o usuário vai ter um campo onde ele vai digitar o nome do que ele quer por exemplo (ex: Pizzarias ou Restaurantes), então a programação tem que buscar o nome da categoria e relacionar as empresas. A melhor forma seria então de criar uma 3ª tabela relacionando as empresas com a categoria e a minha programação realizar a busca nessa tabela e quando for listar as empresas fazer uns innerjoin nas tabelas? ex da terceira tabela de relacionamento: Tabela Empresa_Categorias idRelacionamento idEmpresa idCategoria Queria saber se existe uma melhor forma de realizar este processo, minha preocupação é na hora da filtragem, de tornar o sistema lento...enfim aguardo as observações de quem puder ajudar. Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 2, 2015 A Tabela de Categoria poderia ter um auto-relacionamento Categoria __________ Cod_categoria Descricao_categoria Cod_categoria_principal Isto permitiria Categorias assim Restaurante ___Pizzaria ___Churrascaria ___Rodizio ___Comida_a_peso ___Entrega Permite a busca por entrega , pizzaria ou restaurante. A tabela de Empresa eu faria Empresa----<Filial Filial teria o endereço do guia , é comum uma empresa ter mais de uma filial na mesma cidade. Empresa teria apenas os dados da sede , para cobrança por exemplo. Compartilhar este post Link para o post Compartilhar em outros sites
tony_lu 1 Denunciar post Postado Maio 2, 2015 A Tabela de Categoria poderia ter um auto-relacionamento Categoria __________ Cod_categoria Descricao_categoria Cod_categoria_principal Isto permitiria Categorias assim Restaurante ___Pizzaria ___Churrascaria ___Rodizio ___Comida_a_peso ___Entrega Permite a busca por entrega , pizzaria ou restaurante. A tabela de Empresa eu faria Empresa----<Filial Filial teria o endereço do guia , é comum uma empresa ter mais de uma filial na mesma cidade. Empresa teria apenas os dados da sede , para cobrança por exemplo. Ola Motta, obrigado pela sua ideia em trabalhar com categorias e subcategorias... Agora falando do buscador, como você faria o sql para buscar as informações conforme o filtro que o usuario digitar, neste exemplo que você passou, o cara digita "Churrascaria" por exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 2, 2015 imaginando q as categorias nao sao mtas eu nao deixaria ele buscar em si, a medida q ele digita vai filtrando e aparecendo como faz no google Compartilhar este post Link para o post Compartilhar em outros sites
tony_lu 1 Denunciar post Postado Maio 2, 2015 Certo mas minha duvida é referente ao banco de dados... como eu faria esse relacionamento entre as empresas e categorias na hora da filtragem... Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 2, 2015 Imaginando como o motta propos... Tabela -Empresa- Id_Empresa Nome_Empresa Tabela -Categoria- Id_Categoria Nome_Categoria Tabela -Empresa_Categoria- Id_Empresa Id_Categoria select * from empresa e, categoria c, empresa_categoria ec where e.id_empresa = ec.id_empresa and c.id_categoria = ec.id_categoria and c.nome_categoria like '%churrascaria%' Compartilhar este post Link para o post Compartilhar em outros sites
tony_lu 1 Denunciar post Postado Maio 2, 2015 Imaginando como o motta propos... Tabela -Empresa- Id_Empresa Nome_Empresa Tabela -Categoria- Id_Categoria Nome_Categoria Tabela -Empresa_Categoria- Id_Empresa Id_Categoria select * from empresa e, categoria c, empresa_categoria ec where e.id_empresa = ec.id_empresa and c.id_categoria = ec.id_categoria and c.nome_categoria like '%churrascaria%' Bacana Giesta, você acha que essa seria a melhor maneira de se trabalhar neste caso ... falando de estrutura de banco de dados e a query ou você estruturava diferente? Obrigado pela atenção... Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 2, 2015 Para que uma empresa possua diversas categorias é o jeito correto de se fazer. Vale lembrar que é importante colocar chaves e indices nos pontos de juncao. Caso vc queira fazer com sub-grupos, que eu nao acho q seja necessario seria necessario definir quantos niveis/camadas/subgrupos seriam e atrelar esta tabela com left join, isso pq o mysql nao é mto bom com tabelas auto relacionais ao contrario do oracle por exemplo Compartilhar este post Link para o post Compartilhar em outros sites
tony_lu 1 Denunciar post Postado Maio 2, 2015 Para que uma empresa possua diversas categorias é o jeito correto de se fazer. Vale lembrar que é importante colocar chaves e indices nos pontos de juncao. Caso você queira fazer com sub-grupos, que eu nao acho q seja necessario seria necessario definir quantos niveis/camadas/subgrupos seriam e atrelar esta tabela com left join, isso pq o mysql nao é mto bom com tabelas auto relacionais ao contrario do oracle por exemplo Muito obrigado pela ajuda Giesta, não será necessário neste caso subgrupos. Pode me dar uma orientação de onde adicionar essas chaves e indices para otimizar as buscas por favor? Obrigado... Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 2, 2015 nos pontos de juncao (campos envolvidos no where) e indice onde a pesquisa é feita. depois vc deve executar um explain pra ver se o banco esta usando tudo direitinho. Se a resposta te ajudou marque como resolvido :) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 2, 2015 Gosto mais de buscas do tipo Combobox marcando mais de uma opção , a busca fica melhor pois vai nos índices. Não que a proposta do giesta seja ruim , apenas questão de gosto. Compartilhar este post Link para o post Compartilhar em outros sites
tony_lu 1 Denunciar post Postado Maio 2, 2015 Gosto mais de buscas do tipo Combobox marcando mais de uma opção , a busca fica melhor pois vai nos índices. Não que a proposta do giesta seja ruim , apenas questão de gosto. Ola motta, é que no caso neste portal que vou desenvolver o cliente quer que seja digitado a opção entendeu? Por isso acho que não tem outra forma a não ser dessa forma correto? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 2, 2015 O cliente manda. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 3, 2015 O cliente manda. :worship: Compartilhar este post Link para o post Compartilhar em outros sites