Você está na página 1de 26

Modelagem de Software

Modelo Físico
Aula 13 (Remota)
Prof. Rosemary Melo
Sumário

 Modelo Físico
Modelo Físico

OBJETIVO DEFINIÇÃO DE RESTRIÇÕES DO MODELO RELACIONAL


 Elaborar Modelo Físico de Dados
Restrições podem ser definidas:
 Migrando do Modelo Lógico ou
 No nível de coluna
 Criando as tabelas diretamente no SGBD

Restrições podem ser criadas:


Na elaboração do Modelo Físico precisamos  No momento em que a tabela for criada (CREATE
Definir as tabelas no SGBD escolhido TABLE)
Criar as Chaves  Depois que a tabela tiver sido criada (ALTER
Definir restrições TABLE)
Definir índices
... Tipos de restrição:
 NOT NULL
 UNIQUE
 PRIMARY KEY
 FOREIGN KEY
Modelo Físico

DEFINIÇÃO DE ÍNDICES Três tipos básicos de índices:


• Índices Ordenados: as chaves de busca são
O que é um Índice? armazenadas de forma ordenada.
 Mecanismos utilizados para acelerar o acesso
aos dados. • Índices Hash: as chaves de busca são
distribuídas uniformemente em “buckets” usando
Um arquivo de índice consiste de registros uma “função hash”.
(chamados de entradas de índice) na forma:
• Índices “Mapeados a Bit”: utiliza um único bit
Search Key (Chave de Busca) – Atributo ou conjunto para representar a ocorrência de determinado
de atributos usados para procurar registros em um valor
arquivo.

Ponteiro – Localização do registro no arquivo de


dados
Modelo Físico

DEFINIÇÃO DE ÍNDICES
Observação:
Quando criar um Índice?
Devem ser criados com moderação pois podem
 São criados automaticamente quando
afetar o desempenho de comandos DML (Insert,
definimos PRIMARY KEY ou UNIQUE KEY.
Update e Delete).
 Sempre criar para colunas Foreign Key.

 Coluna contiver um grande número de valores


nulos.

 Colunas forem usadas com freqüência em


uma cláusula WHERE .

 A tabela for grande e a expectativa for de que


a maioria das consultas recuperará poucas
linhas.
INTRODUÇÃO Á SQL

LINGUAGENS DE DEFINIÇÃO E MANIPULAÇÃO DE DADOS

 Os SGBDs possuem duas linguagens:


 DDL (Linguagem de Definição de Dados): usada para definir os esquemas, atributos, regras de
integridade, índices, etc.

DML (Linguagem de Manipulação de Dados): usada para ter acesso aos dados armazenados no BD.

 SQL é uma das linguagens comerciais mais utilizada que implementam DDL e DML no Modelo Relacional.
INTRODUÇÃO Á SQL

SQL – STRUCTURED QUERY LANGUAGE Possui diversas partes:

 Considerada linguagem de consulta padrão para  Linguagem de Definição de Dados (DDL): fornece
SGBDR’S. comandos para criação, alteração e remoção de
tabelas, criação de índices..
 Inicialmente chamada de SEQUEL.
 Linguagem de Manipulação de Dados (DML): inclui
 Desenvolvida pela IBM na década de 1970. uma linguagem de consulta baseada na álgebra
relacional e cálculo relacional de tupla. Compreende
 Aceita por quase todos os produtos (SQL server, comandos para inserir, consultar, remover e modificar
Oracle, Interbase, etc) tuplas num BD.

 Utiliza os termos tabela, linha e coluna no lugar de  Linguagem de Manipulação de Dados Embutido:
relação, tupla e atributo, respectivamente. designada para acessar o BD dentro de linguagem de
programação de uso geral como Cobol, C, Pascal, PL-1,
entre outros.
INTRODUÇÃO Á SQL

SQL – DDL DDL – CRIAÇÃO DE TABELA

 Inclui operações de definição de dados:  CREATE TABLE: especifica uma nova relação, dando o
 Criação de tabelas seu nome e especificando os seus atributos (cada um
Alteração de tabelas com seu nome, tipo de dado e algumas restrições).
Eliminação de tabelas

 Os comandos para definições de dados são: Sintaxe:


 CREATE TABLE: criar uma tabela. CREATE TABLE tabela_base (colunas tabela-base)
 ALTER TABLE: altera a definição (esquema) de
uma tabela.
 DROP TABLE: elimina uma tabela.
INTRODUÇÃO Á SQL

DDL – CRIAÇÃO DE TABELA UNIQUE: indica que o atributo tem valor único na
tabela.
 As definições das colunas têm o seguinte formato:
