Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

11
Prática em Banco de Dados MER Estendido Sistema SIGEM Grupo: Marcos Felipe Renan Reis Manaus - 2013

description

Universidade federal do amazonas Prática em Banco de dados

Transcript of Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Page 1: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Prática em Banco de Dados

MER Estendido – Sistema SIGEM

Grupo: Marcos Felipe

Renan Reis

Manaus - 2013

Page 2: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Descrição do Sistema

O sistema o SIGEM (Sistema de gestão de materiais) tem por objetivo o controle de

equipamentos que são emprestados e movimentados entre departamentos, e estes variam

desde computadores e impressoras até placas e equipamentos de menor porte. O sistema SIGEM possui o objetivo de fazer o controle da movimentação de equipamentos, seu

processamento é baseado em cadastros dos equipamentos, devidamente registrados com a imagem

dos mesmos, o controle e geração de uma identificação única para cada equipamento, assim como

registro de data e hora do empréstimo, rastreamento do produto (última pessoa a registrar o

empréstimo), e módulos de consulta pública, destinado à alunos que necessitem consultar a

disponibilidade de determinado equipamento para empréstimo imediato e/ou à longo prazo. As principais funções exercidas pelo sistema Sigem são o controle de empréstimos dos equipamentos

baseado em registros, registro e verificação de um ID único para o equipamento (tombamento), e

rastreamento do mesmo baseado nas informações obtidas dos empréstimos (data, hora, equipamento

emprestado, movimentação, se está ligada à algum projeto ou é pessoal, etc), basicamente, criando um

ambiente para controle dos equipamentos. A aquisição de um equipamento, assim como seu empréstimo,

está diretamente relacionado à um projeto, que será inserido no momento do registro do empréstimo.

Page 3: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Modelagem Lógica -Banco de dados SIGEM

Page 4: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Modelagem EER -SIGEM

Page 5: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Comandos LDD utilizados

-- -----------------------------------------------------

-- Table `categorias`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `categorias` (

`id` INT NOT NULL AUTO_INCREMENT ,

`nome` VARCHAR(255) NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

PRIMARY KEY (`id`) )

-- -----------------------------------------------------

-- Table `cursos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `cursos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`nome` VARCHAR(45) NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

PRIMARY KEY (`id`) )

-- -----------------------------------------------------

-- Table `projetos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `projetos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`nome` VARCHAR(255) NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

`data_inicio` DATE NULL DEFAULT NULL ,

`data_termino` DATE NULL DEFAULT NULL ,

`descricao_resumida` VARCHAR(255) NULL DEFAULT NULL ,

`coordenador_id` INT NULL ,

PRIMARY KEY (`id`) ,

INDEX `fk_projetos_usuarios1` (`coordenador_id` ASC) )

-- -----------------------------------------------------

-- Table `alunos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `alunos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`matricula` VARCHAR(255) NOT NULL ,

`nome` VARCHAR(255) NOT NULL ,

`email` VARCHAR(255) NOT NULL ,

`telefone` VARCHAR(255) NULL DEFAULT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

`rg` VARCHAR(15) NOT NULL ,

Page 6: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

`tipo` CHAR(1) NOT NULL ,

`curso_id` INT NOT NULL ,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `matricula` (`matricula` ASC) ,

INDEX `fk_solicitantes_cursos1_idx` (`curso_id` ASC) ,

CONSTRAINT `fk_solicitantes_cursos1`

FOREIGN KEY (`curso_id` )

REFERENCES `cursos` (`id` )

-- -----------------------------------------------------

-- Table `perfils`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `perfils` (

`id` INT(11) NOT NULL AUTO_INCREMENT ,

`nome` VARCHAR(45) NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

PRIMARY KEY (`id`) )

-- -----------------------------------------------------

-- Table `usuarios`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `usuarios` (

`id` INT(11) NOT NULL AUTO_INCREMENT ,

`login` VARCHAR(255) NOT NULL ,

`password` VARCHAR(255) NOT NULL ,

`nome` VARCHAR(255) NOT NULL ,

`email` VARCHAR(255) NOT NULL ,

`telefone` VARCHAR(255) NULL DEFAULT NULL ,

`situacao` CHAR(1) NOT NULL DEFAULT 'A' COMMENT 'A = Ativo, I = Inativo' ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

`perfil_id` INT(11) NOT NULL ,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `login` (`login` ASC) ,

INDEX `fk_usuarios_perfils1_idx` (`perfil_id` ASC) ,

CONSTRAINT `fk_usuarios_perfils1`

FOREIGN KEY (`perfil_id` )

REFERENCES `perfils` (`id` )

)

