modelagem de dados -introduÇÃo ao sql€¦ · sql – strutured query language resumo: |foi visto...

25
MODELAGEM DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. [email protected]

Upload: vantruc

Post on 18-Aug-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

MODELAGEM DE DADOS- INTRODUÇÃO AO SQLProf. Angelo Augusto Frozza, [email protected]

INTRODUÇÃO AO SQL

Ferramentas

brModelo – Ferramenta CasePostgreSQL versão 8 ou superior – SGBD

SQL – STRUTURED QUERY LANGUAGE

Em 1986 o American Nacional Standard Institute (ANSI), publicou e padronizou a linguagem SQL;

SQL estabeleceu-se como linguagem padrão do Modelo Relacional;

“Deveria” ser padrão para todos os gerenciadores de Banco de Dados:

1º versão 19892º versão 19923º versão 1999

SQL – STRUTURED QUERY LANGUAGE

Os comandos SQL podem ser agrupados em 3 classes:

DDL – Data Definition LanguageComandos para a Definição de Dados

DML – Data Manipulation LanguageComandos para a Manipulação de Dados

DCL – Data Control LanguageComandos para o Controle do Gerenciador, Conexão e Usuário

SQL – STRUTURED QUERY LANGUAGE

Objetos manipuláveis em um Banco de Dados:Database (Base de Dados)

Table (Tabelas)

Index (Indíces)

View (Visões)

Stored Procedures (Procedimentos)

Triggers (Gatilhos)

Domain (Domínios)

Generator (Variáveis Globais)

Exception (Excecões)

User (Usuários)

Role (Grupos de Usuários)

SQL – STRUTURED QUERY LANGUAGE

Comandos básicos da Linguagem de Definição dos Dados (DDL):

CREATEALTERDROP

SQL – STRUTURED QUERY LANGUAGE

Objeto Database (Base de Dados) - Definição

Arquivo que contém a descrição dos dados, metadados, esquema do banco de dados;Contém todos os objetos criados;Contém os dados;Detém a segurança da estrutura completa;

Sintaxe:

Create database nome_banco

SQL – STRUTURED QUERY LANGUAGE

Objeto Domínio – Definição

São tipos de dados criados para evitar redundâncias de tipos e facilitar a manutenção do Banco de Dados;

SQL – STRUTURED QUERY LANGUAGE

Criando objetos DomínioCREATE DOMAIN d_logradouro VARCHAR(40);

CREATE DOMAIN d_numero VARCHAR(6);

CREATE DOMAIN d_cep VARCHAR(8);

CREATE DOMAIN d_bairro VARCHAR(30);

CREATE DOMAIN d_complemento VARCHAR(20);

CREATE DOMAIN d_fone VARCHAR(10);

CREATE DOMAIN d_cpf VARCHAR(11);

CREATE DOMAIN d_rg VARCHAR(15);

CREATE DOMAIN d_email VARCHAR(50);

SQL – STRUTURED QUERY LANGUAGE

Criando objetos Domínio

CREATE DOMAIN d_logico VARCHAR(1) CHECK (VALUE IN (‘S’, ‘N’));

CREATE DOMAIN d_sexo VARCHAR(1) CHECK (VALUE IN (‘M’, ‘F’));

CREATE DOMAIN d_estado_civil VARCHAR(15) CHECK (VALUE IN (‘CASADO’, ‘SOLTEIRO’, ‘DESQUITADO’, ‘SEPARADO’, ‘OUTROS’));

CREATE DOMAIN d_data_atual AS DATE DEFAULT 'NOW‘ NOT NULL;

CREATE DOMAIN d_comentarios AS BYTEA NOT NULL;

SQL – STRUTURED QUERY LANGUAGE

Alterando um objeto Domínio

ALTER DOMAIN d_logico SET DEFAULT ‘x’;

ALTER DOMAIN nome{ SET DEFAULT expressão | DROP DEFAULT }ALTER DOMAIN nome{ SET | DROP } NOT NULL

ALTER DOMAIN nomeADD restrição_de_domínioALTER DOMAIN nomeDROP CONSTRAINT nome_restrição [ RESTRICT | CASCADE ]ALTER DOMAIN nomeOWNER TO novo_dono

SQL – STRUTURED QUERY LANGUAGE

Eliminando um objeto Domínio

DROP DOMAIN d_logico;

DROP DOMAIN d_email;

SQL – STRUTURED QUERY LANGUAGE

Objeto Table – Definição

É o local onde armazenamos os dados;

Regras para definição do objeto TABLE:Primeiro criar as tabelas que não possuem chave estrangeira;A chave primária sempre será um campo não nulo;Criar Constraints (dar nomes às chaves primárias e estrangeiras);Constraints são restrições criadas para manter a consistência da base de dados;Não podem existir Contraints com mesmo nome na mesma base de dados;

