MODELAGEM DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br
INTRODUÇÃO AO SQL Ferramentas brmodelo Ferramenta Case PostgreSQL versão 8 ou superior SGBD
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 1989 2º versão 1992 3º versão 1999
Os comandos SQL podem ser agrupados em 3 classes: DDL Data Definition Language Comandos para a Definição de Dados DML Data Manipulation Language Comandos para a Manipulação de Dados DCL Data Control Language Comandos para o Controle do Gerenciador, Conexão e Usuário
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)
Comandos básicos da Linguagem de Definição dos Dados (DDL): CREATE ALTER DROP
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
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;
Criando objetos Domínio CREATE 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);
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;
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 nome ADD restrição_de_domínio ALTER DOMAIN nome DROP CONSTRAINT nome_restrição [ RESTRICT CASCADE ] ALTER DOMAIN nome OWNER TO novo_dono
Eliminando um objeto Domínio DROP DOMAIN d_logico; DROP DOMAIN d_email;
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;
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) );
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 municipio On Update Cascade On Delete no Action );
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;
Eliminando um objeto Table Drop Table Municipio; Não vai aceitar, pois existe a tabela contador relacionada; 1 o ) Drop Table Contador; 2 o ) Drop Table Municipio;
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;
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 ;
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 ;
Integridade referencial 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 municipio On Update Cascade On Delete no Action );
Integridade referencial (SQLite3)
Integridade referencial (SQLite3)
Restrições em campos (SQLite 3):
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