coluna tipo_de_dado [NOT NULL [UNIQUE]] Qualquer tentativa de se introduzir uma linha
na tabela contendo um valor igual ao do atributo
Onde: será respeitado.
coluna: nome do atributo que está sendo definido
tipo_de_dado: domínio do atributo  Usamos o qualificador UNIQUE para indicar os
atributos que fazem parte de chave primária.
Uma outra forma de fazê-lo seria usar o
NOT NULL: expressa que o atributo não pode receber qualificador primary key.
valores nulos.
INTRODUÇÃO Á SQL

EXEMPLO DE CRIAÇÃO DE TABELA: Seja o seguinte BD de Peças e Fornecedores

CREATE TABLE Fornecedor (CodForn int NOT NULL, Nome char(20), PRIMARY KEY (CodForn))

CREATE TABLE Peça (CodPeca int NOT NULL, Nome char(10), Cor char(10), Peso decimal(3), UNIQUE(CodPeca))

CREATE TABLE Malote (CodigoF int NOT NULL REFERENCES Fornecedor, CodigoP int NOT NULL REFERENCES Peca, Qtd
decimal(5), PRIMARY KEY (CodigoF, CodigoP))
INTRODUÇÃO Á SQL

DDL – DEFINIÇÃO DE TIPO DE DADOS

Tipos de Dados
A SQL ANSI suporta os seguintes tipos de dados: Não ANSI
 character  varchar
 numeric date
 decimal time
 integer
 smallint
 float
 real
 double precision
INTRODUÇÃO Á SQL

DDL – CRIAÇÃO DE CHAVE ESTRANGEIRA Exemplo 2:

 Se quisermos criar chaves estrangeiras para que CREATE TABLE Malote


a integridade referencial seja validada, usa-se a (codigof int NOT NULL REFERENCES Fornecedor,
cláusula FOREIGN KEY. codigop int NOT NULL REFERENCES Peca, quantidade
decimal(5), PRIMARY KEY (codigof, codigop))
Exemplo 1:
Pode-se abreviar desta maneira se a chave estrangeira
CREATE TABLE Malote for composta de um único atributo.
(codigof int NOT NULL, codigop int NOT NULL,
quantidade decimal(5), PRIMARY KEY (codigof,
codigop), FOREIGN KEY (codigof) REFERENCES
Fornecedor, FOREIGN KEY (codigop) REFERENCES
Peca)
INTRODUÇÃO Á SQL

DDL – ALTERAÇÃO DE TABELA


Exemplo :
 ALTER TABLE: permite que se adicione novos atributos ALTER TABLE Peca
a uma determinada tabela. Os novos atributos terão ADD Espessura int
valores nulos em todas as linhas.
 Ao incluir uma coluna deve-se especificar o ALTER TABLE Peca
tipo de dado. DROP Cidade

Sintaxe: ALTER TABLE Peca


ALTER TABLE tabela_base MODIFY Espessura float
ADD atributo domínio
ou
ALTER TABLE tabela_base
DROP atributo
:
:
INTRODUÇÃO Á SQL

DDL – ALTERAÇÃO DE TABELA

 Pode-se usar ALTER TABLE para definir chaves primárias  Quando uma chave primária ou estrangeira é eliminada
e estrangeiras. com ALTER TABLE, as colunas da chave e seus valores não
Exemplo: são eliminados, mas sim a restrição.
ALTER TABLE Malote
ADD PRIMARY Key (CodigoF)

ALTER TABLE Malote


ADD FOREIGN KEY (CodigoF) REFERENCES
Fornecedor

ALTER TABLE Malote


DROP PRIMARY KEY

ALTER TABLE Malote


DROP FOREIGN KEY (CodigoF)
INTRODUÇÃO Á SQL

DDL – REMOÇÃO DE TABELA


Exemplo:
DROP TABLE Malote
 DROP TABLE: exclui uma tabela-base do BD.
Remove tanto os dados quanto a definição da DROP TABLE Peca
tabela.
 Não permite apagar a tabela se esta estiver DROP TABLE Fornecedor
sendo referenciada por outra tabela
(foreing key)

Sintaxe:
DROP TABLE tabela_base
INTRODUÇÃO Á SQL

SQL – DML
 Permite a realização de operações de restrição,
 Após a definição do banco de dados inicia-se a projeção, junção, através das instruções SQL.
manipulação dos dados através das seguintes
operações: Exemplo:
 Consulta dados de tabelas Restrição
 Insere dados em tabela Select Fcod, Pcod, Qtd
 Altera dados em tabela From prod_fornec
 Exclui dados em tabela
Where Qtd<150
 As operações de manipulação são:
 SELECT: consulta dados em tabela. Projeção
 INSERT: insere dados em tabela. Select Fcod, Cidade
 UPDATE: altera dados em tabela. From Fornecedor
 DELETE: exclui dados em tabela.
INTRODUÇÃO Á SQL

SQL – DML Outros exemplos de manipulação de dados


