modelo fÍsico profa. rosemary...

42
Modelagem de Dados MODELAGEM DE DADOS MODELO FÍSICO Profa. Rosemary Melo

Upload: vandat

Post on 28-Jan-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Modelagem de Dados

MODELAGEM DE DADOS

MODELO FÍSICO

Profa. Rosemary Melo

Modelagem de Dados

2

Objetivo

Elaborar Modelos Físicos de Dados

Migrando do Modelo Lógico

ou

Criando as tabelas diretamente no SGBD

2

MODELO FÍSICO

Modelagem de Dados

3

Na elaboração do Modelo Físico precisamosDefinir as tabelas no SGBD escolhidoCriar as ChavesDefinir restriçõesDefinir índices...

3

MODELO FÍSICO

Modelagem de Dados

MODELO FÍSICO

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

Restrições podem ser definidas: No nível de coluna No nível de tabela (exceto NOT NULL)

Restrições podem ser criadas: No momento em que a tabela for criada (CREATE TABLE) Depois que a tabela tiver sido criada (ALTER TABLE)

Tipos de restrição: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK

Modelagem de Dados

MODELO FÍSICO

DEFINIÇÃO DE ÍNDICES

O que é um Índice?Mecanismos utilizados para acelerar o acesso aos dados.

Um arquivo de índice consiste de registros (chamados de entradas deíndice) na forma:

Search Key (Chave de Busca) – Atributo ou conjunto de atributos usadospara procurar registros em um arquivo.Ponteiro – Localização do registro no arquivo de dados

Três tipos básicos de índices:•Índices Ordenados: as chaves de busca são armazenadas de formaordenada.•Índices Hash: as chaves de busca são distribuídas uniformemente em“buckets” usando uma “função hash”.•Índices “Mapeados a Bit”: utiliza um único bit para representar aocorrência de determinado valor

Modelagem de Dados

MODELO FÍSICO

DEFINIÇÃO DE ÍNDICES

Três tipos básicos de índices: Índices Ordenados: as chaves de busca são armazenadas de formaordenada. Índices Hash: as chaves de busca são distribuídas uniformemente em“buckets” usando uma “função hash”. Índices “Mapeados a Bit”: utiliza um único bit para representar aocorrência de determinado valor.

Modelagem de Dados

MODELO FÍSICO

DEFINIÇÃO DE ÍNDICES

Quando criar um Índice? São criados automaticamente quando definimos PRIMARY KEY ouUNIQUE KEY. 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 consultasrecuperará poucas linhas.

Observação:Devem ser criados com moderação pois podem afetar o desempenhode comandos DML (Insert, Update e Delete).

Modelagem de Dados

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 paradefinir os esquemas, atributos, regras de integridade,índices, etc.

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

Exemplo de linguagem de comercial que implementam DDL eDML no Modelo Relacional:QUELQBESQL...

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – STRUCTURED QUERY LANGUAGE

Considerada linguagem de consulta padrão para SGBDR’S.

Inicialmente chamada de SEQUEL.

Desenvolvida pela IBM na década de 1970.

Aceita por quase todos os produtos (SQL server, Oracle,Interbase, etc)

Utiliza os termos tabela, linha e coluna no lugar de relação,tupla e atributo, respectivamente.

.

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – STRUTURED QUERY LANGUAGE

Possui diversas partes:

Linguagem de Definição de Dados (DDL): fornece comandospara definições de esquemas de relação, criação/remoção detabelas, criação de índices e modificação de esquemas.

Linguagem de Manipulação de Dados (DML): inclui umalinguagem de consulta baseada na álgebra relacional e cálculorelacional de tupla. Compreende comandos para inserir,consultar, remover e modificar tuplas num BD.

Linguagem de Manipulação de Dados Embutido: designadapara acessar o BD dentro de linguagem de programação de usogeral como Cobol, C, Pascal, PL-1, entre outros.

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – DDL

Inclui operações de definição de dados: criação de tabelasAlteração de tabelasEliminação de tabelas

Os comandos para definições de dados são: CREATE TABLE: criar uma tabela. ALTER TABLE: altera a definição (esquema) de umatabela. DROP TABLE: elimina uma tabela.

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – CRIAÇÃO DE TABELA

CREATE TABLE: especifica uma nova relação, dando o seunome e especificando os seus atributos (cada um com seunome, tipo de dado e algumas restrições).

