Modelagem de um DB para um sistema de currículo

Modelagem de um DB para um sistema de currículo

Artigo modelagem de um sistema de gerenciamento de currículo com modelo físico disponível em para vários SGBDS.

Olá! Tudo bem?

Meu nome é Dalmo Silva Mendes. Neste artigo gostaria de trocar ideias e experiências com vocês, fazendo a modelagem de um banco de dados para um sistema de currículo.

Vamos aos passos

Definindo as entidades:

  • Usuário;
  • Documento;
  • Formação;
  • Projeto;
  • Publicação;
  • Experiência;
  • Social e
  • Endereço.

 

Cada entidade contém no mínimo uma chave primaria, atributos e chave estrangeira(caso tenha um relacionamento com outra entidade). Também é possível ter alguns atributos de dados únicos como login, normalmente utiliza-se um e-mail, rg, cpf etc.

chave primária é um atributo de controle que possui a contagem automática ou auto_increment, ou seja, os números não podem se repetir e são inseridos automaticamente em uma sequência. Exemplo: 1,2,3...

Os atributos armazenam as informações das entidades, podem ser classificadas como atributo do tipo inteiro, decimal, string e verdadeiro ou falso. Assim, na tabela do banco de dados podemos ter tipos como int ou integer, varchar, char, date, time, timestamp etc.

As tabelas que possuem chave estrangeira indicam que recebem uma chave primaria de outra tabela, identificando que a respectiva informação possui uma origem e pode ser consultada e referenciada por essa chave. Dependo do contexto, esse relacionamento pode ser um para umum para muitos ou muitos para muitos.

 

MODELAGEM DE BANCO DE DADOS

Modelagem de base de dados de sistema de gerenciamento de currículo

Modelo criado com a ferramenta DBDesignerFork.

 

Script 01: Banco de Dados para MYSQL/MariaDB

 

CREATE TABLE usuario (
idusuario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
usuario_nome VARCHAR(30) NULL ,
usuario_sobrenome VARCHAR(100) NULL ,
usuario_genero CHAR(1) NULL ,
usuario_nacionalidade VARCHAR(100) NULL ,
usuario_naturalidade VARCHAR(50) NULL ,
usuario_foto VARCHAR(255) NULL ,
usuario_telefone VARCHAR(14) NULL ,
usuario_email VARCHAR(255) NULL ,
usuario_senha VARCHAR(255) NULL ,
usuario_nivel INTEGER(1) UNSIGNED NULL ,
usuario_resumo VARCHAR(255) NULL ,
usuario_cadastro TIMESTAMP NULL ,
usuario_alteracao TIMESTAMP NULL ,
usuario_estado INTEGER(1) UNSIGNED NULL ,
usuario_lixeira INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idusuario));


CREATE TABLE projeto (
idprojeto INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario_fk INTEGER UNSIGNED NOT NULL ,
projeto_nome VARCHAR(255) NULL ,
projeto_texto TEXT NULL ,
projeto_url VARCHAR(255) NULL ,
projeto_email VARCHAR(100) NULL ,
projeto_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idprojeto) ,
INDEX projeto_FKIndex1(idusuario_fk),
FOREIGN KEY(idusuario_fk)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);


CREATE TABLE publicacao (
idpublicacao INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario_fk INTEGER UNSIGNED NOT NULL ,
publicacao_plataforma VARCHAR(20) NULL ,
publicacao_tipo VARCHAR(100) NULL ,
publicacao_nome VARCHAR(100) NULL ,
publicacao_url VARCHAR(255) NULL ,
publicacao_cadastro DATE NULL ,
publicacao_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idpublicacao) ,
INDEX publicacao_FKIndex1(idusuario_fk),
FOREIGN KEY(idusuario_fk)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);


CREATE TABLE social (
idsocial INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario_fk INTEGER UNSIGNED NOT NULL ,
social_nome VARCHAR(20) NULL ,
social_url VARCHAR(255) NULL ,
social_icone VARCHAR(20) NULL ,
social_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idsocial) ,
INDEX social_FKIndex1(idusuario_fk),
FOREIGN KEY(idusuario_fk)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);


CREATE TABLE endereco (
idendereco INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario_fk INTEGER UNSIGNED NOT NULL ,
endereco_cep INTEGER UNSIGNED NULL ,
endereco_rua VARCHAR(100) NULL ,
endereco_numero VARCHAR(20) NULL ,
endereco_bairro VARCHAR(100) NULL ,
endereco_cidade VARCHAR(100) NULL ,
endereco_uf CHAR(2) NULL ,
endereco_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idendereco) ,
INDEX endereco_FKIndex1(idusuario_fk),
FOREIGN KEY(idusuario_fk)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);


