dados compartilhados(resolvido)
|
|
Alguém aqui já trabalhou no banco de dados com algo assim. Eu preciso compartilhar dados entre registros, exemplo: [empresas] id : integer empresa : string [planos] id : integer empresa_id : integer plano : string Ou seja, 10 planos padrões para 5 empresas, teríamos 50 campos na tabela planos. Mas é exatamente isto que não quero, pois os planos padrões quero que sejam compartilhados entre as empresas, portanto a tabela planos deveria ter apenas 10 registros e alguma coisa que indique que estes planos são padrões. Pois se cada empresa tiver 2 planos customizados, a tabela planos teria então 20 planos, que são os padrões mais os customizados de cada empresa (10 + 2 * 5). Minha solução é criar um campo na tabela para dizer se aquele plano é padrão, então em toda consulta para trazer os planos de uma determinada empresa, seria feito com: Finalmente a pergunta: Alguém já fez algo assim? Esta é a melhor solução? Como posso fazer o ActiveRecord Empresa usar esta condição para trazer seus respectivos planos, Um plugin que se chamaria act_as_default por exemplo. |
|
|
Eu não entendi muito bem o que você quer fazer, daria para dar mais detalhes sobre o negócio? Geralmente, propor uma arquitetura sem conhecer o negócio é dar tiro no escuro. 1) Me diz uma coisa, você quer centralizar todas as operações de dados das filias num único database de forma que você pode gerar valor? 2) Esse mesmo banco de dados está armazenando operações diárias das empresas, tipo clientes, estoque, pagamentos & etc …? |
|
|
Olá Antonio. “Começando pelo começo”: Eu estou com um sistema de uma escola que tem várias franquias no Brasil. Até o momento, ele tem 1 banco de dados, com exatamente a mesma estrutura para cada uma das franquias. Pra você ter idéia, ele tinha 1 código PHP para cada franquia, sendo que era o mesmo. Imagina o terror que é a manutenção! Chegando ao ponto que vc perguntou: Agora continuando o post anterior, o que acontece é que existem dados que são padrões para todas as franquias e portanto não quero repetí-los. Mas os mesmos dados podem ser complementados com dados específicos já para cada franquia. Ficou claro? |
|
|
Estes dados padrões, não há o perigo de um dia quererem ser customizados para uma franquia? Porque vc travar todas as franquias utilizando os mesmos planos, engessa o seu modelo. Uma sugestão legal, é mudar a forma que vc tá usando, adicionando uma tabela pra fazer a ligação, a nova tabela existiria apenas para association ‘has_many-has_many’ de N para M já que tanto uma empresa tem mais de um plano, quando um plano pode ter mais de uma empresa (já que ele é default e se repete). Além disso criar os planos ‘default’ na hora de executar os comandos de migrate. Se não tiver usando migrate, gera um migrate só pra isso, e aí vc declara algumas constantes globais como ID_PLANO_1, ID_PLANO_2, ID_PLANO_3 e toda vez que for adicionar a empresa, vc usa essas constantes pra inserir nessa tabela de associação entre a empresa. No banco de dados, fica assim o esquema [empresas] id : integer empresa : string [planos] id : integer plano : string [empresas_has_planos] empresa_id : integer planos_id : integer |
|
|
Lucas, esta foi minha primeira opção, mas como acho sempre que relacionamento nxm traz o quadrado de complexidade para o sistema, pensei em outra maneira. Provavelmente porque até então nunca tive algo poderoso como o ActiveRecord. Vc tem razão quanto a engessar. Vou espantar meus fantasmas e fazer da sua maneira, obrigado. Algúem mais quer opinar? |

