Banco de dados modelagem Lógica e SQL (DDL)
-
Upload
mario-sergio -
Category
Technology
-
view
1.689 -
download
8
Transcript of Banco de dados modelagem Lógica e SQL (DDL)
Banco de Dados Modelagem Lógica e SQL (DDL) por: Mário Sergio da Silva
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)
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
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)
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
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)
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)
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)
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
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
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
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
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
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)
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.
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
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
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
19 Prof. Mário Sergio
19
Exemplo de Instâncias da tabelas ALUNO e DISCIPLINA
DDL: CREATE
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
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
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
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)
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:
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 !
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
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
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
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
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
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
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
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
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
35
Links sobre Linguagens/Banco de Dados
http://www.dialetodigital.com/blog/conteudos-programacao/