banco de dados modelagem lógica e sql (ddl)

35
Banco de Dados Modelagem Lógica e SQL (DDL) por: Mário Sergio da Silva

Upload: mario-sergio

Post on 15-Apr-2017

1.689 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Banco de dados modelagem Lógica e SQL (DDL)

Banco de Dados Modelagem Lógica e SQL (DDL) por: Mário Sergio da Silva

Page 2: Banco de dados modelagem Lógica e SQL (DDL)

Banco de Dados Modelagem Lógica e SQL (DDL)

Prof. Mário Sergio da Silva [email protected] Lattes: http://lattes.cnpq.br/1161794053211014

Atualizado em Maio/2016

Este material é uma adaptação didática que utiliza ilustrações e textos retirados de uma seleção criteriosa de publicações disponíveis livremente na internet, juntamente com conteúdo inédito. (bibliografia disponível no final dos slides)

Page 3: Banco de dados modelagem Lógica e SQL (DDL)

Conteúdo O Modelo Lógico

Transformação do Modelo Conceitual em Lógico

Tipos de Dados, Restrições de Integridade, Chaves Primária e Estrangeira

Introdução ao SQL- (DDL, DML, DCL)

Instruções: CREATE, ALTER e DROP

Exercícios

Page 4: Banco de dados modelagem Lógica e SQL (DDL)

4 4 Prof. Mário Sergio

4

Mini-Mundo Conceitual

Projeto: “Ensino Voluntário na Ong”:

Para exemplificar a transformação entre os modelos utilizaremos o “problema simplificado de um sistema acadêmico”, conforme o mini-mundo descrito a seguir: Em uma Ong, professores podem se cadastrar como voluntários para ministrar aulas de reforço individual para alunos interessados:

o Cada professor tem uma especialidade (formação) em uma disciplina.

o São aceitos mais de um professor com a mesma formação

o Cada aluno recebe um número de matrícula ao se cadastrar na Ong, e

pode agendar aulas individuais com professores diferentes.

o No final de cada aula, o professor pode atribuir uma nota de 1 a 10

o Cada professor pode ensinar vários alunos (individualmente)

Page 5: Banco de dados modelagem Lógica e SQL (DDL)

5 5 Prof. Mário Sergio

5

Mini-Mundo Conceitual

Diagrama Conceitual: “Ensino Voluntário na Ong”

o Cada professor tem uma especialidade (formação) em uma disciplina.

o São aceitos mais de um professor com a mesma formação

o Cada aluno recebe um número de matrícula, ao se cadastrar na Ong, e pode agendar aulas individuais com professores diferentes.

o No final de cada aula, o professor atribui uma nota de 1 a 10

o Cada professor pode ensinar vários alunos individualmente

Obs: Ambos atributos identificam a entidade

unicamente, então escolhe-se apenas

um para ser o atributo chave (identificador)

Obs: cada Entidade precisa ter um atributo

identificador único Chave Artificial

Relacionamentos, também podem ter

atributo identificador

Page 6: Banco de dados modelagem Lógica e SQL (DDL)

6 6

O Modelo Lógico descreve mais detalhes, em relação ao Concitual, sobre como os dados devem ser armazenados (metadados). Nesta fase, as entidades e relacionamentos do modelo conceitual são transformadas em tabelas.

Descreve a estrutura dos atributos, que nesta fase passam a ser chamados de campos/colunas. Especificando tipo, tamanho, e restrições de integridade (de unicidade, obrigatoriedade, referencial) dos campos: Ex: codigo inteiro; descricao caractere(20) not null;

Ainda é possível ser Independente de SGBD *(discutível);

No final, o resultado de um projeto lógico é um esquema do banco de dados, parecido com o modelo conceitual, porém com mais detalhes de banco de dados, e não apenas conceitos.

Prof. Mário Sergio 6

O Modelo Lógico (Nível Intermediário)

Page 7: Banco de dados modelagem Lógica e SQL (DDL)

7 7

O modelo lógico apresenta um nível intermediário de abstração. O diagrama lógico apresenta os seguintes elementos: tabelas, colunas/campos, chaves primárias e estrangeiras.

Prof. Mário Sergio 7

Transformação do Modelo Conceitual em Lógico

Chave primaria Composta

Que tabela é essa ? (veremos)