Sintaxe:CREATE TABLE tabela_base (colunas tabela-base)

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – CRIAÇÃO DE TABELA

As definições das colunas têm o seguinte formato:coluna tipo_de_dados [NOT NULL [UNIQUE]]

Onde:coluna: nome do atributo que está sendo definidotipo_de_dado: domínio do atributoNOT NULL: expressa que o atributo não pode recebervalores nulos.UNIQUE: indica que o atributo tem valor único natabela. Qualquer tentativa de se introduzir uma linha natabela contendo um valor igual ao do atributo serárespeitado.

Usamos o qualificador UNIQUE para indicar os atributos quefazem parte de chave primária. Uma outra forma de fazê-loseria usar o qualificador primary key.

Modelagem de Dados

INTRODUÇÃO À SQL

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

CREATE TABLE Fornecedor (CodForm char(5) NOT NULL,Nome char(20), Situação decimal(3), Cidade char(15),PRIMARY KEY (CodForn))

CREATE TABLE Peça (CodPeca char(6) NOT NULL, Nomechar(10), Cor char(10), Peso decimal(3), Cidade char(15),UNIQUE(CodPeca))

CREATE TABLE Malote (CodigoF char(5) NOT NULL, CodigoPchar(6) NOT NULL, Qtd decimal(5), PRIMARY KEY (CodigoF,CodigoP))

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – DEFINIÇÃO DE TIPO DE DADOS

Tipos de DadosA SQL ANSI suporta os seguintes tipos de dados: character numeric decimal integer smallint float real double precision

Não ANSI varchardatetime

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – CRIAÇÃO DE CHAVE ESTRANGEIRA

Se quisermos criar chaves estrangeiras para que aintegridade referencial seja validada, usa-se a cláusulaFOREIGN KEY.

Exemplo:CREATE TABLE Malote

(codigof char(5) NOT NULL, codigo p char(6) NOT NULL,quantidade decimal(5), PRIMARY KEY (codigof, codigop))FOREIGN KEY (codigof) REFEENCES FornecedorFOREIGN KEY (codigop) REFEENCES Peca

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – CRIAÇÃO DE CHAVE ESTRANGEIRA

Exemplo:CREATE TABLE Malote

(codigof char(5) NOT NULL REFERENCES Fornecedor,codigop char(6) NOT NULL REFERENCES Peca,quantidade decimal(5), PRIMARY KEY (codigof, codigop))

Pode-se abreviar desta maneira se a chave estrangeira forcomposta de um único atributo.

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – ALTERAÇÃO DE TABELA

ALTER TABLE: permite que se adicione novos atributos a umadeterminada tabela. Os novos atributos terão valores nulos emtodas as linhas. Ao incluir uma coluna deve-se especificar o tipo dedado.

Sintaxe:ALTER TABLE tabela_baseADD atributo domínio

ouALTER TABLE tabela_baseDROP atributo domínio

::

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – ALTERAÇÃO DE TABELA

Exemplo:ALTER TABLE PecaADD Espessura int

ALTER TABLE PecaDROP Cidade

ALTER TABLE PecaMODIFY Espessura float

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – ALTERAÇÃO DE TABELA

Pode-se usar ALTER TABLE para definir chaves primárias eestrangeiras.

Exemplo:ALTER TABLE MaloteADD PRIMARY Key (CodigoF)

ALTER TABLE MaloteADD FOREIGN KEY (CodigoF) REFERENCES Fornecedor

ALTER TABLE MaloteDROP PRIMARY KEY

ALTER TABLE MaloteDROP FOREIGN KEY (CodigoF)

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – ALTERAÇÃO DE TABELA

Quando uma chave primária ou estrangeira é eliminada comALTER TABLE, as colunas da chave e seus valores não sãoeliminados, mas sim a restrição.

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – REMOÇÃO DE TABELA

DROP TABLE: exclui uma tabela-base do BD. Remove tanto osdados quanto a definição da tabela. Não permite apagar a tabela se esta estiver sendoreferenciada por outra tabela (foreing key)

Sintaxe:DROP TABLE tabela_base

Modelagem de Dados

INTRODUÇÃO À SQL

DDL – REMOÇÃO DE TABELA

Exemplo:DROP TABLE Malote

DROP TABLE Peca

DROP TABLE Fornecedor

Modelagem de Dados

Exercicios

24

