Você está na página 1de 21

Instituto Superior de Gestão Logística e Transportes

Departamento das Engenharias e Tecnologias


Licenciatura em Engenharia Informática

Trabalho de Base de dados II


TEMA:
Desenvolvimento de uma SGBD para uma Biblioteca

ISGEST
LDA_12_2019
Instituto Superior de Gestão Logística e Transportes
Departamento das Engenharias e Tecnologias
Licenciatura em Engenharia Informática

____________________________________

Helena Cafaia Cardoso


Estudante

Tomás Pedro
Estudante

Trabalho de conclusão do fim do ano


apresentado no ISGEST, para obtenção do
título de Apto em Bases de Dados II.

Turma: 2D-C2.04
Ano: 2ª
Grupo Nº: 3
Período: Manhã

Paulo da Silva
Msc
Agradecimento

Primeiramente agradecemos a Deus todo-poderoso, pela vida, saúde, e proteção


de graça que tem nos dado todos os dias, pelo acompanhamento durante esta
caminhada, aos nossos pais por serem os nossos grandes mentores, aos nossos irmãos,
colegas e amigos que têm nos acompanhado e ajudando direta ou indiretamente e
principalmente ao professor pelo tema bastante pertinente.
Sumário
Agradecimento.............................................................................................................................3
1. Introdução............................................................................................................................6
2. Base de dados......................................................................................................................7
3. Diagrama Entidade-Relacionamento....................................................................................7
3.1. Tipos de relacionamento..............................................................................................7
3.2 Entidade.............................................................................................................................7
3.3 As Entidades usado no projeto...........................................................................................7
4. Atributos..............................................................................................................................8
5. Domínio................................................................................................................................8
6. Chaves..................................................................................................................................8
6.1 Tipos de chaves..................................................................................................................8
7. Os comandos usados no projeto..........................................................................................8
7.1 Sintaxe................................................................................................................................8
8. Modelo de base de dados em Mysql....................................................................................9
9. Programas usados para o desenvolvimento do trabalho.....................................................9
10. Código fonte...................................................................................................................10
11. Desenho de interfaces gráficas da BD Mysql..................................................................18
12. Consultas Mysql.............................................................................................................18
13. Conclusão.......................................................................................................................20
Referências Bibliográficas..........................................................................................................21
Índice de figuras
Figura 1Diagrama Entidade-Relação da biblioteca___________________________________________9
Figura 2Interface Gráfica_______________________________________________________________18
Figura 3Tabela biblioteca______________________________________________________________19
Figura 4Campo nome e correio da tabela biblioteca_________________________________________19
Figura 5Campo linha coluna usando WHERE______________________________________________19
1. Introdução

No presente trabalho abordaremos sobre um sistema de Base de Dados (BD)


para Biblioteca, iremos abordar e mostra como funcionam um sistema de bd.

Nos achamos melhor desenvolver sistema de bd para biblioteca de forma a


melhor as buscas e os armazenamento dos dados como livros, funcionários, e onde se
encontram os respectivos departamentos.

Base de dados: é a colecção dos dados organizados, estruturado e agrupados


num determinado local de forma a serem facilmente mantidos, actualizados e
pesquisados.

SGBD: (Sistema Gerenciador de Banco de Dados) é um software que permite


criar, manter e manipular bancos de dados para diversas aplicações.
2. Base de dados
Um sistema de BD proporcionam o controle centralizado dos seus bancos
operacionais visto que o nosso trabalho trata do sistema de uma biblioteca não nos
esqueceremos antes definir realmente o que é uma biblioteca, o relacionamento de
banco de dados e os tipos, entidades, atributos, domínio, chaves primarias e externas ou
secundaria.

3. Diagrama Entidade-Relacionamento
Diagrama Entidade Relacionamento é a representação gráfica e principal
ferramenta do modelo conceitual. O diagrama facilita ainda a comunicação entre os
integrantes da equipe, pois oferece uma linguagem comum utilizada tanto pelo analista,
responsável por levantar os requisitos, e os desenvolvedores, responsáveis por
implementar aquilo que foi modelado.

3.1. Tipos de relacionamento


Os tipos de relacionamento são:
 Um para um;
 Um para muitos;
 Muitos para muitos;