Page 8: Banco de dados modelagem Lógica e SQL (DDL)

8 8 Prof. Mário Sergio

8

Transformação do Modelo Conceitual em Lógico Tabelas, Colunas e Chaves Primárias (PK - Primary Key)

Regras: Cada entidade do modelo conceitual é traduzida para uma tabela Cada atributo da entidade define uma coluna desta tabela Atributos identificadores da entidade correspondem a chave primária da tabela Os nomes de tabelas e colunas seguem as mesmas regras das variáveis nas linguagens de programação: apenas letras, números e _

Por que esse atributo aqui ? (veremos)

Page 9: Banco de dados modelagem Lógica e SQL (DDL)

9 9 Prof. Mário Sergio

9

Transformação do Modelo Conceitual em Lógico Relacionamentos e Chaves Estrangeiras (FK – Foreign Key)

A transformação dos relacionamentos do modelo conceitual, dependem da cardinalidade, conforme as seguintes regras: Cardinalidade 1:N - cada entidade será convertida em uma tabela. Na tabela cuja cardinalidade do relacionamento é N (o lado N), insere-se uma coluna para estabelecer a relação com a chave primaria da outra tabela, essa coluna será a chave estrangeira.

FK, que faz o relacionamento do professor com a disciplina. Para que o nome do novo atributo seja significativo, deve-se concatenar o nome da tabela + o nome chave primaria da tabela original para formar o nome da chave estrangeria

Page 10: Banco de dados modelagem Lógica e SQL (DDL)

10

Transformação do Modelo Conceitual em Lógico Tabelas de Relacionamentos e Chaves Estrangeiras (FK – Foreign Key)

Cardinalidade N:N - cada entidade será convertida em uma tabela como no 1:N. Sendo necessário também criar outra tabela para representar o relacionamento. Essa tabela terá os atributos do relacionamento. E também outros atributos, que serão as chaves estrangeiras cujo o papel é fazer a relação com as chaves primarias das tabelas que fazem parte do relacionamento.

A nova tabela deve ter um nome significativo, portanto o relacionamento de “ALUNO aprende com PROFESSOR” pode ser chamado de tabela AULA

Prof. Mário Sergio

Page 11: Banco de dados modelagem Lógica e SQL (DDL)

11

Transformação do Modelo Conceitual em Lógico Tabelas de Relacionamentos e Chaves Primárias compostas

Cardinalidade N:N - A chave primaria dessa nova tabela, será o conjunto de todas as chaves estrangeiras + atributos chaves do próprio relacionamento.

Dica: É uma decisão de projeto (que não fizemos aqui): criar chaves primárias artificiais (id´s incrementais) em substituição as chaves primárias compostas. Esta decisão diminuiria a complexidade durante a manipulação dos dados, mas por outro lado, aumentaria uma coluna, e consequentemente ocuparia mais espaço no bd.

Prof. Mário Sergio

Page 12: Banco de dados modelagem Lógica e SQL (DDL)

12 12 Prof. Mário Sergio

12

Armazena também os espaços: Ideal para valores de tamanho fixos Exemplo: char(10) Valor: ‘José ‘

Desconsidera os espaços: Ideal para valores de tamanhos variáveis Exemplo : Varchar(10) Valor: ‘José’

Armazena um valor numérico, mas é manipulado no formato aaaa-MM-dd hh:mm:ss Exemplo: '2016-05-15 17:13:10'

Valores: -32768 a +32767

Valores: -2147483648 a +2147483647

Armazena um valor numérico, mas é manipulado no formato aaaa-mm-dd Exemplo: '2016-05-15'

O Modelo Lógico Tipos de dados

DECIMAL(n,d) em alguns SGBD´s

Consultar tipos específicos do h2 db: http://www.h2database.com/html/datatypes.html

Page 13: Banco de dados modelagem Lógica e SQL (DDL)

13 13 13

O Modelo Lógico Restrições de Integridade

o Os valores de uma coluna definida com a restrição de Chave Primária, não

podem ser repetidos

o Os valores de uma coluna definida com a restrição de Chave Estrangeira, precisam existir antecipadamente nas chaves primárias das tabelas relacionadas.

o A coluna cpf, embora não tenha sido definida como chave primaria, deve ter um valor ÚNICO para cada aluno (chave candidata), por isso deve ser definida com a restrição ÚNICA

