AULA 01 Bancos De Dados Relacionais Arquitetura Linguagem SQL .

Transcription

AULA 01 Bancos de Dados Relacionais Arquitetura Linguagem SQL Componentes: DDL, DML, DCLProf. Msc. Célio R. Castelano

TÓPICOS Projeto de Bancos de Dados Relacionais Arquitetura Modelagem Conceitual Modelagem Lógica Modelagem Física Mapeamento do Modelo Conceitualpara o Modelo Relacional Linguagem SQL Componentes: DDL, DML, DCL

Projeto de Banco de Dados: É a atividade que tem como propósito especificar aEstrutura e o Comportamento de um Banco de Dados(Modelo do Banco de Dados), tendo como ponto departida os Requisitos de Informação e as Regras deNegócio (Modelo descritivo) inerentes a um determinadoDomínio do Problema (Mini-Mundo, Domínio deConhecimento, Parcela do Mundo Real), com a utilizaçãode Ferramentas de Projeto ou Modelagem (MER, MCUML, MDR, .), procurando atender a uma série decritérios de qualidade (Requisitos de Qualidade deProjeto ou Modelagem).

Como um Banco de Dados é projetado?

Arquitetura

Arquitetura Mini Mundo(Nível Externo)A empresa deseja controlar suas categorias demateriais de acordo com cada fornecedor, ondevários fornecedores podem fornecer diversascategorias de materiais. Projeto(Modelagem) Conceitual(Nível Conceitual) Projeto(Modelagem) Lógico(Nível Conceitual) Projeto(Modelagem) Físico(Nível Interno) create table fornecedor (cgc integer not null, .) create table fornece(cgc fornecedor intenger.)

Mapeamento do Modelo Conceitualpara o Modelo RelacionalUm modelo conceitual construído utilizando oM.E.R. (Modelo Entidade-Relacionamento) pode sermapeado para um modelo lógico Relacional Aequivalência mais direta écada Entidade uma Tabelacada Atributo uma Colunacada Ocorrência uma Linha

Mapeamento de EntidadesPara cada Entidadedeve ser criada umarelação (tabela) Para cada atributosimples incluir umacoluna na tabela No caso de atributocomposto, incluirsomente os atributossimples que ocompõe (Endereço) códigonome EndereçoDataNascEMPREGADOEmpregado(Codigo, Nome,Logradouro, Numero, Bairro, Cidade, Estado,DataNasc)13

Mapeamento de Atributos Multivalorados Para cada atributomultivalorado deve sercriada uma tabela formadapela chave primária daTabela/Entidade e peloatributo multivalorado A chave primária da novatabela será o par deatributos Se o atributo multivaloradofor composto. Por ex.:Ingrediente formado porNome do ingrediente equantidade, todo o grupovai para a nova tabelacódigonomeModo de PreparoIngrediente (n)RECEITAReceita(Codigo, Nome, Modo Preparo)Ingrediente Receita (CodReceita, Ingrediente)14

Nome das colunasO nome do atributo(modelo conceitual) pode ser diferentedo nome do campo da tabela (coluna) Objetivo Facilidade de programação como o uso de nomes curtos Evitar nomes iguais. Ex.: Todas entidades com o atributo nome Evitar espaços no nome da coluna, pois são proibidos nos BDrelacionais Dica Defina um padrão para converter o nome dos atributos,principalmente dos nomes compostos que necessitam abreviação.Ex.: Nome do ResponsávelNomeRes

Nome para a chave primáriaÉ boa prática compor o nome da chave primáriacom uma identificação da tabela a qual elapertence códigonome EndereçoData de NascimentoEMPREGADOEmpregado(CodEmp, Nome, Endereco, DataNasc) Como geralmente, elas se tornam chaves estrangeiras de outrastabelas, esta prática facilita a programação e compreensão doscampos

