Prática em Banco de Dados
MER Estendido – Sistema SIGEM
Grupo: Marcos Felipe
Renan Reis
Manaus - 2013
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.
Modelagem Lógica -Banco de dados SIGEM
Modelagem EER -SIGEM
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 ,
`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 ,
`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`) )
-- -----------------------------------------------------
-- 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`))
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.
• 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.
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.
Top Related