Onde:
Um para um: ambas tabelas podem ter somente um registro de cada lado
do relacionamento e não só.
Um para muitos: a tabela de chave primaria contém somente um registro
relacionado a nenhum, a um ou a muitos registros da tabela relacionada, etc.
Muitos para muitos: cada registro em ambas as tabelas pode se relacionar
a nenhum ou a qualquer número de registros na outra tabela, etc.
3.2 Entidade
Entidade é qualquer objeto ou conceito, com interesse em causa e sobre o qual é
necessário guardar informação.
Para cada entidade existem dois tipos de atributos associados que são:

 Um atributo identificador, denominada chave primária que identifica


univocamente cada ocorrência da entidade.
 Um atributo descritor, atributos que não pertencem à chave primaria, não
identificam, mas descrevem cada ocorrência da entidade.

ISGEST_ENG_INFORMÁTICA 7
3.3 As Entidades usado no projeto
As entidades são: Biblioteca, leitor, exemplar, ária, fornecedor e imobiliária.

4. Atributos
Atributos: consiste nas características de uma entidade

5. Domínio
Domínio de um atributo é o conjunto de todos os valores que esse atributo pode
assumir.

6. Chaves
Uma chave é um atributo ou um conjunto de atributos que permite identificar de
modo unívoco os registos (entidade ou ocorrência) de uma tabela.
6.1 Tipos de chaves
Chave primária: é por conseguinte um atributo ou conjunto de atributos que
assume a função de identificar de modo unívoco as entidades ou registos de uma tabela.
Chave externa: é um atributo que é chave primária de uma tabela e que vai
aparecer como atributo de uma outra tabela.

7. Os comandos usados no projeto


CREATE; USE.

7.1 Sintaxe

CREATE – permite a criação de uma nova base de dados e tabela.

Sintaxe: CREATE nome_bd;

Exemplo: create biblioteca;

Sintaxe : CREATE nome_tabela( atributos );

Exemplo: create biblioteca (


id int (10) primary key auto_increment not
null,
nome varchar (40) not null,
direição varchar (30) not null
...);

USE - permite definir qual banco de dados a ser usado.

ISGEST_ENG_INFORMÁTICA 8
Sintaxe: USE nome_bd;

Exemplo: use biblioteca;

8. Modelo de base de dados em Mysql

Figura 1Diagrama Entidade-Relação da biblioteca

Esta figura mostra como funciona o nosso diagrama UML, mostra as entidades,
os atributos, e mostra como as tabelas foram relacionadas.

9. Programas usados para o desenvolvimento do trabalho

WAMP (Windows, Apache, MySQL, PHP / Perl / Python),


WAMP é uma forma de mini-servidor que pode ser executado em
praticamente qualquer sistema operacional Windows. O WAMP
inclui Apache 2, PHP 5 (portas SMTP estão desativadas) e MySQL
(phpMyAdmin e SQLitemanager estão instalados para gerenciar
seus bancos de dados) pré-instalados.

MySQL Workbench é uma ferramenta visual unificada para


arquitetos, desenvolvedores e DBAs de bancos de dados. O
MySQL Workbench fornece modelagem de dados,
ISGEST_ENG_INFORMÁTICA 9
desenvolvimento SQL e ferramentas abrangentes de administração para configuração de
servidores, administração de usuários, backup e muito mais.

10.Código fonte

-- MySQL Script generated by MySQL Workbench


-- Sat Nov 30 00:29:36 2019
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;


SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_I
N_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_S
UBSTITUTION';

-- -----------------------------------------------------
-- Schema biblioteca
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema biblioteca
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `biblioteca` DEFAULT CHARACTER SET utf8
;
USE `biblioteca` ;

-- -----------------------------------------------------
-- Table `biblioteca`.`biblioteca`

