Boas práticas sobre relações de tabelas principais com tabelas de módulos

7

Esta é uma pergunta sobre o desenvolvimento do Magento, que pode ser aplicada para M1 e M2.

Nas últimas semanas, estive trabalhando em vários módulos diretamente relacionados à tabela de entidades / banco de dados nativos do Magento.

Aqui está um exemplo, mas isso é válido para vários casos de desenvolvimento de módulos:

Um módulo que permite restringir uma regra de carrinho de compras para apenas um cliente (descrito pelo email).

Cheguei à conclusão de que existem duas maneiras possíveis de fazer isso e estou me perguntando qual seria a recomendada:

Primeira maneira: use as tabelas principais do Magento

Nunca edite o núcleo, isso é aplicável às tabelas principais?

  • Adicione uma emailcoluna à salesrule_ruletabela
  • A aplicação da restrição pode ser feita quando o modelo é carregado.

Segunda maneira: use uma tabela personalizada

  • Criar uma tabela personalizada com salesrule_ide emailvinculada a um modelo personalizado
  • A aplicação da restrição pode ser feita com uma junção ou carregamento extra (do modelo personalizado)

Naquela época, eu costumava modificar sempre as tabelas principais diretamente, mas agora não acho que esse seja o caminho certo. No entanto, estou preocupado com o desempenho em relação à segunda maneira .

Qual é a melhor / recomendada maneira de lidar com isso?

Raphael na Digital Pianism
fonte

Respostas:

5

Isso é puramente baseado em opiniões, para que outras pessoas possam diferir de opinião, mas, para mim, alterar uma tabela principal não é um problema, desde que você adicione apenas colunas ou um índice, etc.

Alterar as colunas existentes, excluí-las etc. terá um comportamento inesperado, portanto, deve ser evitado.

Se você adicionar a coluna através do script de instalação dos módulos, isso deve estar perfeitamente correto. Além disso, ao adicionar outra tabela, você deve ingressar ou consultar por si só, com uma penalidade de desempenho que a acompanha; portanto, na minha opinião, uma decisão ruim.

Mas como eu disse, essa é apenas a minha opinião;)

Sander Mangel
fonte
Obrigado pela sua contribuição, não seria um problema em relação às atualizações do Magento?
Raphael no Digital Pianism
1
somente se eles introduzirem a mesma coluna. Eu, pessoalmente, prefixo todas as colunas nas tabelas do núcleo com o nome do módulo
Sander Mangel
2
também verifique se as colunas adicionadas têm um prefixo de nome apropriado, para que outros módulos não entrem em conflito com elas.
Flyingmana 1/06/16