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

Criando um modelo mais avançado com status de usuário, thread e postagem


No meu primeiro artigo sobre um fórum online, mencionei que pode haver vários recursos mais avançados a serem adicionados:
  • Mais detalhes formais sobre o usuário em vez de um único campo “nome”. Você pode querer o nome, sobrenome e nome de usuário ou apelido do usuário. Um bom fórum também permitiria que os usuários tivessem uma foto de perfil, e-mail, funções, status (para permitir que os usuários fossem bloqueados) e outras informações, como quando visitaram o fórum pela última vez.
  • Controle adicional relacionado à criação de usuários para que possamos acompanhar quando um novo usuário é criado, mas antes que seu endereço de e-mail seja confirmado.
  • Fórum categorias e subcategorias onde cada categoria tem um assunto, vários moderadores e informações adicionais como data de criação da categoria. Um assunto para uma postagem além do conteúdo
  • Postagens moderadas que devem ser aprovados por um moderador antes de serem visíveis para outros usuários. As postagens e os tópicos teriam status diferentes, como:aguardando publicação, publicado, relatado como spam, bloqueado, desbloqueado.
  • E então podemos permitir que os usuários votem e vote contra tópicos e postagens.

Para o fórum, usarei o termo “thread” para me referir a uma conversa com potencialmente várias postagens relacionadas ao tópico.




Farei um comentário inicial; Eu geralmente uso números redondos como 100 ou 1000 para definir o comprimento dos campos varchar; Não estou sugerindo que estes sejam necessariamente o tamanho apropriado, mas estou usando isso como abreviação, em vez de deixar o comprimento indefinido (%). Por outro lado, ocasionalmente uso comprimentos muito específicos para campos como email e ip_address; 254 é o tamanho máximo que um endereço de e-mail pode ter de acordo com as definições RFC, enquanto 45 é o tamanho máximo que um endereço IPv6 pode ter.

Detalhes do usuário


Na Parte 1 de nossa série de artigos sobre como criar o fórum on-line, as informações do usuário eram muito limitadas. Vou melhorar os detalhes do usuário que são armazenados. Por enquanto, a moderação será bem básica:os usuários serão moderadores ou não. Podemos criar regras de moderação mais complicadas relacionadas a categorias e tópicos mais tarde.

Para o status dos usuários, criarei o user_status tabela, para que eu possa reutilizá-la em outra situação, mesmo que haja muito poucos status, como “EMAIL_NOT_VERIFIED”, “VERIFIED” e “BLOCKED”.

Criação de usuários


Usarei o status do usuário para reconhecer os usuários que estão no status "EMAIL_NOT_VERIFIED" depois que um usuário criou sua conta e um e-mail foi enviado para o endereço de e-mail fornecido, mas antes de clicar no URL de verificação no e-mail. Você pode até ficar mais complicado e ter status como “EMAIL_VERIFICATION_TO_BE_SENT” e “EMAIL_VERIFICATION_RESENT” se algumas dessas etapas forem tratadas por diferentes componentes em seu sistema e não imediatamente durante a criação do usuário.

Status de conversas e postagens


As postagens moderadas devem ser aprovadas por um moderador antes de serem visíveis para outros usuários. Posts e tópicos teriam status diferentes, como:aguardando aprovação, aprovado, relatado como spam, bloqueado. Para o status de tópicos e postagens, escolherei uma maneira mais flexível de lidar com status vinculando ao status tabela. Então a aplicação deve saber o que cada valor significa dentro das tabelas de status (se status =“APPROVED”, o thread é exibido), mas eu prefiro isso a apenas armazenar um texto no thread e post mesas. Teremos alguns status, como “WAITING_FOR_APPROVAL”, “APPROVED”, “REJECTED”, “REPORTED_AS_SPAM” e “BLOCKED”, e talvez queiramos adicionar mais no futuro.

Em outras palavras, um usuário cria um novo tópico ou um novo post, e ele é colocado no status “NOT_APPROVED”. Tópicos e postagens não aprovados não são exibidos para a maioria dos usuários; no entanto, os moderadores podem visualizar os itens não aprovados e escolher “Aprovar” ou “Rejeitar”. Os usuários podem marcar um tópico ou postagem como spam, mas isso deve ser confirmado por um moderador. Tópicos e postagens de spam não são exibidos aos usuários.

Isso me permite usar o status table para threads e posts, pois os status de ambos devem ter o mesmo significado. Não farei uso indevido do status tabela para indicar o status dos usuários; Eu não acho que seria uma boa escolha de design.

Design formal


Assim, estendemos o ERD que foi criado na Parte 1. Colori as tabelas que foram criadas no artigo da Parte 1 em amarelo e colori as tabelas recém-adicionadas em laranja para facilitar a visualização das adições. No entanto, não marquei alterações individuais nas tabelas.


E agora?


Novamente, ainda há melhorias adicionais a serem feitas, mas aqui nós pegamos um fórum online muito simples e adicionamos vários novos recursos úteis.

Nas próximas partes, analisarei a adição de outros recursos, como:
  • fórum categorias e subcategorias onde cada categoria tem um assunto, vários moderadores e informações adicionais como data de criação da categoria. Um assunto para uma postagem além do conteúdo
  • e, em seguida, podemos permitir que os usuários votem a favor e votem contra tópicos e postagens.

Quais recursos seu fórum online requer? Há algum recurso que você quer que eu leve em consideração ao preparar a próxima parte desta série? Se assim for, deixe-me saber.
« Parte anterior Próxima parte »