Você está na página 1de 38

Projeto Lógico:

Transformação entre Modelos


Parte I

Banco de Dados

Prof. Diego Rosa


Projeto Lógico
• Após a realização da modelagem conceitual, a próxima
etapa é o projeto lógico

• Consiste transformar o modelo conceitual em um banco


de dados em um SGBD especí co

• Existem diferentes tipos de SGBD: relacional, orientado a


objetos, NoSQL, etc.

• Nesta disciplina trabalharemos com MySQL, que é um


SGBD relacional
fi
Banco de Dados Relacional

• Informações são armazenadas em tabelas (relações)

• Entidades são mapeadas para tabelas

• Atributos são as colunas das tabelas

• Cada registro inserido é uma linha em uma tabela

• Relacionamentos são representados por um sistema de


chaves primárias e chaves estrangeiras
Banco de Dados Relacional
Banco de Dados Relacional
• Existem vários SGBDs relacionais no mercado:

• MySQL: sistema mais utilizado na Web

• PostgreSQL: avançado e de código aberto

• SQL Server: sistema avançado da Microsoft

• Oracle: utilizado por grandes corporações

• SQLite: sistema embutido/sem-servidor utilizado no


Android
MySQL
• MySQL, assim como a maioria dos SGBDs, é um sistema
cliente/servidor

• O servidor é um serviço que executa em segundo plano

• O cliente pode ser uma ferramenta para gerenciamento


do banco de dados, como MySQL Workbench

• Instalação do MySQL requer a instalação do servidor e


do Workbench
MySQL
MySQL (servidor)
MySQL (servidor)
MySQL (servidor)
MySQL (servidor)
MySQL (servidor)
MySQL (servidor)
MySQL (servidor)
MySQL Workbench
MySQL Workbench
MySQL Workbench
MySQL Workbench
MySQL Workbench
MySQL Workbench
Executa os comandos selecionados
Projeto Lógico:
Transformação entre Modelos
• Regras para transformar um diagrama ER
(modelo conceitual) em um banco de dados
relacional (modelo lógico)
• Cada componente possui uma tradução:
– Entidades e atributos
– Relacionamentos
– Generalização/Especialização

Linguagem SQL
• O modelo lógico nos bancos de dados
relacionais é expresso através da linguagem SQL
• Linguagem de pesquisa declarativa
• Não diferencia minúsculas e maiúsculas, mas
tradicionalmente usa-se maiúsculas para as
palavras reservadas
• Padrão internacional (SQL:2003), porém nem
sempre é seguido pelos fabricantes

Nomes das Estruturas


no Banco de Dados Relacional
• Cuidados a serem tomados na escolha dos
nomes de tabelas, colunas, chaves, etc.:
– Substituir espaços por sublinhado (underline)
– Devem conter apenas letras minúsculas, números e
sublinhado
– Remover acentos e cedilha
– Evitar palavras reservadas da SQL
• Garante correto funcionamento do banco e
compatibilidade do código SQL com SGBDs

Nomes das Estruturas


no Banco de Dados Relacional

• Endereço —> endereco


• Artista Solo —> artista_solo
• Data de nascimento —> data_de_nascimento
• Forma de pagamento —> forma_de_pagamento
• Número de sequência —> numero_de_sequencia

Entidades e Atributos
• No banco de dados relacional, entidades e
atributos do diagrama ER são traduzidos para
tabelas e colunas respectivamente
• Nomes das tabelas e colunas diretamente
derivados dos nomes das entidades e atributos
• Nomes das tabelas normalmente são expressos
no singular

Chave Primária
• Toda tabela deve possuir um identificador único
ou chave primária
• É considerada uma boa prática a criação de uma
coluna específica (chave artificial) para atuar
como chave primária
• Tipicamente: nome ‘id’, tipo INTEGER, NOT NULL
• Normalmente omitida do diagrama ER, mas
aparece no banco relacional