CREATE TABLE documento (
iddocumento INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario INTEGER UNSIGNED NOT NULL ,
documento_cpf VARCHAR(11) NULL ,
documento_rg VARCHAR(30) NULL ,
documento_titulo_inscricao VARCHAR(20) NULL ,
documento_titulo_zona VARCHAR(5) NULL ,
documento_titulo_secao VARCHAR(5) NULL ,
documento_inicio DATE NULL ,
documento_alteracao TIMESTAMP NULL ,
documento_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(iddocumento, idusuario) ,
INDEX documento_FKIndex1(idusuario),
FOREIGN KEY(idusuario)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);


CREATE TABLE formacao (
idformacao INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario_fk INTEGER UNSIGNED NOT NULL ,
formacao_tipo VARCHAR(100) NULL ,
formacao_curso VARCHAR(255) NULL ,
formacao_local VARCHAR(255) NULL ,
formacao_inicio DATE NULL ,
formacao_situacao INTEGER(1) UNSIGNED NULL ,
formacao_conclusao DATE NULL ,
formacao_ch CHAR(4) NULL ,
formacao_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idformacao) ,
INDEX formacao_FKIndex1(idusuario_fk),
FOREIGN KEY(idusuario_fk)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);


CREATE TABLE experiencia (
idexperiencia INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
idusuario_fk INTEGER UNSIGNED NOT NULL ,
experiencia_trabalho VARCHAR(50) NULL ,
experiencia_empresa VARCHAR(255) NULL ,
experiencia_empresa_tipo VARCHAR(20) NULL ,
experiencia_area VARCHAR(255) NULL ,
experiencia_cargo VARCHAR(100) NULL ,
experiencia_funcao VARCHAR(255) NULL ,
experiencia_inicio DATE NULL ,
experiencia_situacao INTEGER(1) UNSIGNED NULL ,
experiencia_termino DATE NULL ,
experiencia_estado INTEGER(1) UNSIGNED NULL ,
PRIMARY KEY(idexperiencia) ,
INDEX profissional_FKIndex1(idusuario_fk),
FOREIGN KEY(idusuario_fk)
REFERENCES usuario(idusuario)
ON DELETE CASCADE
ON UPDATE NO ACTION);

 

Próximos passos

Escolha o Banco de dados que utilizará;

Com o banco de dados instalado é hora de importa o script;

Baixe todos os scripts de banco de dados no meu GitHub.

Abra o banco de dados e uma ferramenta de gerenciamento de dados como o pgAdminMySQL Workbench, PHPMyadmin, Database Express Edition client Web, SQL Manager, PostGreSQL Studio entre outras ferramentas de gerenciamento de dados disponível no mercado.

Após fazer sua escolha, crie uma base de dados e importe o arquivo sql. Isso resultará no banco de dados físico. Veja o exemplo baixo:

Ferramenta PHPMyAdmin, Banco de Dados MariaDB.

Modelagem de base de dados de sistema de gerenciamento de currículo

 

Banco de Dados Físico - Sistema de Gerenciamento de Currículo

 

 

Pessoal é isso! Espero que vocês tenham gostado do artigo, em um segundo momento vamos popular o banco de dados. Atualizações do script e dados no GitHub.Projeto GitHub

Dúvidas, comentários e sugestões abaixo.

Por Dalmo Silva Mendes.

 

Referências

Navante e Elmasri. Sistemas de banco de dados. 6ª edição.

Fernando Amaral. Introdução à Ciência de Dados. Mineração de Dados e Big Data. Ed. Alta Books.

Felipe Machado e Maurício Abreu. Projeto de Banco de Dados. Uma Visão Prática. 17ª Edição. Ed. Érica.

Pesquisas realizadas em sites e documentação das ferramentas:

Mysql. Disponível em <https://www.mysql.com/>.

MariaDB. Disponível em <https://mariadb.org/>

Oracle. Disponível em <https://www.oracle.com/>.

SQL Server. Disponível em <https://www.microsoft.com/pt-br/sql-server/>.

PostgreSQL. Disponível em <https://www.postgresql.org/>.

Olá, deixe seu comentário para Modelagem de um DB para um sistema de currículo

Enviando Comentário Fechar :/