Database
 sql >> Base de Dados >  >> RDS >> Database

Modelando uma estrutura de dados básica para gerenciar usuários, threads e postagens


Um fórum de discussão on-line é um site onde pessoas pode manter conversas na forma de mensagens postadas . Os fóruns de discussão permitem conversas quando as pessoas não estão on-line e as mensagens podem ser arquivadas temporariamente. Além disso, dependendo da configuração do fórum, uma mensagem pode precisar ser aprovada por um moderador antes de se tornar visível para outros usuários. Os fóruns têm um conjunto específico de termos, por exemplo, uma única conversa geralmente é chamada de “thread”. Os tópicos podem ser respondidos por quantas pessoas quiserem. A maioria dos fóruns exige que os usuários se registrem e, posteriormente, façam login para postar mensagens. No entanto, na maioria dos fóruns, os usuários não precisam fazer login para ler as mensagens existentes.

Estes são requisitos comuns para um fórum de site , então vamos trabalhar para fazer um modelo de banco de dados começando com uma configuração básica de fórum que podemos estender mais tarde.

Entidades


Como mencionado anteriormente, as pessoas mantêm conversas na forma de mensagens postadas que são agrupadas em conversas. Portanto, o banco de dados precisa suportar informações sobre pessoas ou usuários , conversas ou tópicos e mensagens ou postagens .

Para o fórum online, os usuários precisarão ser criados – pode ser necessário permitir que os usuários editem seus detalhes depois de terem sido criados, mas provavelmente não há necessidade de permitir a exclusão de usuários. Os usuários criarão conversas, ou tópicos, geralmente postando uma primeira mensagem no fórum, em vez de criar uma conversa explicitamente, mas pode ser necessário oferecer suporte a ambas as possibilidades. Os tópicos conterão postagens criadas por usuários.

Funcionalidade


A postagem de mensagens é a principal funcionalidade do fórum online . Os usuários devem poder editar as mensagens depois de postadas? Os usuários devem poder excluir mensagens após a postagem? A resposta para ambas é provavelmente sim.

Relacionamentos


As postagens são vinculadas a tópicos e as postagens são criadas pelos usuários, portanto, haverá um relacionamento definido entre usuários e postagens. Os tópicos são criados pelos usuários, então você deve armazenar um relacionamento lá (por exemplo, se um usuário for banido do fórum, você pode remover todos os tópicos e postagens que esse usuário criou).

Agora que você conhece as entidades e relacionamentos , você está pronto para construir um modelo do banco de dados, e isso deve levar apenas alguns minutos. É aqui que as ferramentas são úteis.

Modelo de banco de dados


Vamos dar uma olhada no Vertabelo para continuar o fórum de discussão online.

Crie um modelo para o fórum on-line e comece a adicionar as entidades representando usuários, tópicos e postagens. Vertabelo irá lembrá-lo que você precisa definir chaves primárias para cada tabela; Eu recomendo usar id colunas, pois isso lhe dará mais flexibilidade em potencial (e não o vinculará ao nome do usuário como chave primária ou outras armadilhas). Em seguida, adicione os relacionamentos que já descrevemos anteriormente. Eu adicionei uma senha (em forma de hash) para o usuário controlar o login dos usuários.

Agora, você terminará com algo mais ou menos assim:




Você verá que há carimbos de data/hora com a data/hora da criação de cada linha, para que essas informações possam ser exibidas no fórum (“Usuário desde 2 de fevereiro de 2014”, “Data de postagem:24 de dezembro de 2014”, etc. ).

Se você vai ter um moderado fórum de discussão on-line no qual as mensagens devem ser aprovadas por um moderador antes de se tornarem visíveis para outros usuários, então você deve adicionar um item de status a tópicos e postagens para que o aplicativo possa decidir se os tópicos e postagens associadas foram revisados ​​e aprovados. Um status também permitiria que outros usuários marcassem tópicos e postagens como spam ou inapropriados.

Espero que você já possa começar a pensar em melhorias. Por exemplo, se você precisar de detalhes formais sobre o usuário, em vez de um único campo “nome”, você pode querer seu nome, sobrenome e nome de usuário ou apelido. E uma postagem pode ter um assunto além do conteúdo, mas acho que o assunto da postagem está vinculado ao tópico, então isso pode não ser necessário.
  Próxima parte »