Chave Primária
• O nome de uma pessoa é uma boa chave primária?
• RG (registro geral) é uma boa chave primária?
• RG pode se repetir em outros estados
• CPF é uma boa chave primária?
• Apesar de ser único para cidadãos brasileiros…
• … estrangeiros podem não ter CPF
• … crianças podem não ter CPF
• … CPF digitado errado não poderia ser alterado

Atributos
• Colunas devem ter um tipo especificado (muitas
vezes omitido no diagrama ER)
• Cada SGBD possui um conjunto diferente de
tipos, mas alguns são padronizados
• Também deve ser indicado se a coluna é
obrigatória (NOT NULL) ou não
• Chaves primárias (coluna id) são sempre do tipo
INTEGER e NOT NULL

Tipos de Dados
no Banco Relacional
• Números inteiros e valores booleanos
– Tipo: INTEGER
– Nem todos SGBDs possuem tipo BOOLEAN, assim
utilizamos INTEGER para verdadeiro (1) e falso (0)
• Números reais (com vírgula)
– Tipo: DECIMAL(M, N)
– M: total de dígitos
– N: casas depois da vírgula
– Exemplo: 999,99 ➔ M = 5, N = 2

Tipos de Dados
no Banco Relacional
• Textos
– Tipo VARCHAR(N): textos curtos (N = número máximo
de caracteres)
– Tipo TEXT: textos longos (exclusivo do MySQL)
• Datas
– Tipo DATE: datas simples (ano, mês e dia)
– Tipo DATETIME: data e hora
– Formato: 'YYYY-MM-DD HH:MM:SS’

Criando um Primeiro Banco de Dados

• No MySQL, um novo banco de dados ou schema


pode ser criado no SGBD através do comando
CREATE DATABASE

CREATE DATABASE filmes;


USE filmes;

Criando uma Tabela: CREATE TABLE

CREATE TABLE filme (


id INTEGER NOT NULL,
titulo VARCHAR(60),
ano_de_lancamento INTEGER,
duracao INTEGER, -- Tempo de duração em minutos
local_de_estreia VARCHAR(40),
data_de_estreia DATE,
orcamento DECIMAL (12, 2), -- Até 9.999.999.999,99
sinopse TEXT,
disponivel_nas_plataformas INTEGER, -- 0: falso, 1: verdade
PRIMARY KEY (id));

Criando uma Tabela: CREATE TABLE


• Passos para transformar entidade em tabela:
1. Remover acentos, cedilha e espaços em
branco dos nomes da entidade e atributos
2. Adicionar uma coluna ‘id INTEGER NOT
NULL’ na primeira posição da tabela
3. Criar uma coluna para cada atributo da
entidade escolhendo o tipo apropriado
4. Informar a chave primária (‘id’)

Inserindo Dados da Tabela: Comandos INSERT

• Dados podem ser inseridos em uma tabela


utilizando o comando INSERT
INSERT INTO filme VALUES (
1,
"De Volta para o Futuro",
1985,
116,
"Nova Iorque, EUA",
"1985-07-03",
19000000.00,
"Marty McFly, um estudante de ensino médio...",
1);

Inserindo Dados da Tabela: Comandos INSERT

• Dados inseridos em colunas INTEGER e DECIMAL


não precisam de aspas
• Dados inseridos em colunas VARCHAR, TEXT,
DATE e DATETIME precisam de aspas duplas
• Em números decimais deve ser usado o ponto e
não a vírgula para separar as casas decimais
• Acentos, cedilha e espaços em branco são
liberados em dados VARCHAR e TEXT

Lendo Dados da Tabela: Comando SELECT

• Dados podem ser lidos de uma tabela utilizando


o comando SELECT

SELECT * FROM filme;


Removendo Tabelas e Schemas

• Uma tabela pode ser removida através do


comando DROP TABLE:
DROP TABLE filme;

• Um banco de dados (schema) pode ser


removido através do comando DROP DATABASE:
DROP DATABASE filmes;

Bibliografia
• HEUSER, C. Projeto de Banco de Dados. 6a
edição. Porto Alegre: Bookman, 2008. Capítulo
5.

Você também pode gostar