o Desejamos que as colunas cpf, nome, e area sejam obrigatórios, por isso devem ser definidos com a restrição NÃO NULO

Obs: Veremos mais restrições na criação do modelo físico em SQL Prof. Mário Sergio

Page 14: Banco de dados modelagem Lógica e SQL (DDL)

14 14

o É a parte final, de mais baixo nível, do projeto de banco de dados, define-se detalhes técnicos da implementação do banco de dados: infra estrutura física (hardware), Sistema Operacional, índices de busca etc.

o É fortemente dependente do SGBD que será utilizado,

nesta fase há a definição do SGDB a ser utilizado: Oracle, SQLServer, MySQL, Postgress, etc.

o A otimização de desempenho do banco de dados é trabalhada nesta fase do projeto.

o Utilização de scripts SQL (DDL, DCL), para definição dos metadados, incluindo diretivas de conexão e permissão de acesso de usuários. (nosso foco neste curso)

Prof. Mário Sergio 14

O Modelo Físico (Baixo Nível)

Page 15: Banco de dados modelagem Lógica e SQL (DDL)

15 15 Prof. Mário Sergio

15

SQL (Structured Query Language) é a linguagem padrão universal para manipular bancos de dados relacionais através dos SGBDs. Isso significa que todos os SGBDRs (Sistema de Gerenciamento de Banco de Dados Relacionais) oferecem uma interface para acessar o banco de dados utilizando a linguagem SQL, embora com algumas variações. Logo, saber o que é SQL e como utilizá-la é fundamental para qualquer desenvolvedor de softwares. A “Linguagem Estruturada de Consultas” (SQL, traduzida para o português) é utilizada para interagir com o SGBD e executar várias tarefas como inserir e alterar registros, criar objetos no banco de dados, gerenciar usuário, consultar informações, controlar transações, etc. Todas as operações realizadas no banco de dados podem ser solicitadas ao SGBD utilizando esta linguagem.

Page 16: Banco de dados modelagem Lógica e SQL (DDL)

16 16 Prof. Mário Sergio

16

A linguagem SQL é dividida em 3 principais agrupamentos: DDL - (Data Definition Language):Linguagem de Definição de Dados Instruções: CREATE, ALTER, DROP (OBS: veremos neste Slide)

DML (Data Manipulation Language): Linguagem de Manipulação de Dados Instruções: INSERT, UPDATE, DELETE, SELECT (veremos no slide: BancodeDados_SQL_DML)

DCL (Data Control Language): Linguagem de Controle de Dados Instruções: GRANT, REVOKE

Page 17: Banco de dados modelagem Lógica e SQL (DDL)

17 17 Prof. Mário Sergio

17

Gerando o código SQL do projeto: “Ensino de Reforço na Ong” Escolha do banco de dados: H2 Database (fácil utilização educacional) http://www.h2database.com/ Criando um novo Banco de Dados,

chamado curso: Equivalente a: CREATE DATABASE curso;

Escolha do SGBD

Page 18: Banco de dados modelagem Lógica e SQL (DDL)

18 18 Prof. Mário Sergio

18

Criando as tabelas

CREATE TABLE ALUNO ( matricula CHAR(8) PRIMARY KEY, cpf CHAR(14) UNIQUE NOT NULL, nome Varchar(200) NOT NULL, grau_instrucao Varchar(20), idade INT );

CREATE TABLE DISCIPLINA ( id IDENTITY, nome Varchar(50) NOT NULL, area Varchar(40) NOT NULL );

Restrição de valor NÃO NULO

Restrição de valor UNICO

Definição de chave primária (Dispensa o uso de UNIQUE)

Tipo especial (alguns SGBD´s) Para definir uma chave primária quando se deseja que um valor incremental seja gerado automaticamente. (Dispensa o uso da instrução “Primary Key”) Conhecido como AUTO-INCREMENTO

DDL: CREATE

Page 19: Banco de dados modelagem Lógica e SQL (DDL)

19 Prof. Mário Sergio

19

Exemplo de Instâncias da tabelas ALUNO e DISCIPLINA

DDL: CREATE

Page 20: Banco de dados modelagem Lógica e SQL (DDL)

20 20 Prof. Mário Sergio 20