• Considere uma loja virtual. A loja trabalha com diversos produtos.Cada produto contem um codigo, nome, descricao, preco,fornecedor e quantidade disponivel em estoque. Os produtostambem são categorizado com codigo e categoria. Ex. produtos deinformática, eletrodomesticos, livros, etc. Muitos fornecedorespodem fornecer o mesmo produto. Assim, a especificação de umproduto depende do fornecedor que o produz.

• Os clientes compram via internet. Por isso precisam se cadastrar(cpf, nome, email, telefone e endereco). Eles colocam produtos emum carrinho e depois concluem ou desistem da compra. Quandouma compra é efetivada é gerada uma nota fiscal, calculado o valortotal da compra e guardada a data da compra. A compra é pagasempre em cartao de credito. Deve ser guardado o número docartão e o código da autorização obtida da operadora de cartão.

• Para o cenário acima, construa: Modelo conceitual, Modelo lógicoe Modelo Físico.

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – DML

Após a definição do banco de dados inicia-se a manipulaçãodos dados através das seguintes operações: Consulta dados de tabelas Insere dados em tabela Altera dados em tabela Exclui dados em tabela

As operações de manipulação são: SELECT: consulta dados em tabela. INSERT: insere dados em tabela. UPDATE: altera dados em tabela. DELETE: exclui dados em tabela.

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – DML

Permite a realização de operações de restrição, projeção,junção, através das instruções SQL.

Exemplo:

Restrição

Select Fcod, Pcod, Qtd

From prod_fornec

Where Qtd<150

Projeção

Select Fcod, Cidade

From Fornecedor

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – DML

Exemplo:

Junção

Select Fornecedor.Fcod, Fnome, Status, Cidade, Pcod, Qtd

From Fornecedor, Prod_fornec

Where Fornecedor.Fcof = Prod_forncec.Fcof

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – DML

Outros exemplos de manipulação de dadosSelect * from fornecedor