Mapeamento de Relacionamentos Um relacionamento pode ser transformado em: Uma tabela Uma coluna de uma das tabelas envolvidas Fusão de duas tabelasEsta decisão depende da cardinalidade mínima emáxima dos relacionamentos No caso da fusão devemos considerar tambémoutros relacionamentos da entidade

Entidades FracasCriar uma tabela para cada entidade fraca Nessa tabela incluir como chave estrangeira a chaveprimária da tabela que representa a entidadepossuidora/identificadora As entidades fracas têm chave primária composta de duaspartes: A chave primária da tabela (entidade) possuidora A chave parcial da tabela(entidade) dEmp, Nome)nomeData de odEmp, CodDep, Nome, DataNasc)

Implementação de Relacionamentos 1:1

Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional adição de colunas

Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional tabela própria

Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional fusão de tabelas22

Relacionamentos Binários - Um para Um Ambas entidades têm participação opcional Solução por fusão de tabelas é inviável Chave primária artificial (já que pode não estar completa) Solução por adição de colunas: melhor Menor número de junções Menor número de chavesSolução por tabela própria: aceitável

Implementação de Relacionamentos 1:1

Relacionamentos Binários - Um para Um Participação opcional/obrigatória Fusão de tabelas

Relacionamentos Binários - Um para Um Participação opcional/obrigatória Adiçãode colunas

Relacionamentos Binários - Um para Um Adição de colunas versus fusão de tabelasFusão de tabelas é melhor em termos de número dejunções e número de chaves Adicãode colunas é melhor em termos de camposopcionaisFusão de tabelas é considerada a melhor e adição decolunas é aceitável

Relacionamentos Binários - Um para Muitos

Relacionamentos Binários - Um para MuitosJá temos duas tabelas, uma para cada conjunto deentidades que participam do relacionamento Incluir como chave estrangeira, na tabela do “ladomuitos” (o “lado N”), a chave primária da tabela do“lado um” Incluir também colunas com os atributos dorelacionamento

Relacionamentos Binários - Um para Muitos

Relacionamentos Binários - Muitos para Muitos

Relacionamentos Binários - Muitos para MuitosJá temos duas tabelas, uma para cada conjunto deentidades que participa do relacionamento Criar uma nova tabela contendo, como chavesestrangeiras, as chaves primárias dessas duastabelas Acombinação dessas chaves estrangeiras forma achave primária da nova tabelaIncluir também colunas com os atributos dorelacionamento

Relacionamentos Binários - Muitos para Muitos

A Linguagem SQL O SQL foi desenvolvido originalmente no início dos anos 70nos laboratórios da IBM em San Jose, dentro doprojeto System R(Sistema R), que tinha por objetivodemonstrar a viabilidade da implementação do modelorelacional proposto por Edgar Frank Codd. O nome original da linguagem era SEQUEL, acrônimopara "Structured English Query Language" (Linguagem deConsulta Estruturada em Inglês), vindo daí o fato de, atéhoje, a sigla, em inglês, ser comumente pronunciada"síquel" ao invés de "és-kiú-él", letra a letra. No entanto, em português, a pronúncia mais corrente é aletra a letra: "ése-quê-éle".

A Linguagem SQL A SQL é uma linguagem de banco de dados abrangente:ela possui comandos para definição de dados, consultas eatualizações. Assim, ela tem ambas as DDL e DML. Além disso, temfuncionalidades para a definição de visões (views) no bancode dados, a fim de especificar a segurança e as autorizaçõespara as definições de restrições de integridade e decontroles de transação. Ela também possui regras para embutir os comandos SQLem linguagens de programação genérica como Java, COBOLou C/C .

A Linguagem SQL Como a especificação do padrão SQL está em expansão,com mais funcionalidades a cada versão, o último padrãoSQL-99 foi dividido em uma especificação de núcleo (core)mais pacotes (packages) opcionais. O núcleo deve ser implementado por todos os vendedoresde SGBDs relacionais compatíveis com o padrão. Os pacotes podem ser implementados como módulosopcionais, que podem ser adquiridos independentementepara as aplicações específicas de um banco de dados, comodata mining (garimpagem de dados), dados espaciais, dadostemporais, data warehousing, processamento analítico online (OLAP), dados multimídia, e assim por diante.