Criando as tabelas CREATE TABLE PROFESSOR ( cpf CHAR(14) PRIMARY KEY, nome Varchar(200) NOT NULL, tempo_ensino INT, disciplina_id INT NOT NULL, FOREIGN KEY(disciplina_id) REFERENCES DISCIPLINA (id));

Os valores de uma coluna definida com a restrição de Chave Estrangeira, precisam existir antecipadamente no atributo PK da tabela relacionada.

DDL: CREATE

Exemplo de Instâncias da Professor Disciplina

Page 21: Banco de dados modelagem Lógica e SQL (DDL)

21 21 Prof. Mário Sergio

21

Criando as tabelas

CREATE TABLE AULA ( professor_cpf CHAR(14), aluno_matricula CHAR(8), nota DECIMAL(4,2), data Date, PRIMARY KEY(professor_cpf,aluno_matricula,data), FOREIGN KEY(professor_cpf) REFERENCES PROFESSOR (cpf), FOREIGN KEY(aluno_matricula) REFERENCES ALUNO (matricula));

Definição da Chave Primária Composta.

DDL: CREATE

Definição das Chave Estrangeiras

Page 22: Banco de dados modelagem Lógica e SQL (DDL)

22 Prof. Mário Sergio

Observamos, por exemplo que: O Aluno Fulano de Tal, assiste aulas de reforço com os professores João da Silva e Pedro Antônio

Tabela Professor

Tabela Aluno

Tabela Aula

Exemplo: Instâncias da tabela Aula

Page 23: Banco de dados modelagem Lógica e SQL (DDL)

23 23 Prof. Mário Sergio

23

Alterando tabelas, adicionando e modificando colunas

ALTER TABLE ALUNO ADD cidade VARCHAR(50) DEFAULT 'Recife'; ALTER TABLE ALUNO ADD SEXO CHAR(1); ALTER TABLE ALUNO ADD altura INT;

Altera elementos em uma tabela

DDL: ALTER

ALTER TABLE ALUNO MODIFY SEXO CHAR(1) NOT NULL; ALTER TABLE ALUNO ADD CHECK SEXO IN ('M', 'F');

Modifica uma coluna

Adiciona uma nova coluna

Define um VALOR PADRÃO, caso o

usuário não informe no INSERT

Restrição de valor

um VALOR NÃO NULO

Adiciona uma restrição para VALIDAÇÃO DE VALOR que pode ser armazenado em uma coluna (com base em uma condição lógica)

Page 24: Banco de dados modelagem Lógica e SQL (DDL)

24 24 Prof. Mário Sergio

24

Mais uma Alteração no projeto da Ong: A coordenação da Ong solicitou uma alteração de última hora dizendo que também seria necessário registrar o tempo de duração em horas (fracionada), e o valor que o professor poderá cobrar a ONG por cada aula ministrada.

ALTER TABLE AULA ADD duracao DECIMAL(3,1); ALTER TABLE AULA ADD valor DECIMAL(8,2);

DDL: ALTER

Assim, foi necessário fazer a seguinte alteração a estrutura da tabela Aula:

Page 25: Banco de dados modelagem Lógica e SQL (DDL)

25 25 Prof. Mário Sergio

25

Eliminando Tabelas e colunas

CREATE TABLE TESTE ( nome VARCHAR(50) ); DROP TABLE TESTE; ALTER TABLE ALUNO DROP ALTURA;

DDL: DROP

Eliminando apenas uma coluna de uma

Tabela

Eliminando uma Tabela Inteira

Esta instrução deve ser utilizada com bastante

cautela !

Page 26: Banco de dados modelagem Lógica e SQL (DDL)

26 26 Prof. Mário Sergio

26

CREATE TABLE nometabela ( coluna1 tipo restrições, coluna2 tipo restrições, colunaN tipo restrições ....... ); DROP TABLE nometabela; ALTER TABLE nometabela ADD nomecoluna tipo restrições; MODIFY nomecoluna tipo restrições; DROP nomecoluna;

RESUMO das Sintaxes DDL

Page 27: Banco de dados modelagem Lógica e SQL (DDL)

27 27

O modelo lógico final do projeto “Ensino de Reforço na Ong”

Prof. Mário Sergio 27

Depois das alterações DDL:

Novas Colunas

Page 28: Banco de dados modelagem Lógica e SQL (DDL)

28 28 28