Insert into fornecedor(Fcod, Fnome, Status, cidade) Values(1, 'bompreço’,2,’Salvador’)

Insert into temp (Pcod, peso)Select Pcod, pesoFrom produtoWhere cor=cor(‘vermelho’)

Modelagem de Dados

INTRODUÇÃO À SQL

SQL – DML

Outros exemplos de manipulação de dados

Delete from prod_fornec where Pcod=‘P2’

Update fornecedorSet status = 2 * status, cidade = ‘Roma’Where cidade=‘Paris’

Modelagem de Dados

Sintaxe SQL - Insert

• Utilizado para inserir dados em uma tabela– Não é obrigatório colocar todos os campos– A ordem dos campos não precisa ser a mesma ordem da tabela– Quando se deseja incluir valores para todos os campos, pode-se

emitir a lista de campos. Neste caso é assumido a ordem dos campos da tabela

INSERT INTO nome_da_tabela(campo1, ..., campon)VALUES(valor1,...,valorn)

Ex.: jinto fornecedor(Fcod, Fnome, Status, cidade)Values(1, ‘bompreço’,2,’Salvador’)

No SQLServer

INSERT into cliente (cliente, nome, telefone)values (1001,'João','445-0988')

INSERT into cliente (nome, cliente, telefone)values ('Carlos',1005,null)

INSERT into clientevalues (1006,'Viu só?','999-0000')

Modelagem de Dados

Sintaxe SQL - Update

• Utilizado para alterar os dados já cadastrados nas tabelas

– A condição é opcional, mas quando não especificada indica uma alteração em todos os registros da tabela!

UPDATE nome_da_tabela

SET nome_do_campo1 = novo_valor1, ..., nome_do_campon=novo_valorn

[WHERE condição]

Ex.:

update fornecedor

set status = 2 * status, cidade = ‘Roma’

where cidade=‘Paris’

No SQLServer

UPDATE clienteSET telefone = ‘000-1111’

UPDATE clienteSET telefone = '111-0000'WHERE cliente = 1004

Modelagem de Dados

Sintaxe SQL - Delete

• Utilizado para excluir registros já cadastrados nas tabelas.

– A condição é opcional, mas quando não especificada indica uma exclusão de todos os registros da tabela!

DELETE FROM nome_da_tabela

[WHERE condição]

Ex.:

Delete from prod_fornec

where Pcod=‘P2’

No SQLServer

DELETE clienteWHERE matr = 1006

DELETE cliente

Modelagem de Dados

Sintaxe SQL - Select

• Utilizado para recuperar dados cadastrados no BD

– Pode utilizar critérios para a recuperação

SELECT lista_de_campos

FROM lista_de _tabelas

WHERE condições

Ex.:

Select * from fornecedor

No SQLServer

SELECT nome, telefone FROM cliente

SELECT * FROM cliente

SELECT * FROM cliente WHERE matr = 1500

Modelagem de Dados

SQL - Exercícios

• Criar o seguinte modelo no SGBD adotado

Campo Tipo Chave Req

Matricula Inteiro PK Sim

Nome String(40) Sim

Telefone String(11) Sim

DataEntrada Date Não

Aluno

Campo Tipo Chave Req

Registro Autoincremento PK Sim

Nome String(40) Sim

Telefone String(11) Sim

Salario Valor Sim

Professor

Campo Tipo Chave Req

CodDisc Autoincremento PK Sim

Nome String(40) Sim

CargaHor Int Sim

Disciplina

Turma

Campo Tipo Chave Req

CodTurma Autoincremento PK Sim

Registro Int FK Sim

Semestre Int Sim

Ano int Sim

CodDisc Int FK Sim

Campo Tipo Chave Req

CodTurma Int PK, FK Sim

Matricula Int PK,FK Sim

Media Valor Não

Faltas Int Nao

Aluno_turma

Modelagem de Dados

SQL - Exercícios

35

• Construir os comandos de inclusão para cada uma das tabelas criadas no exercício anterior:– Tabela Aluno

• Mat:1 Nome: Maria Telefone: 2222-3344– Tabela Professor

• Registro 1 nome: Ana Telefone: 555-6677Salario:1000

– Tabela Disciplina• Codigo 1 Nome:Banco1 CargaHor: 60

– Tabela Turma• CodTurma 1 Registro 1 Semestre 2 Ano 2012 CodDisc

1 – Tabela AlunoTurma

• CodTurma 1 Matricula 1 Media 8 Faltas 5

Modelagem de Dados

SQL - Exercícios

36

• Construir os comandos de alteração para cada uma das tabelas criadas no exercício anterior. Considerar alteração de um único registro por vez.

– Tabela Aluno

• Alterar o telefone de um aluno

– Tabela Professor

• Alterar o salario de todo os professores 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

Modelagem de Dados

SQL - Exercício

37

• 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 AlunoTurma where codTurma=1 and Mat=1

Modelagem de Dados

Para refletir

• Considere as tabelas abaixo

codTurma Matricula Media Faltas

1 1 10 0

1 2 7 6

1 3 5 2

2 1 9 0

2 3 8 2

2 4 7 0

O que aconteceria se os seguintes comandos fossem executados:

Insert into TurmaAluno (1,5,3,8)

Update turmaAluno set faltas=9

Delete turmaAluno where codTurma=2 and Matricula=3

Update turmaAluno set Media=10 where codTurma=2 andMatricula=5

Modelagem de Dados

SQL – Exercício

• Considere o banco Acadêmico do exercício anterior

– 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)

Modelagem de Dados

SQL – Exercício

Lembrete:

- Se for usar o SGBD MySQL e quiser executar um arquivo comtodos os scripts SQL, você deve primeiro salvar o script nobloco de notas com extensão SQL, no mesmo diretório domysql: \mysql\bin\nomedoarquivo.sql. Em sequida você deveexecutar o mysql, depois executar no prompt do mysql osseguintes comandos: mysql> source nome do arquivo.sql.

- Para executar o mysql, primeiro você deve executar o arquivomysqld para em seguida executar o arquivo mysql, ambosestão dentro do diretório bin do mysql.

Modelagem de Dados

SQL – Exercício

Comandos no MySql:

- use NomedoBanco: seta o banco de dados que irá usar.

- show Database: lista todos os banco de dados do SGBD.

- show tables: lista as tabelas do banco em uso.

- show columns from nometabela: mostra todas as colunas criadas para a tabela. (4.6.8.1. Recureparando Informações sobre Banco de Dados, Tabelas, Colunas e Índices – Manual MySql).

Modelagem de Dados

SQL – Exercício

Comandos SQL no MySql:

- Caso queira renomear uma coluna de uma tabela para outro nome especificando seu tipo.

Ex.: ALTER TABLE t1 CHANGE a b INTEGER;

- Caso queira mudar um tipo de coluna, mas não o nome. Usando o comando ALTER:

Ex1.:ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

Ex2.: ALTER TABLE t1 MODIFY b BIGINT NOT NULL;