-- -----------------------------------------------------

-- Table `emprestimos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `emprestimos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`projeto_id` INT NOT NULL ,

`aluno_id` INT NOT NULL ,

`autorizador_id` INT NOT NULL ,

Page 7: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

`data_inicio` DATE NOT NULL ,

`data_devolucao` DATE NULL DEFAULT NULL ,

`finalidade` VARCHAR(255) NULL DEFAULT NULL ,

`data_entrega` DATE NOT NULL ,

`situacao` CHAR(1) NULL DEFAULT NULL ,

`usuario_id` INT NULL DEFAULT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

`observacao` VARCHAR(255) NULL ,

PRIMARY KEY (`id`) ,

INDEX `fk_emprestimos_projetos1_idx` (`projeto_id` ASC) ,

INDEX `fk_emprestimos_solicitantes_idx` (`aluno_id` ASC) ,

INDEX `fk_emprestimos_usuarios1_idx` (`autorizador_id` ASC) ,

INDEX `fk_emprestimos_usuarios2_idx` (`usuario_id` ASC) ,

CONSTRAINT `fk_emprestimos_projetos1`

FOREIGN KEY (`projeto_id` )

REFERENCES `projetos` (`id` )

CONSTRAINT `fk_emprestimos_solicitantes`

FOREIGN KEY (`aluno_id` )

REFERENCES `alunos` (`id` )

CONSTRAINT `fk_emprestimos_usuarios1`

FOREIGN KEY (`autorizador_id` )

REFERENCES `usuarios` (`id` )

CONSTRAINT `fk_emprestimos_usuarios2`

FOREIGN KEY (`usuario_id` )

REFERENCES `usuarios` (`id` ))

-- -----------------------------------------------------

-- Table `images`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `images` (

`id` INT NOT NULL AUTO_INCREMENT ,

`name` VARCHAR(75) NOT NULL DEFAULT '' ,

`clean_name` VARCHAR(75) NOT NULL DEFAULT '' ,

`type` VARCHAR(255) NOT NULL DEFAULT '' ,

`size` INT NOT NULL DEFAULT '0' ,

`data` LONGBLOB NOT NULL ,

`filehash` VARCHAR(255) NOT NULL DEFAULT '' ,

`ext` VARCHAR(255) NOT NULL DEFAULT '' ,

`created` DATETIME NULL DEFAULT NULL ,

`updated` DATETIME NULL DEFAULT NULL ,

PRIMARY KEY (`id`) )

-- -----------------------------------------------------

-- Table `localizacaos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `localizacaos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`local` VARCHAR(45) NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

`detalhe` VARCHAR(90) NULL ,

PRIMARY KEY (`id`) )

Page 8: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

-- -----------------------------------------------------

-- Table `equipamentos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `equipamentos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`descricao` VARCHAR(255) NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

`modified` DATETIME NULL DEFAULT NULL ,

`situacao` CHAR(1) NULL DEFAULT NULL ,

`numero_serie` VARCHAR(20) NULL DEFAULT NULL ,

`tombo` INT NULL DEFAULT NULL ,

`quantidade` INT NULL DEFAULT NULL ,

`image_id` INT NULL ,

`categoria_id` INT NOT NULL ,

`localizacao_id` INT NOT NULL ,

`projeto_id` int(11) NOT NULL,

PRIMARY KEY (`id`) ,

INDEX `fk_equipamentos_images1_idx` (`image_id` ASC) ,

INDEX `fk_equipamentos_categorias1_idx` (`categoria_id` ASC) ,

INDEX `fk_equipamentos_localizacaos1_idx` (`localizacao_id` ASC) ,

CONSTRAINT `fk_equipamentos_images1`

FOREIGN KEY (`image_id` )

REFERENCES `images` (`id` )

CONSTRAINT `fk_equipamentos_categorias1`

FOREIGN KEY (`categoria_id` )

REFERENCES `categorias` (`id` )

CONSTRAINT `fk_equipamentos_localizacaos1`

FOREIGN KEY (`localizacao_id` )

REFERENCES `localizacaos` (`id` )

)

-- -----------------------------------------------------

-- Table `itensemprestimos`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `itensemprestimos` (

`id` INT NOT NULL AUTO_INCREMENT ,

`quantidade` INT NOT NULL ,

`emprestimo_id` INT NOT NULL ,

`equipamento_id` INT NOT NULL ,

`created` DATETIME NULL DEFAULT NULL ,

PRIMARY KEY (`id`) ,

INDEX `fk_itensemprestimos_emprestimos1_idx` (`emprestimo_id` ASC) ,

INDEX `fk_itensemprestimos_equipamentos1_idx` (`equipamento_id` ASC) ,

CONSTRAINT `fk_itensemprestimos_emprestimos1`

FOREIGN KEY (`emprestimo_id` )

REFERENCES `emprestimos` (`id` )

CONSTRAINT `fk_itensemprestimos_equipamentos1`

FOREIGN KEY (`equipamento_id` )

REFERENCES `equipamentos` (`id`))