Execute todo o passo a passo de modelagem conceitual, lógica e físico, do projeto “Ensino de Reforço na Ong”, descrito neste Slide, para isso utilize o h2 database.

Exercícios

Page 29: Banco de dados modelagem Lógica e SQL (DDL)

Exercícios Projetos Propostos

29

Exercício:

Implementar modelagem Conceitual, definir atributos e realizar transformação para os

modelos lógico e físico utilizando o h2 database

Page 30: Banco de dados modelagem Lógica e SQL (DDL)

30

Entidade Associativa

Exercícios Projetos Propostos

Exercício: Implementar modelagem Conceitual, definir atributos e realizar transformação para os modelos lógico e físico utilizando o h2 database

Page 31: Banco de dados modelagem Lógica e SQL (DDL)

31 31 31

A cooperativa de pesca PescaFácil possui 280 pescadores associados, mas nem todos trabalham todos os dias. Você foi contratado pelo diretor da PescaFácil para desenvolver um programa que lhe permite fazer o controle da produção de peixes. Ele disse: “A medida que cada pescador chega na cooperativa eu preciso registrar o nome dele, assim como a espécie e o peso de cada peixe que ele pescou no dia”. Cada espécie possui um preço por Kg, e eu pago o valor total no ato. Mas eu não quero toda vez digitar o nome por extenso da espécie, para isso usamos a seguinte codificação: 1 – Serra (R$ 12,5) 2 - Dourado (R$ 8,0) 3 - Atum (R$ 13,8) 4 - Robalo (R$ 15,0) 5 - Sardinha (R$ 7,8) Ah, e ainda tem mais, no futuro podem aparecer outras espécies.

Exercício: Realize o levantamento de requisitos do

problema e elabore um DER, por enquanto apenas com Entidades,

Relacionamentos e Atributos

Exercícios Projetos Propostos

Page 32: Banco de dados modelagem Lógica e SQL (DDL)

32 32 32

Um estabelecimento comercial contratou seus serviços para modelar o banco de dados de VENDAS da empresa. Segundo o gerente comercial, a empresa precisa ter um cadastro de clientes, e armazenar cpf, nome, data de nascimento e cidade onde ele mora. Os cliente podem fazer pedidos, inclusive mais de um por dia. Os pedidos são numerados sequencialmente e devem ser classificados em ATACADO ou a VAREJO, e podemos oferecer descontos de acordo com a quantidade comprada. Além disso, cada pedido pode ter mais de um produto e cada produto possui uma marca, peso unitário e um preço padrão pré-cadastrado. Ah, os vendedores conquistam novos clientes e acompanham os cliente atuais, e por isso eles ganham comissão sobre os pedidos.

Exercícios Projetos Propostos

Page 33: Banco de dados modelagem Lógica e SQL (DDL)

33 33 33

A companhia discográfica PimbaParaTodos decidiu criar uma base de dados com informação sobre os seus músicos bem como outra informação da companhia. A informação dada ao desenhador foi a seguinte:

Cada músico tem um nro. de BI, um nome, uma morada e um número de telefone. Os músicos em início de carreira muitas vezes partilham um endereço e além disso assume-se que cada endereço só tem um telefone.

Cada instrumento usado nos estúdios tem um nome (ex. guitarra, bateria, etc.) e um código interno.

Cada disco gravado na companhia tem um título, uma data, um formato (ex. CD, MC, K7), e um identificador do disco.

Cada música gravada na companhia tem um título e um autor.

Cada músico pode tocar vários instrumentos, e cada instrumento pode ser tocado por vários músicos.

Cada disco tem um certo número de músicas, mas cada música só pode aparecer num disco.

Cada música pode ter a participação de vários músicos, e cada músico pode participar em várias músicas.

Cada disco tem um músico que é o seu produtor. Os músicos podem produzir vários discos.

Exercícios Projetos Propostos

Page 34: Banco de dados modelagem Lógica e SQL (DDL)

34

Bibliografia

Elmasri & Navathe – Fundamentos de Bancos de Dados

Carlos Alberto Heuser – Projeto de Banco de Dados

Korth e Silberchatz – Sistema de Bancos de Dados

http://ehgomes.com.br/disciplinas/bdd

Page 35: Banco de dados modelagem Lógica e SQL (DDL)

35

Links sobre Linguagens/Banco de Dados

http://www.dialetodigital.com/blog/conteudos-programacao/