A Linguagem SQL A linguagem SQL é dividida em subconjuntos de acordocom as operações que queremos efetuar sobre um bancode dados. Neste curso aprenderemos apenas sobre os doisprimeiros subconjuntos, mas é importante que o estudantetenha uma noção geral dos subconjuntos básicos.1. DDL - Linguagem de Definição de Dados2. DML - Linguagem de Manipulação de Dados3. DCL - Linguagem de Controle de Dados

A Linguagem SQL1 – DDL - Linguagem de Definição de Dados(Data DefinitionLanguage)É um conjunto de comandos dentro da SQL usada para adefinição das estruturas de dados, fornecendo as instruções quepermitem a criação, modificação e remoção das tabelas, assim comocriação de índices.Estas instruções SQL permitem definir a estrutura de umabase de dados, incluindo as linhas, colunas, tabelas, índices, e outrosmetadados.Entre os principais comandos DDL estão CREATE (Criar), DROP(deletar) e ALTER (alterar).

A Linguagem SQL1 – DDL - Linguagem de Definição de Dados(de Data DefinitionLanguage)Exemplos: CREATE TABLE ALUNO (alu ra integer not null,alu nome varchar(80) ); CREATE TABLE PROFESSOR (pro codigo integer,pro nome varchar(50),pro admissao date ); DROP TABLE ALUNO; DROP TABLE PROFESSOR;

A Linguagem SQL2- DML – Linguagem de Manipulação de Dados (DataManipulation Language)É o grupo de comandos dentro da linguagem SQLutilizado para a recuperação, inclusão, remoção emodificação de informações em bancos de dados.Os principais comandos DML são SELECT (Seleção deDados), INSERT (Inserção de Dados), UPDATE (Atualizaçãode Dados) e DELETE (Exclusão de Dados).

A Linguagem SQL2 – DML – Linguagem de Manipulação de Dados (DataManipulation Language)Exemplos: SELECT NUMERO, NOME FROM empregados; INSERT INTO empregados(nome, data nascimento, salario, cidade, ,'DF'); UPDATE empregadosSET nome 'João da Silva',cidade 'São Paulo‘WHERE codigo empregado 2; DELETE FROM empregados where codigo empregado 1;

A Linguagem SQL3 – DCL – Linguagem de Controle de Dados (Data Control Language)É o grupo de comandos que permitem ao administrador debanco de dados controlar o acesso aos dados deste banco. Algunsexemplos de comandos DCL são:GRANT: Permite dar permissões a um ou mais usuários edeterminar as regras para tarefas determinadas;REVOKE: Revoga permissões dadas por um GRANT.As tarefas básicas que podemos conceder ou barrar permissões são: CONNECTSELECTINSERTUPDATEDELETEUSAGE

A Linguagem SQL3 – DCL – Linguagem de Controle de Dados (Data Control Language)Exemplos: GRANT SELECT ON CLIENTES TO PUBLICGRANT SELECT,INSERT ON PESSOAS TO JOSE,PEDROGRANT UPDATE(SALARIO) ON FOLPAGTO TO ANAMARIAREVOKE SELECT ON CLIENTES TO PUBLICREVOKE SELECT,INSERT ON PESSOAS TO JOSE,PEDROREVOKE UPDATE(SALARIO) ON FOLPAGTO TO ANAMARIAREVOKE EXECUTE ON PROCEDURE SOMATUDO TO ANA,JOSE

A Linguagem SQL Como a especificação do padrão SQL está em expansão, com mais funcionalidades a cada versão, o último padrão SQL-99 foi dividido em uma especificação de núcleo (core) mais pacotes (packages) opcionais. O núcleo deve ser implementado por todos os vendedores de SGBDs relacionais compatíveis com o padrão.