Ex: A definição de uma chave primária é uma restrição; A definição de uma chave estrangeira é uma restrição;

SQL – STRUTURED QUERY LANGUAGE

Criando um Objeto Table

Tabela Municipio

CREATE TABLE municipio (id_municipio INTEGER NOT NULL,nome VARCHAR(35) NOT NULL,uf VARCHAR(2) NOT NULL,CONSTRAINT pk_municipio PRIMARY KEY

(id_municipio));

SQL – STRUTURED QUERY LANGUAGE

Criando um Objeto Table

CREATE TABLE contador (id_contador INTEGER NOT NULL,nome VARCHAR(50) NOT NULL,logradouro D_LOGRADOURO,nr D_NUMERO,complemento D_COMPLEMENTO,cep D_CEP,bairro D_BAIRRO,fone D_FONE,fax D_FONE,email D_EMAIL,id_municipio INTEGER NOT NULL,CONSTRAINT pk_contador PRIMARY KEY (id_contador), CONSTRAINT fk_contador_municipio

FOREIGN KEY (id_municipio) REFERENCES municipioOn Update Cascade On Delete no Action

);

SQL – STRUTURED QUERY LANGUAGE

Alterando a estrutura de um objeto Table

- Adicionar o campo data do cadastro na tabela contador:Alter Table Contador add Data D_DataAtual;

- Adicionar o campo teste do cadastro na tabela contador:Alter Table Contador add Teste Varchar(10);

- Alterando o tipo de um atributo na entidade contador;Alter Table Contador alter nome type varchar(50) not

null;

- Eliminando um atributo na entidade contador;Alter Table Contador drop teste;

SQL – STRUTURED QUERY LANGUAGE

Eliminando um objeto Table

Drop Table Municipio;Não vai aceitar, pois existe a tabela contador relacionada;

1o) Drop Table Contador;

2o) Drop Table Municipio;

SQL – STRUTURED QUERY LANGUAGE

Integridade referencial

Integridade referencial é um conjunto de regras e de consistências entre os registros de duas tabelas que se relacionam;

Como foi visto no modelo relacional:quando duas tabelas se relacionam, a chave primária de uma é copiada para a outra;se esses dados forem alterados ou excluídos da tabela original é necessário verificar o que será feito com os dados e registros duplicados na outra tabela;

SQL – STRUTURED QUERY LANGUAGE

Integridade referencial

Quando se define uma integridade referencial, está se definindo o procedimento que será tomado quando esses processos ocorrerem;

Sejam duas tabelas “A” e “B” que se relacionam através de uma coluna “c” que é a chave primária de “A” e, portanto, foi repetida em “B” para se fazer o relacionamento;

Quando se define uma integridade referencial para esse relacionamento, está se definindo que a coluna “c” da tabela “B” só pode conter valores já cadastrados na coluna “c” da tabela “A”;

SQL – STRUTURED QUERY LANGUAGE

Integridade referencial

Existem três formas de se manter essa regra quando registros da tabela “A” são excluídos:

Restrict: define que, se o valor da coluna “c” de “A” existir em algum registro de “B”, o registro não poderá ser excluído e uma mensagem de erro retornará para a aplicação;

Cascade: define que, se o valor da coluna “c” de “A” existir em algum registro de “B”, todos os registros que possuírem esse valor serão também excluídos;

Set Null: define que, se o valor da coluna “c” de “A” existir em algum registro de “B”, os valores de “c” em todos os registros serão transformados para “Null”;

SQL – STRUTURED QUERY LANGUAGE

Integridade referencialCREATE TABLE contador (

id_contador INTEGER NOT NULL,nome VARCHAR(50) NOT NULL,logradouro D_LOGRADOURO,nr D_NUMERO,complemento D_COMPLEMENTO,cep D_CEP,bairro D_BAIRRO,fone D_FONE,fax D_FONE,email D_EMAIL,id_municipio INTEGER NOT NULL,CONSTRAINT pk_contador PRIMARY KEY (id_contador), CONSTRAINT fk_contador_municipio

FOREIGN KEY (id_municipio) REFERENCES municipio On Update Cascade On Delete no Action

);

SQL – STRUTURED QUERY LANGUAGE

Integridade referencial (SQLite3)

SQL – STRUTURED QUERY LANGUAGE

Integridade referencial (SQLite3)

SQL – STRUTURED QUERY LANGUAGE

Restrições em campos (SQLite 3):

SQL – STRUTURED QUERY LANGUAGE

Resumo:

Foi visto a criação dos seguintes objetos:Database (Base de Dados)

Table (Tabelas)

Index (Indíces)

Domain (Domínios)Não suportado pelo SQLite 3