image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Dalmo Mendes
Dalmo Mendes19/04/2022 22:39
Compartilhe

Modelagem de um Banco de Dados para Cadastro de Usuários

  • #MySQL
  • #Modelagem de Negócios

Fala Devs! Tudo bem com vocês? Espero que sim!

Neste artigo vou apresentar um pequeno projeto de banco de dados para facilitar o entendimento de quem está começando. Para quem possui dúvidas sobre a modelagem de banco de dados relacional, seus atributos e tipos de dados. Além disso, os códigos XML do projeto estão disponíveis no Github.


Requisitos básicos


Para este pequeno projeto foi definido duas entidades e seus respectivos atributos:


Entidade Usuário: nome, sobrenome, foto, cpf, rg, gênero, whatsapp, link, login, senha, nível, cadastro, situação.

Entidade Endereço: tipo, cep, rua, número, bairro, complemento, cidade, uf, situação.


Modelagem: Banco de Dados - Cadastro de Usuários


image

Na entidade usuário os tipos são: nome (texto), sobrenome(texto), foto(texto), cpf(texto), rg(texto), gênero(texto), whatsapp(texto), link(texto), login(texto), senha(texto), nível(inteiro), cadastro(data e hora), situação(verdadeiro ou falso).

Já na entidade endereço os tipos ficaram assim: tipo(texto), cep(texto), rua(texto), número(texto), bairro(texto), complemento(texto), cidade(texto), uf(texto), situação(verdadeiro ou falso). Além disso, o relacionamento funciona da seguinte forma: um usuário pode ter um ou vários endereços e um endereço pertence a um usuário.

Porém, se duas pessoas que moram no mesmo endereço, estiverem cadastradas no sistema, cada endereço possuirá um id diferente, sendo assim, cada pessoa possuirá seu endereço, não interferindo, caso tenha que fazer alguma alteração no mesmo.


Script SQL do Modelo Físico


 CREATE TABLE usuario (

idusuario BIGINT NOT NULL AUTO_INCREMENT,

nome VARCHAR(100) NOT NULL ,

sobrenome VARCHAR(255) NOT NULL ,

foto VARCHAR(255) NULL ,

cpf VARCHAR(11) NULL ,

rg VARCHAR(30) NULL ,

genero VARCHAR(20) NOT NULL ,

whatsapp VARCHAR(14) NULL ,

link VARCHAR(255) NULL ,

login VARCHAR(255) NOT NULL ,

senha VARCHAR(255) NOT NULL ,

nivel INTEGER UNSIGNED NOT NULL ,

cadastro TIMESTAMP NOT NULL ,

situacao BOOL NOT NULL ,

PRIMARY KEY(idusuario));

 CREATE TABLE endereco (

idendereco BIGINT NOT NULL AUTO_INCREMENT,

usuario_idusuario BIGINT NOT NULL ,

tipo VARCHAR(10) NULL ,

cep VARCHAR(10) NULL ,

rua VARCHAR(100) NULL ,

numero VARCHAR(50) NULL ,

bairro VARCHAR(100) NULL ,

complemento VARCHAR(255) NULL ,

cidade VARCHAR(50) NULL ,

uf CHAR(2) NULL ,

situacao BOOL NULL ,

PRIMARY KEY(idendereco) ,

INDEX endereco_FKIndex1(usuario_idusuario),

FOREIGN KEY(usuario_idusuario)

REFERENCES usuario(idusuario)

ON DELETE CASCADE

ON UPDATE NO ACTION);

Procedimentos: primeiro, criar o banco de dados; segundo passo, importar o arquivo SQL e clicar em executar.

 Banco de Dados Criado no Mysql/MariaDB

image

Visualização da tabela usuário, utilizando a ferramenta phpmyadmin, com banco de dados MariaDB, disponível nos pacotes xampp, wampp, easyPHP etc.

Em caso de dúvidas ou se você tenha alguma sugestão comenta aqui!

Grande abraço para a comunidade DIO!

Por Dalmo Mendes

E-mail: dalmosilvamendes@gmail.com

GitHub: https://github.com/DalmoMendes

Projeto: https://github.com/DalmoMendes/modelagem-db-cadastro-usuario

Boa Vista-Roraima

Compartilhe
Comentários (2)
Vitor Neves
Vitor Neves - 19/04/2022 23:16

Olá Dalmo, louvável sua contribuição, se eu puder sugestionar seria você proceder com a normalização das tabelas, e já pensar num possível cenário de expansão do seu banco!

Geralmente uma tabela usuário, terão dados pertinentes a acesso:

image


Endereço faria uma normalização dividindo em duas Tabelas, endereço e município

image image


E ainda criaria a tabela de Dados Pessoais, essa tabela, seguindo as normas da ISO27001 no tangente a anonimização de dados.


Espero ter contribuído de alguma forma!

Dalmo Mendes
Dalmo Mendes - 19/04/2022 23:24

Legal Vitor, ótimo comentário. A ideia e evoluir o banco de dados. Porém, neste momento o cliente está necessitando dessas informações. Na segunda etapa do artigo, vou aplicar algumas melhorias para a evolução do sistema em si. Obrigado pela contribuição! Muito top suas colocações.