Pergunta

Eu tenho a seguinte configuração para o meu Blog Modelo de Dados:

Blog               Articles             Categories
-----              --------          1  ----------
ID  \ 1         *  ID            /----- ID
Name \------------ BlogID       /       Name 
Owner              Name      * /      
                   CategoryID-/

Estou preocupado sobre como este modelo de dados coincide com as 'melhores práticas' para blogs. Se um Blog é excluído, deve todos os artigos para o blog ser excluído? Se uma categoria é excluída, o que deve acontecer com os artigos?

Existe uma maneira melhor? Tem algo que estou perdendo? O que 'melhores práticas' sugerem fazer?

Foi útil?

Solução

Isso realmente depende de seu caso de uso. Um monte de aplicativos de blog usar tags com um muitos-para-muitos relação em vez de categorias com um relationsip um-para-muitos, porque faz mais sentido para ver um artigo como relacionados a (possivelmente) muitas marcas do que para ver um artigo como " contido" dentro de uma categoria.

Se a lógica do seu blog é que um artigo é estritamente contido em uma categoria, então o relacionamento um-para-muitos é justificada. E em algumas circunstâncias uma eliminação em cascata também se justificaria. Afinal, onde é que os artigos órfãos sequer existe.

Este é apenas um caso em que você deve antecipar a intuição de sua base de usuários. O que seria que assumir é natural.

Aliás, é muito mais trabalho, mas se fosse comigo, eu não faria uma eliminação em cascata. Eu iria marcar artigos como órfãs e escondê-los de maior número de visualizações. Também gostaria de fornecer alguma interface para restaurar artigos órfãos. E eu gostaria de considerar a possibilidade de um script que exclui qualquer coisa que ficaram órfãs por mais de um período de tempo. Dessa forma, se você estava errado sobre o que seus usuários espera que aconteça, você pode corrigir o problema.

Outras dicas

Este (mais velho) pós introduz algumas variações de esquema db relacionados tag incluindo uma discussão detalhada. Talvez seja um bom ponto de partida.

Depende. Se o seu mecanismo de blog não permite uma entrada sem uma categoria especificada, você provavelmente deve notificar o usuário das consequências e excluir os artigos. Caso contrário, você poderia usar um ON DELETE SET NULL vez.

Se o seu relacionamento está configurado direito, você não deve ser capaz de excluir a categoria sem primeiro excluir todos os dados relacionados. Parece estranho que a exclusão de uma categoria iria remover um monte de artigos, mas, ao mesmo tempo, se uma categoria não é mais válido, em seguida, os artigos não deve ser qualquer um.

Talvez uma opção de remapear todos os artigos para uma nova categoria.

Um par de perguntas. Pode um artigo tiver mais de uma categoria? Você está permitindo que artigos para ter 0 categorias associadas com eles? Por sua descrição, porém, eu diria que você não deseja excluir os artigos. As categorias, na minha experiência ao desenvolver um blog, geralmente são muitos para muitos relação com artigos / posts (várias categorias que descrevem várias publicações). Então eu não excluí-los, mas mais uma vez que depende a sua lógica de negócio e como você queria lidar com isso.

Bem, a chave estrangeira (que deve exist) relativo a categoria blog para o seu blog que não permitem que você. Você deve considerar alterar a categoria de seu artigo para um diferente se você quiser manter o seu artigo e integridade referencial.

Esqueça modelo de dados, o uso do modelo de objeto, que é o que os dados é a implementação, e o objeto é a interface, que é mais perto da exigência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top