1
ISGEST_ENG_INFORMÁTICA
0
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`biblioteca` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`código` VARCHAR(20) NOT NULL,
`nome` VARCHAR(40) NOT NULL,
`direção` VARCHAR(20) NOT NULL,
`site_web` VARCHAR(20) NOT NULL,
`correio_eletrônico` VARCHAR(30) NOT NULL,
`telefone` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC),
UNIQUE INDEX `código_UNIQUE` (`código` ASC),
UNIQUE INDEX `telefone_UNIQUE` (`telefone` ASC),
UNIQUE INDEX `correio_eletrônico_UNIQUE` (`correio_eletrônico` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`leitor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`leitor` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`código` VARCHAR(20) NOT NULL,
`nome` VARCHAR(40) NOT NULL,
`sobre_nome` VARCHAR(40) NOT NULL,
`exemplar_solicitado` VARCHAR(45) NOT NULL,
`data_solicitação` DATETIME NOT NULL,
`data_devolução` DATETIME NOT NULL,
`direção` VARCHAR(40) NOT NULL,
`telefone` INT UNSIGNED NOT NULL,

1
ISGEST_ENG_INFORMÁTICA
1
`correio` VARCHAR(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `idleitor_UNIQUE` (`id` ASC),
UNIQUE INDEX `código_UNIQUE` (`código` ASC),
UNIQUE INDEX `telefone_UNIQUE` (`telefone` ASC),
UNIQUE INDEX `correio_UNIQUE` (`correio` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`area`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`area` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(40) NOT NULL,
`local` VARCHAR(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`exemplar`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`exemplar` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`código` VARCHAR(20) NOT NULL,
`nome` VARCHAR(40) NOT NULL,
`tipo_exemplar` VARCHAR(45) NOT NULL,
`data_chegada` DATETIME NOT NULL,

1
ISGEST_ENG_INFORMÁTICA
2
`biblioteca_id` INT UNSIGNED NOT NULL,
`area_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`, `biblioteca_id`, `area_id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC),
UNIQUE INDEX `código_UNIQUE` (`código` ASC),
INDEX `fk_exemplar_biblioteca1_idx` (`biblioteca_id` ASC),
INDEX `fk_exemplar_area1_idx` (`area_id` ASC),
CONSTRAINT `fk_exemplar_biblioteca1`
FOREIGN KEY (`biblioteca_id`)
REFERENCES `biblioteca`.`biblioteca` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_exemplar_area1`
FOREIGN KEY (`area_id`)
REFERENCES `biblioteca`.`area` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`imobiliaria`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`imobiliaria` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(40) NOT NULL,
`categoria` VARCHAR(30) NOT NULL,
`direção` VARCHAR(20) NOT NULL,
`sitio_web` VARCHAR(30) NOT NULL,
`correio` VARCHAR(30) NOT NULL,

1
ISGEST_ENG_INFORMÁTICA
3
`telefone` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC),
UNIQUE INDEX `correio_UNIQUE` (`correio` ASC),
UNIQUE INDEX `telefone_UNIQUE` (`telefone` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`fornecedor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`fornecedor` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(40) NOT NULL,
`instituição` VARCHAR(30) NOT NULL,
`produto` VARCHAR(30) NOT NULL,
`direção` VARCHAR(20) NOT NULL,
`correio` VARCHAR(30) NOT NULL,
`telefone` INT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC),
UNIQUE INDEX `correio_UNIQUE` (`correio` ASC),
UNIQUE INDEX `telefone_UNIQUE` (`telefone` ASC))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`biblioteca_has_leitor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`biblioteca_has_leitor` (

1
ISGEST_ENG_INFORMÁTICA
4
`biblioteca_id` INT UNSIGNED NOT NULL,
`leitor_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`biblioteca_id`, `leitor_id`),
INDEX `fk_biblioteca_has_leitor_leitor1_idx` (`leitor_id` ASC),
INDEX `fk_biblioteca_has_leitor_biblioteca_idx` (`biblioteca_id` ASC),
CONSTRAINT `fk_biblioteca_has_leitor_biblioteca`
FOREIGN KEY (`biblioteca_id`)
REFERENCES `biblioteca`.`biblioteca` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_biblioteca_has_leitor_leitor1`
FOREIGN KEY (`leitor_id`)
REFERENCES `biblioteca`.`leitor` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`biblioteca_has_area`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`biblioteca_has_area` (
`biblioteca_id` INT UNSIGNED NOT NULL,
`area_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`biblioteca_id`, `area_id`),
INDEX `fk_biblioteca_has_area_area1_idx` (`area_id` ASC),
INDEX `fk_biblioteca_has_area_biblioteca1_idx` (`biblioteca_id` ASC),
CONSTRAINT `fk_biblioteca_has_area_biblioteca1`
FOREIGN KEY (`biblioteca_id`)
REFERENCES `biblioteca`.`biblioteca` (`id`)

