Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,286 views

Published on

Slide do curso Accenture do Futuro (ADF)
Prof. Mário Sergio

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Banco de Dados Modelagem Lógica e SQL (DDL) por: Mário Sergio da Silva
  2. 2. Banco de Dados Modelagem Lógica e SQL (DDL) Prof. Mário Sergio da Silva mariosergio30@gmail.com 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)
  3. 3. 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. 44 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. 55 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. 66  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. 77 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. 88 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. 99 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. 10. 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. 11. 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. 1212 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. 131313 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. 1414 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. 1515 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. 1616 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. 1717 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. 1818 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. 19. 19 Prof. Mário Sergio 19 Exemplo de Instâncias da tabelas ALUNO e DISCIPLINA DDL: CREATE
  20. 20. 2020 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. 2121 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. 22. 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. 2323 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. 2424 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. 2525 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. 2626 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. 2727 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. 282828 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
  29. 29. 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. 30. 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. 313131 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. 323232 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. 333333 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. 34. 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. 35. 35 Links sobre Linguagens/Banco de Dados  http://www.dialetodigital.com/blog/conteudos-programacao/

×