Page 9: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Descrição das Entidades e Relacionamentos

Usuário

Representa o usuário do sistema que irá manter os cadastros básicos, registrar as operações de empréstimos e gerar relatórios. O usuário deverá ter um perfil associado conforme suas

permissões de acesso às funcionalidades do sistema: • Secretária: Responsável por registrar as movimentações de empréstimos e

devoluções dosequipamentos. • Professor: Gerencia os equipamentos de sua responsabilidade e tem controle sobre a

situação deequipamentos emprestados. • Coordenador: Representa o coordenador de um projeto, no qual os equipamentos estão associados.

Atributos:

• Login: Alfanumérico. Representa o login usado na autenticação e deve ser único para cada usuário. • Senha: Alfanumérico. Representa a senha de acesso do usuário ao sistema. • Telefone: Alfanumérico. Representa o número de telefone do usuário. • E-mail: Alfanumérico. Endereço de e-mail do usuário.

Localização Representa o local no qual o equipamento está

localizado. Atributos • Descrição: Alfanumérico. Representa a descrição do local onde o equipamento pode ser localizado.

Projeto O projeto no qual os equipamentos serão utilizados. Pode ser um projeto institucional ou pessoal. Atributos

• Descrição: Descreve o nome do projeto.

Empréstimo Representa o empréstimo do equipamento e seu registro. Atributos

• Finalidade: Alfanumérico. Descrição textual do propósito do empréstimo. • Situação: Alfanumérico[1]. Representa a situação atual do empréstimo. Pode ser: 'A'-

Aberto, 'E' – Emprestado, 'D'-Devolvido. • Data de Empréstimo: Data do registro do empréstimo. • Data de Devolução: Data efetiva da devolução do(s) equipamento(s)

Equipamento Representa todos os equipamentos que podem ser emprestados pelos alunos. Atributos

• Identificação: Numérico. Representa o identificador único para um equipamento. • Descrição: Alfanumérico. Representa a descrição do equipamento.

Page 10: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

• Situação: Alfanumérico[1]. Representa a situação do equipamento, quanto a sua

disponibilidade. Pode ser 'A'-Ativo ou 'I'-Inativo • Categoria: Alfanumérico. Representa a categoria o qual está associado um equipamento.

Registra Este relacionamento representa a ação da Secretaria de registrar os equipamentos no sistema SIGEM. O relacionamento tem cardinalidade um para muitos(1xN), que significa que um usuário do tipo Secretaria pode registrar mais de um equipamento no SIGEM. Atributos

• Data de Emissão: Data de entrada de um equipamento no sistema. • Identificador do Registro: Numérico. Identificador único da operação de registro.

Page 11: Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)

Solicita Este relacionamento representa a ação de um Professor ou Coordenador solicitar um equipamento

para seu projeto. O relacionamento tem cardinalidade um para muitos(1xN), que significa que um

usuário do tipo Professor ou Coordenador pode solicitar mais de um equipamento no SIGEM.

Atributos: • Número de Protocolo: Alfanumérico. Representa unicamente a solicitação de um equipamento.

Possui Este relacionamento representa a listagem de Equipamentos que um Empréstimo possui. O

relacionamento tem cardinalidade muitos para muitos(NxN), que significa que em um empréstimo

pode ter vários equipamentos, e que um equimamento pode participar de vários empréstimos.

Atributos: • Localização: Alfanumérico. Representa o local associado ao empréstimo. • Projeto: Alfanumérico. Indica o projeto para o qual o equipamento será emprestado.

Melhorias no Diagrama e Decisões de Projeto

Correções no diagrama desenvolvido no primeiro trabalho foram aplicadas neste novo diagrama, levando-se em conta o andamento atual do projeto SIGEM. No diagrama anterior, foi removida a entidade Perfil e a especialização Tipos com os tipos administrador,

professor e usuário. A entidade usuário, no diagrama atual, possui as especializações: Secretária, Professor e

Coordenador. As atribuições de cada uma dessas especializações ficou evidenciada no diagrama atual. Foi removido a entidade Histórico, devido a falta de necessidade do mesmo para o registro de empréstimo.

A entidade Empréstimo no diagrama atual mantém as datas de empréstimo e devolução como atributos.