1
ISGEST_ENG_INFORMÁTICA
5
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_biblioteca_has_area_area1`
FOREIGN KEY (`area_id`)
REFERENCES `biblioteca`.`area` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `biblioteca`.`biblioteca_has_fornecedor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`biblioteca_has_fornecedor` (
`biblioteca_id` INT UNSIGNED NOT NULL,
`fornecedor_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`biblioteca_id`, `fornecedor_id`),
INDEX `fk_biblioteca_has_fornecedor_fornecedor1_idx` (`fornecedor_id` ASC),
INDEX `fk_biblioteca_has_fornecedor_biblioteca1_idx` (`biblioteca_id` ASC),
CONSTRAINT `fk_biblioteca_has_fornecedor_biblioteca1`
FOREIGN KEY (`biblioteca_id`)
REFERENCES `biblioteca`.`biblioteca` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_biblioteca_has_fornecedor_fornecedor1`
FOREIGN KEY (`fornecedor_id`)
REFERENCES `biblioteca`.`fornecedor` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

1
ISGEST_ENG_INFORMÁTICA
6
-- -----------------------------------------------------
-- Table `biblioteca`.`fornecedor_has_imobiliaria`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `biblioteca`.`fornecedor_has_imobiliaria` (
`fornecedor_id` INT UNSIGNED NOT NULL,
`imobiliaria_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`fornecedor_id`, `imobiliaria_id`),
INDEX `fk_fornecedor_has_imobiliaria_imobiliaria1_idx` (`imobiliaria_id` ASC),
INDEX `fk_fornecedor_has_imobiliaria_fornecedor1_idx` (`fornecedor_id` ASC),
CONSTRAINT `fk_fornecedor_has_imobiliaria_fornecedor1`
FOREIGN KEY (`fornecedor_id`)
REFERENCES `biblioteca`.`fornecedor` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_fornecedor_has_imobiliaria_imobiliaria1`
FOREIGN KEY (`imobiliaria_id`)
REFERENCES `biblioteca`.`imobiliaria` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

1
ISGEST_ENG_INFORMÁTICA
7
11.Desenho de interfaces gráficas da BD Mysql

Figura 2Interface Gráfica

Esta figura mostra o banco de dados e as tabelas que elas contem, com também
podemos ver as entidades e os seus atributos.
Facilitar nas buscas de dados na tabela e armazenamento dos ficheiros e na
organização do mesmo.

12. Consultas Mysql

Consultas SQL quase sempre começam com o comando SELECT. SELECT é


usado em consultas para especificar quais colunas de uma tabela devem ser retornadas
no conjunto de resultados ou result-set. As consultas também quase sempre
incluem FROM, que é usado para especificar qual tabela o comando consultará.
WHERE é usado em consultas para filtrar registros que atendem a uma condição
especificada, e todas as linhas que não atendem a essa condição são eliminadas do
resultado.

1
ISGEST_ENG_INFORMÁTICA
8
Geralmente, as consultas SQL seguem essa sintaxe:
SELECT coluna_a_selecionar FROM tabela_a_selecionar WHERE
certas_condições_a_aplicar;

Como por exemplo:


Em vez de nomear uma coluna específica ou um conjunto de colunas, você pode
seguir o operador SELECT com um asterisco (*) que serve como um curinga
representando todas as colunas em uma tabela. O seguinte comando retorna todas as
colunas da tabela biblioteca:

select * from biblioteca;

Figura 3Tabela biblioteca

Neste exemplo selecionamos várias colunas da mesma tabela.


Você pode selecionar várias colunas da mesma tabela, separando seus nomes
com uma vírgula, desta forma:
select nome, correio_eletrônico from biblioteca;

Figura 4Campo nome e correio da tabela biblioteca

Esta tabela buscamos apenas o campo nome e correio_letrônico


WHERE é usado em consultas para filtrar registros que atendem a uma condição
especificada, e todas as linhas que não atendem a essa condição são eliminadas do
resultado.
Uma cláusula WHERE geralmente segue esta sintaxe:
. . . WHERE nome_da_coluna operador_de_comparação valor

select site_web from biblioteca where nome = 'sistemas de banco de dados.

1
ISGEST_ENG_INFORMÁTICA
9
Figura 5Campo linha coluna usando WHERE

Neste exemplo apenas especificamos a coluna tabela e linha.

13.Conclusão

Depois de termos feito o nosso trabalho e termos o conhecimento de que um


sistema de base de dados é um sistema de software composto pelos programas de
aplicação pelo S.G.B.D e pela B.D para um conjunto de aplicações para uma mesma
organização.

2
ISGEST_ENG_INFORMÁTICA
0
Referências Bibliográficas

Pt.m.wikipedia.org/wiki/Loja
www.ibm.com/support/knowledgecenter/pt-br/SSALK7_7.5.0/com.ibm.mbs.doc/
configur/c_db_relationships.html

2
ISGEST_ENG_INFORMÁTICA
1

Você também pode gostar