Select * from fornecedor
Exemplo:
Insert into fornecedor
Junção (Fcod, Fnome, Status, cidade)
Values
Select P.Fcod, Fnome, Status, Cidade, Pcod, Qtd (1, “bompreço”,2,”Salvador”)
From Fornecedor F, Prod_fornec P
Where F.Fcof = P.Fcof Insert into temp (Pcod, peso)
Select Pcod, peso
From produto
Where cor=“vermelho”
INTRODUÇÃO Á SQL

SQL – DML

Outros exemplos de manipulação de dados

Delete from prod_fornec where Pcod=‘P2’

Update fornecedor
Set status = 2 * status, cidade = “Roma”
Where cidade=“Paris”
INTRODUÇÃO Á SQL

Sintaxe SQL – Insert


Ex1.:
INSERT into fornecedor
 Utilizado para inserir dados em uma tabela (Fcod, Fnome, Status, cidade)
 Não é obrigatório colocar todos os campos. Values
(1, ‘bompreço’,2,’Salvador’)
 A ordem dos campos não precisa ser a mesma
ordem da tabela. Ex2:
INSERT into cliente
Quando se deseja incluir valores para todos os (cliente, nome, telefone)
campos, deve-se especificar a lista de campos. values (1001,'João','445-0988')
Neste caso é assumido a ordem dos campos da
tabela INSERT into cliente
(nome, cliente, telefone)
INSERT INTO nome_da_tabela values ('Carlos',1005,null)
(campo1, ..., campon)
VALUES INSERT into cliente
(valor1,...,valorn) values (1006,'Viu só?','999-0000')
INTRODUÇÃO Á SQL

Sintaxe SQL – Update


Exemplos:
update fornecedor
Utilizado para alterar os dados já cadastrados nas
set status = 2 * status, cidade = “Roma”
tabelas
where cidade=“Paris”
A condição é opcional, mas quando não
especificada indica uma alteração em todos os
registros da tabela!
UPDATE cliente
SET telefone = “111-0000”
UPDATE nome_da_tabela
WHERE cliente = 1004
SET nome_do_campo1 = novo_valor1, ...,
nome_do_campon=novo_valorn
[WHERE condição]
INTRODUÇÃO Á SQL

Sintaxe SQL – Delete


Exemplos:
DELETE cliente
Utilizado para excluir registros já cadastrados nas
WHERE matr = 1006
tabelas.
A condição é opcional, mas quando não
especificada indica uma exclusão de todos os
DELETE cliente
registros da tabela!

DELETE FROM nome_da_tabela


[WHERE condição]

Ex.:
Delete from prod_fornec
where Pcod=“P2”
INTRODUÇÃO Á SQL

Sintaxe SQL – Select


Exemplos:
SELECT nome, telefone
Utilizado para recuperar dados cadastrados no BD FROM cliente
Pode utilizar critérios para a recuperação
SELECT * FROM cliente
SELECT lista_de_campos
FROM lista_de _tabelas SELECT * FROM cliente
WHERE condições WHERE matr = 1500

Ex.:
Select * from fornecedor
SQL - Exercícios

• Construir os comandos de inclusão para cada uma


das tabelas ao lado:

• Tabela Aluno
Mat:1 Nome: Maria Telefone: 2222-3344

• Tabela Professor
nome: Ana Telefone: 555-6677 Salario:1000

• Tabela Disciplina
Nome:Banco1 CargaHor: 60

• Tabela Turma
MatrProf: 1 semestre: 2 ano: 2012
CodDisc: 1

• Tabela Aluno_Turma
CodTurma: 1 Matricula: 1 Media: 8
Faltas: 5
SQL - Exercícios

Construir os comandos de alteração para cada


uma das tabelas ao lado. Considerar alteração de
um único registro por vez.

Tabela Aluno
Alterar o telefone de um aluno
Tabela Professor
Alterar o salario do professor com
matrícula 1 para 10000
Tabela Disciplina
Altarar o nome e a carga horaria de uma
disciplina
Tabela Turma
Alterar o ano da turma
Tabela AlunoTurma
Alterar a media e as faltas de um aluno
SQL - Exercícios

Construir os comandos de exclusão para cada


uma das tabelas criadas no exercício anterior.
Considerar alteração de um único registro por
vez.
Tabela Aluno
Excluir um aluno
Tabela Professor
Excluir um professor
Tabela Disciplina
Excluir uma disciplina
Tabela Turma
Excluir uma turma
Tabela AlunoTurma
Excluir um aluno da turma

Delete Aluno_turma where codTurma=1


and Matricula=1
SQL - Exercícios

• Considere o banco Acadêmico do exercício


ao lado
• Criar as seguintes sentenças:
• Consultar todos os alunos
• Consultar nome e telefone de
todos os alunos
• Consultar nome e salário de todos
os professores
• Consultar carga horária de uma
disciplina qualquer (informando o
codigo da disciplina)

Você também pode gostar