Giihh 6 Denunciar post Postado Julho 11, 2014 Galera, Estou desenvolvendo um sistema de localização de celulares e notebooks em PHP, mas que varias empresas vão poder usar. Daí pensei em algo do tipo quando o administrador do sistema criar uma nova conta(login empresa), automaticamente será criado a área da nova empresa... essa empresa pode criar e controlar permissões de usuários na área dela. Estou tentando fazer tudo no mesmo BD de forma automatizada e segura. As tabelas por enquanto estão assim Usuários (do sistema) funcionarios (da empresa) notebook celular manutencao unidadesEmpresa foraDasUnidades A funcionalidade do sistema é controlar em qual unidade esta cada celular (são vários) e cada notebook (são vários), a quantidade depende do total de cadastros de equipamentos de cada empresa. Quando um funcionário saí da empresa para trabalhar fora, obrigatoriamente leva um celular e um notebook. O sistema tem que informar em qual unidade o funcionário retirou os equipamentos e em qual unidade ele devolveu, com datas. Bem como mudar o status destes equipamentos para "Fora das Unidades". Em relação a manutenção o sistema precisa informar a data de entrada e saída da manutenção, e os notebooks e celulares em manutenção devem ficar com o status de "Em Manutenção" Já estou terminando toda a parte do Front End em HTML5 e PHP, inicialmente estou utilizando PDO mas acho que já vou mudar para MySQLI para os acessos e ações no BD, já que tenho certeza que vou ficar com o MySQL mesmo... só que travei na duvida de como fazer o relacionamento das tabelas para o BD separar certinho o que é de cada empresa e usuários de cada empresa. E como automatizar o processo do ADMIN Geral do Sistema para criar novas contas de empresas isoladas... separando tudo certinho no BD automaticamente Preciso de umas dicas, links, toda ajuda é bem vinda Agradeço aos que contribuirem e me ajudarem a aprender mais essa Compartilhar este post Link para o post Compartilhar em outros sites
André Wielki 6 Denunciar post Postado Julho 11, 2014 Faz um cadastro do cliente -> Celular e Notebook Depois faz o Status do Notebook e Celular: RETIRADO, ENTREGUE Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 11, 2014 Obrigada André, Mas o problema, são as multi empresas, como criar as tabelas de cada uma delas e relacionar de acordo com o login tipo é gerado um novo ID (auto increment) para uma tabela EMPRESAS (quando o ADMIN criar o acesso de Login para cada empresa) Só que entendo que vai ser necessário criar automaticamente uma tabela de usuários para cada nova empresa, que serão os usuários que terão permissão na área de cada empresa, esses usuários ela pode criar, alterar e excluir na área dela. Posso utilizar: $sql = "CREATE TABLE `$users_empresa_tal` ( mas como indicar que determinada tabela de usuários criada terá relação com o novo ID (empresa)criado, no passo anterior? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Julho 11, 2014 Criar tabela? Para que, basta você adicionar o ID da empresa as respectivas tabelas, assim você sabe o que pertence a que empresa, isso é basicamente a lógica aplicada em qualquer SaaS. Compartilhar este post Link para o post Compartilhar em outros sites
victorqueiroz 34 Denunciar post Postado Julho 11, 2014 Basta você atribuir o id das empresas aos usuários ex: TABELA EMPRESA: id | empresa TABELA USUÁRIOS id | nome | empresa (aqui você insere o id da empresa) Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 11, 2014 Criar tabela? Para que, basta você adicionar o ID da empresa as respectivas tabelas, assim você sabe o que pertence a que empresa, isso é basicamente a lógica aplicada em qualquer SaaS. SaaS é uma metodologia? ainda não sei sobre o assunto apenas li este post por enquanto, deu pra ter uma ideia bem vaga. Basta você atribuir o id das empresas aos usuários ex: TABELA EMPRESA: id | empresa TABELA USUÁRIOS id | nome | empresa (aqui você insere o id da empresa) Então basicamente a estrutura do schema ficará assim? TABELA EMPRESA: id | empresa TABELA USUÁRIOS id | nome | login | senha | empresa (aqui você insere o id da empresa) esses serão os usuários de todas as empresas TABELA FUNCIONÁRIOS id | nome | funcao | empresa (aqui você insere o id da empresa) esses serão os funcionarios de todas as empresas TABELA NOTEBOOK id | codigo_interno | marca | modelo | empresa (aqui você insere o id da empresa) TABELA CELULAR id | codigo_interno | marca | modelo | empresa (aqui você insere o id da empresa) TABELA UNIDADES_EMPRESA id | nome_unidade | endereço | telefone | empresa (aqui você insere o id da empresa) Alguma dica de como automatizo isso conforme criar um novo login no PHP? Compartilhar este post Link para o post Compartilhar em outros sites
victorqueiroz 34 Denunciar post Postado Julho 11, 2014 o funcionário terá acesso ao sistema? TABELA NOTEBOOK id | codigo_interno | marca | modelo | empresa (aqui você insere o id da empresa) | funcionario(id do funcionario) (PRECISA CRIAR OUTRA COLUNA PARA INFORMAR DE QUEM É ESSE NOTEBOOK) TABELA CELULAR id | codigo_interno | marca | modelo | empresa (aqui você insere o id da empresa) | funcionario(id do funcionario) (AQUI A MESMA COISA QUE DISSE ACIMA) Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 11, 2014 Os funcionarios não terão acesso ao sistema Os notebooks e celulares são da empresa, e os usos são aleatórios, ou seja um funcionario pega um notebook e um celular por um periodo, depois do periodo devolve em uma das unidades. ai o sistema tem que organizar onde estão estes notebooks e celulares, se estiver com algum funcionario tem que informar antecipadamente de qual unidade ele saiu e para qual unidade ele pretende devolver. As paginas do sistema - Inicio - Configurações - dados e acesso empresa - criar, alterar e excluir usuários - Cadastros - cadastro de funcionarios - cadastro de notebooks - cadastro de celulares - cadastro de unidades (filiais da empresa) - Localização - Localização de notebooks (nas unidades) - Localização de celulares (nas unidades) - Fora das unidades (celular notebook na responsabilidade de algum funcionário) - Manutenção - Celulares em manutenção (data de entrada e de saída) ao sair da manutenção tem que ficar disponivel no sistema - Notebook em manutenção (data de entrada e de saída)ao sair da manutenção tem que ficar disponivel no sistema - Relatórios - Aqui vou estudar como fazer para gerar relatórios personalizados, por periodo, por unidade, etc Compartilhar este post Link para o post Compartilhar em outros sites
victorqueiroz 34 Denunciar post Postado Julho 11, 2014 Problema resolvido? Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Saraiva 84 Denunciar post Postado Julho 11, 2014 Acho desnecessário o uso de duas tabelas uma para celular e outra para notebook se futuramente precisar trabalhar com mais equipamentos como tablets entre outros tera que criar outras tabelas para cada novo tipo de equipamento e mais simples trabalhar com um tabela para vários equipamentos. Eu trabalharia com uma estrutura de banco de dados mais menos assim assim Tabela empresa id_empresa nome_empresa cnpj, telefone, email, etc... Tabela usuario id_usuario id_empresa (aqui seria ligação entre o usuario e a empresa) nome_usuario cpf, telefone, email, etc... Tabela tipo_equipamento id_tipo_equipamento id_empresa (ligação entre o tipos de equipamentos e a empresa) nome_equipamento (aqui a empresa iria cadastra o tipo de equipamento da qual ela precisaria ter o controle ex: celular, notebook, tablet, etc..) Tabela setor id_setor id_empresa (ligação entre setores e a empresa) nome_setor (aqui a empresa iria cadastra todos os setores onde este equipamento poderia estar inclusive setores externos) Tabela equipamentos id_equipamentos id_tipo_equipamentos (Seria a relação para saber qual o tipo do equipamento) id_empresa (ligação entre o equipamento e a empresa) id_identificação (Seria algum tipo de identificação que cada equipamento teria podendo ser um numero de serie) Tabela localizacao id_localizacao id_equipamento (ligação com o equipamento) id_usuario (ligação com o usuario que esta com o equipamento) id_setor (ligação com o setor que esta com o equipamento) Compartilhar este post Link para o post Compartilhar em outros sites
victorqueiroz 34 Denunciar post Postado Julho 11, 2014 fica a critério... Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 11, 2014 Acho desnecessário o uso de duas tabelas uma para celular e outra para notebook se futuramente precisar trabalhar com mais equipamentos como tablets entre outros tera que criar outras tabelas para cada novo tipo de equipamento e mais simples trabalhar com um tabela para vários equipamentos. Olá Ricardo, ótima ideia, na sua sugestão faltou apenas a Tabela de Manutenção. Mas neste caso é apenas notebook e celular mesmo. Problema resolvido? Ainda falta como automatizar a criação de IDs no banco de dados (no caso novas empresas) em PHP conforme o ADMIN Geral do sistema criar nova conta (login e senha). Estou tentando aqui, mas realmente dicas de como começar são bem vindas Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Julho 11, 2014 o ID do usuário só é importante a nível de sistema e para o usuário tanto faz, logo não precisa gerar um ID de acordo com o ID da empresa como: EMPRESA 1 ID 1EMPRESA 1 ID 2EMPRESA 1 ID 3EMPRESA 2 ID 1 isso não é necessário. se a empresa 2 surgir com o ID 4 não vai importar. Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Saraiva 84 Denunciar post Postado Julho 11, 2014 gislef isso o banco de dados mesmo gerencia de forma automática se você configurar o campo para auto incremento. Já no processo que fiz de unir as duas tabelas foi pensando em escalabilidade pois o seu projeto pode crescer e futuramente pode ter essa necessidade de acrescentar mais equipamentos e o seu sistema já esta preparado para isso e é tambem uma forma de normalização das tabelas do seu banco de dados te aconselho a dar uma lida sobre normalização de dados vai por mim isto te poupa muito trabalho futuramente. Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 11, 2014 Preciso de uma ajuda pra criar a função... estou fazendo orientado a objetos vide postagem abaixo #17 Compartilhar este post Link para o post Compartilhar em outros sites
victorqueiroz 34 Denunciar post Postado Julho 11, 2014 gislef, na hora de criar a tabela vc define o id como chave primaria e auto increment, assim sempre que for adicionado uma nova empresa, o id irá mudar automaticamente! :) Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 11, 2014 gislef isso o banco de dados mesmo gerencia de forma automática se você configurar o campo para auto incremento. Já no processo que fiz de unir as duas tabelas foi pensando em escalabilidade pois o seu projeto pode crescer e futuramente pode ter essa necessidade de acrescentar mais equipamentos e o seu sistema já esta preparado para isso e é tambem uma forma de normalização das tabelas do seu banco de dados te aconselho a dar uma lida sobre normalização de dados vai por mim isto te poupa muito trabalho futuramente. Sim, sei que o auto incremento faz isso automaticamente... mas como sabemos faz isso no BD. Agora estou fazendo a parte do login (php)... e quero que quando o ADMIN GERAL criar uma nova conta de empresa (no Front End na área do admin), ou seja UMA FUNÇÃO NO CÓDIGO PHP que crie os ids no DB pelo Front End, sem ter a necessidade de ir manualmente no BD. Estou criando o login: Na parte de usuários lembrei também que tem o nivel de acesso 1 admin 2 empresas 3 usuários empresas. TABELA USUÁRIOS id | nome | login | senha | nivel | empresa (aqui você insere o id da empresa) esses serão os usuários de todas as empresas Preciso de uma ajuda pra criar a função, um exemplo de como fazer a função pra aprender na prática... estou fazendo orientado a objetos. Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Saraiva 84 Denunciar post Postado Julho 12, 2014 gislef bom você não precisar ir manualmente no banco de dados para criar o id e sim definir para que o seu banco de dados faça isso de formar automática, agora se quiser fazer manual o que é extremamente desnecessário você pode fazer uma consulta no banco de dados quando a pagina for chamada e pegar o ultimo id cadastrado e com isso somar mais 1 e deixa no input porem existem alguns problemas que isso pode gerar por exemplo dois usuários tentarem cadastrar ao mesmo um registro pois o campo chave primaria deve unico por isso a melhor maneira e deixa que o próprio banco de dados gerencie. Compartilhar este post Link para o post Compartilhar em outros sites
Giihh 6 Denunciar post Postado Julho 12, 2014 Não... acho que não expliquei direito. "não precisar ir manualmente no banco de dados para criar o id e sim definir para que o seu banco de dados faça isso de formar automática" Sim, pra definir que o BD faça isso automaticamente uso o Auto Incremento... beleza (então pode desconsiderar esse ponto por enquanto) "...agora se quiser fazer manual o que é extremamente desnecessário você pode fazer uma consulta no banco de dados quando a pagina for chamada e pegar o ultimo id cadastrado e com isso somar mais 1 e deixa no input ..." Quando você diz se eu quiser fazer manual é programando diretamente no BD, toda vez que for criar um novo ID? Se for, não é dessa forma que mencionei no post anterior, senão vou ter que toda vez ficar entrando no código fonte do sistema só para alterar o input do formulário. porem existem alguns problemas que isso pode gerar por exemplo dois usuários tentarem cadastrar ao mesmo um registro pois o campo chave primaria deve unico por isso a melhor maneira e deixa que o próprio banco de dados gerencie. Quero aprender a fazer a função no PHP (Orientado a Objetos) que faça essas ações no BD automaticamente, sendo assim acredito que não haverá duplicidades de ID nas chaves primárias. O pessoal que souber a respeito disso me informe ai, dois usuários atualizando campos na mesma tabela (pelo front end) tem problema??? não sabia disso não Em relação as funções PHP MySQLI que ações to falando? TELA GERENCIAMENTO DE CONTAS DO ADMINISTRADOR (FRONT END) - Criar novas Empresa e senha (ID com nome da empresa, login, senha, dados empresariais e do responsavel, será criado automaticamente no BD ao criar conta nova) - Alterar Informações de acesso empresas (update IDs Empresas) - Excluir conta de empresas (excluir IDs empresas) TELA GERENCIAMENTO DE CONTA EMPRESA (FRONT END) - Criar novas contas usuários da empresa (ID com informações pessoais e de login será criado automaticamente no BD ao criar conta nova) - Alterar Informações de acesso usuários (update IDs usuários) - Excluir contas usuários da empresa (excluir IDs de usuários da empresa no BD) São essa funções acima que preciso aprender, mas preciso de um help!!! Agradeço a todos que contribuíram na parte das tabelas, me deu uma luz enorme. O próximo passo é aprender relacionar os comando PHP com o BD... no caso aprender e entender as FUNÇÕES (functions) que vão fazer essa interligação/ações do PHP com o BD, utilizando conexão MySQLI Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 12, 2014 Meu conselho é!Modele suas suas tabelas EER com Mysql Workbench "é de Grátis" e do tipo InnoDB, evite relacionar a tabela inserindo id_empresa manualmente em um sistema SaaS que é seu caso. tipo id_empresa tipo int e só com innodb você pode definir as opções de delete e update em cascata, assim você evita criar funções para mapear e excluir dados de outra tabela quando o ID pai for excluído. E só um detalhe sobre PDO x Mysqli, já que tem certeza que vai ficar com mysql. Cogitasse que no futuro não tao distante, a Oracle poderá licenciar o mysql para os hostings "uso comercial", pois ela investiu pesado no mysql nas ultimas versões.Neste caso a PDO é uma alternativa barata para migração para outros db´s free como PostgreSQL e MariaDB http://www.devmedia.com.br/introducao-ao-novo-mysql-workbench/25939 http://www.danielimamura.com.br/index.php/manual-completo-do-mysql-workbench/ Compartilhar este post Link para o post Compartilhar em outros sites