Buscar

modelagem

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 123 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 123 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 123 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

�PAGE �1�
�PAGE �3�
Apostila de Banco de Dados v.3.0	 
Banco de Dados
Prof. Flavio Rezende
�
61	Evolução dos Sistemas de Informação.	
2	Introdução	7
2.1	Modelo Conceitual de Dados (MCD)	7
2.2	Modelo Lógico de Dados (MLD)	7
2.3	Modelo Físico de Dados (MFD)	7
3	Modelo Conceitual de Dados (MCD)	7
3.2	Entidades	9
3.2.1	Especificações	9
3.2.2	Eventos ou Ocorrências	10
3.2.3	Especificações	10
3.2.4	A Dicionarização dos Objetos Modelados	10
3.2.5	Regras Básicas para a Dicionarização de Objetos (Entidades/Classes)	10
3.2.6	Requisitos a serem atendidos na dicionarização	10
3.2.7	Dependência de Existência	11
3.2.8	Dependência de Identificador	11
3.3	Atributos	11
3.3.1	Atributos Descritivos	11
3.3.2	Atributos Nominativos	11
3.3.3	Atributos Referenciais	11
3.3.4	Dicionarização dos Atributos	12
3.4	Relacionamentos	12
3.4.1	Identificação dos Relacionamentos	12
3.4.2	Denominação dos Relacionamentos	12
3.4.3	Caracterização dos Relacionamentos	12
3.4.4	Grau de Cardinalidade do Relacionamento	12
3.4.5	Relacionamentos incondicionais	13
3.4.6	Relacionamentos Condicionais	13
3.4.7	Quanto à Existência Simultânea de Relacionamentos	14
3.4.8	Quanto à Presença de Atributos	15
3.4.9	Dicionarização de Relacionamentos	15
3.4.10	Estrutura de Generalização e Especificação	15
3.4.11	Especializações Mutuamente Exclusivas (Categorias)	15
3.4.12	Especialização Não-mutuamente Exclusivas (Papéis)	15
3.4.13	Níveis de Especialização	16
3.4.14	Quando Utilizar a Estrutura de Generalização-Especialização	16
3.4.15	Como Apresentar os Subgrupos Existentes	16
4	Modelo Lógico de Dados (MLD)	17
4.1	Passos para a Derivação do Modelo Lógico	17
4.2	Implementação do Modelo Relacional	17
4.2.1	Regras de Derivação	18
4.3	Normalização	18
4.3.1	Benefícios da Normalização	18
4.3.2	Primeira Forma Normal (1FN)	19
4.3.3	Segunda Forma Normal (2FN)	20
4.3.4	Terceira Forma Normal (3FN)	21
4.3.5	Derivação de Agregações	22
4.4	Restrições no Modelo Lógico	22
4.4.1	Restrições de Domínio	23
4.4.2	Restrições de Integridade	23
4.4.3	Restrições de Implementação	24
4.4.4	Objetos básicos de um SGBDR	24
5	Modelo de Entidades e Relacionamentos (ER).	27
5.1	Entidade	27
5.2	Relacionamento	27
5.3	Cardinalidade	28
5.4	Generalização / Especialização :	28
5.5	Entidade Fraca	29
5.6	Agregação :	30
6	Regras de conversão do Modelo Conceitual (E-R) para o Modelo Lógico.	31
6.1	Entidade	31
6.2	Entidade Fraca	31
6.3	Relacionamentos	32
6.4	Especialização	32
6.5	Agregação	33
7	Algebra Relacional	33
8	Linguagem SQL.	35
8.1	Introdução ao SQL	36
8.1.1	SQL*Plus	37
8.1.2	PL/SQL	38
8.1.3	Sintaxe de um bloco PL/SQL:	38
8.1.4	Alguns Comandos SQL:	38
8.1.5	SELECT	38
8.1.6	Expressões Aritméticas	39
8.1.7	Colunas Sinônimas	41
8.1.8	Operador de Concatenação	41
8.1.9	Literais	42
8.1.10	Manuseando Valores Nulos	42
8.1.11	Prevenindo a Seleção de Linhas Duplicadas – Cláusula Distinct	43
8.1.12	A clausula ORDER BY	44
8.1.13	A Clausula WHERE	45
8.2	Operadores SQL	46
8.2.1	O Operador BETWEEN	46
8.2.2	O Operador IN	46
8.2.3	O Operador LIKE	46
8.2.4	Operador IS NULL	47
8.3	Expressões Negativas	47
8.3.1	Pesquisando Dados com Múltiplas Condições	49
8.4	Funções	50
8.4.1	Funções Alfanuméricas	51
8.4.2	Aninhamento de Funções	55
8.4.3	Funções Numéricas	55
8.4.4	Funções de Data	58
8.4.5	Funções de Conversão	61
8.4.6	Funções que Aceitam Vários Tipos de Entrada de Dados	65
8.4.7	Funções de Grupo	67
8.4.8	A cláusula GROUP BY	68
8.4.9	A clausula HAVING	69
8.4.10	A Ordem das clausulas na declaração SELECT.	70
8.5	Executando Pesquisas Padrões com Variáveis Substituíveis	70
8.5.1	Única Variável Substituível	70
8.5.2	Duplo & para Variáveis substituíveis	71
8.5.3	O Comando DEFINE	72
8.5.4	O comando ACCEPT	72
8.6	Recuperando valores da base de dados	73
8.6.1	Comandos de Manipulação de Dados (DML)	74
8.7	Seqüências	76
8.7.1	Alterando uma seqüência	76
8.7.2	Eliminando uma seqüência	76
8.8	Índices	77
8.8.1	Recuperando informações sobre Índices:	77
8.9	Controle de Concorrência	77
8.9.1	Tipos de Lock	77
8.10	Declarações	78
8.10.1	Declarações de Variáveis	78
8.10.2	Tipos de Dados PL/SQL	79
8.10.3	Subtype	82
8.10.4	Atribuindo Valores às Variáveis	83
8.10.5	Escopo de Variáveis	83
8.11	Codificação de Comando SQL Dentro de PL/SQL	84
8.12	Tratamento de Transações	84
8.13	Estruturas de Controle	85
8.13.1	IF – THEN – ELSE	85
8.13.2	WHILE-LOOP	86
8.13.3	FOR-LOOP	86
8.13.4	LOOP	86
8.14	Cursores:	86
8.14.1	Comandos de Manipulação do cursor:	87
8.14.2	Close	88
8.14.3	O Comando For para abrir Cursores:	89
8.14.4	Atualização na tabela da linha atual do cursor:	89
8.14.5	Cursores Implícitos:	89
8.15	Tratamento de Exceções	90
8.15.1	Exceções Predefinidas	90
8.15.2	Exceções Definidas pelo Usuário	91
Coloca uma linha no buffer, e mostra na tela.	92
8.16	Subprogramas (Procedures e Functions)	92
8.16.1	Parâmetros	93
8.16.2	Procedures	93
8.16.3	Functions:	93
8.16.4	Executando subprogramas através do SQL* Plus:	93
8.16.5	Eliminando um subprograma:	93
8.16.6	Análise das dependências:	93
8.17	Packages	94
8.17.1	Especificação	94
8.17.2	Body	94
8.17.3	Execução de Estruturas Públicas de uma Package:	95
8.18	Triggers	95
8.18.1	Criação de triggers	95
8.18.2	Triggers possíveis para uma tabela:	95
9	Projeto físico de Banco de Dados:	97
9.1	Criação de Tabelas no Banco de Dados:	101
9.2	Criação de Views :	101
9.3	Criação de Stored Procedures :	102
9.4	Criação de Functions :	102
9.5	Criação de triggers :	103
10	Privilégios.	104
11	DATA WAREHOUSE	106
12	Exercícios	109
12.1	Modelo Conceirual e Lógico	109
12.2	SQL	117
12.3	Banco de Dados Distribuído	121
�
�
Evolução dos Sistemas de Informação.
Nos anos 70 , o programa era o foco principal dos sistemas de informação. Dados e apresentação de telas para usuários, ficavam em segundo plano.
Dependência dos programas com relação aos dados armazenados.
O SGBD (Sistema Gerenciador de Banco de Dados) é uma camada lógica entre os programas e os dados, tornando assim os programas independentes dos dados.
Programas ( Programas + Arquivos ( Programas + SGBD + Banco de Dados
Banco de Dados ( Coleção de dados.
Características do SGBD Relacional (também conhecidos como SGBDR).
Linguagem SQL.
Backup/Recovery.
Segurança.
Integridade.
Controle de concorrência de transações.
Desempenho.
�
Introdução
Modelo Conceitual de Dados (MCD)
Define-se como Modelo Conceitual aquele em que os objetos, suas características e relacionamentos têm a representação fiel ao ambiente observado. Devemos representar os conceitos e características observados em um dado ambiente, voltando-nos simplesmente ao aspecto conceitual.
Nesse nível devem ser ignoradas quaisquer particularidades de implementação, bem como desconsiderada qualquer preocupação com qual será o modo de implementação futura, permanecerá imutável.
Modelo Lógico de Dados (MLD)
Define-se como aquele em que os objetos, suas características e relacionamentos têm a representação de acordo com as regras de implementação e limitantes impostos por algum tipo de tecnologia.
Esse modelo deve ser o modelo elaborado respeitando-se e implementando-se os conceitos tais como chave de acesso, controles de chaves duplicadas, itens de repetição (arrays), normalização, ponteiros, headers, integridade referencial, entre outros.
Modelo Físico de Dados (MFD)
É aquele em que a representação dos objetos é feita sob o foco do nível físico de implementação das ocorrências, ou instâncias das entidades e seus relacionamentos.
Cada diferente SGBD poderá definir um diferente modo de implementação física das características e recursos necessários para o armazenamento e manipulação das estruturas de dados.
No modelo físico podem ser incluídos dois níveis de representação. O primeiro deles diz respeito às ocorrências ou instâncias, seus relacionamentose disposição física dos elementos. Outro diz respeito à alocação de espaços físicos nos diversos níveis de agrupamento possíveis: tabelas (arquivos), blocos, linhas (registros) e colunas (campos).
Integração da Arquitetura de Três Níveis com a Abordagem E-R
Uma integração entre a abordagem de modelos conceitual, lógico e físico e a proposta do grupo ANSI-X3-SPARK é possível se forem estabelecidos os níveis de projeto.
Modelo Conceitual de Dados (MCD)
Antes de mais nada, o quê é uma tabela ?
Tabela ou Relação: Uma representação lógica da organização dos dados dentro do SGBDR. É uma tabela de valores, o seu nome e o nome das colunas, servem para auxiliar a interpretação do significado de seus valores.
Valor : É usado para representar 'alguma coisa'. É a menor partícula de dados do modelo relacional, eles são indivisíveis. 
Domínio : É um conjunto de valores atômicos, de mesmo tipo. São usados para preencher os valores de uma coluna.
 ex: Nome char(40) : restringe a coluna Nome a ter seus valores dentro do domínio de no máximo 40 caracteres ou seja um nome de 50 caracteres não é um nome válido para este domínio.
Linha ou Tupla : Representa uma linha da tabela, onde cada linha, representa uma coleção de valores.
 
MATRICULA
NOME
SALARIO
01
Zé
200,00
02
Maria
1000,00
03
João
800,00
04
Margarida
150,00
...
Conceitos de Chave:
Primary Key (PK) :Atributo ou conjunto de atributos de uma tabela que identificam univocamente uma linha. Toda Primary key deve ser minimal.
Foreign Key (FK) : Atributo ou conjunto de atributos de uma tabela que referencia a chave primária em outra tabela, ou no caso do auto relacionamento, na mesma tabela.
 Unique Key(UK) : Atributo de uma tabela que tem todas as qualificações para ser uma chave primária.
OBS. Muitos autores representa a chave primária de uma tabela com as colunas sublinhadas, e as chaves estrangeiras com uma linha acima das colunas.
�
Ex: FUNCIONARIOS(MATRICULA , NOME , SALARIO , CPF , DEPTO) 
Ex:
FUNCIONARIOS
MATRICULA
NOME
SALARIO
CPF
DEPTO
01
Zé
200,00
12999666
01
02
Maria
1000,00
18765789
02
03
João
800,00
49555969
02
04
Margarida
150,00
89993393
01
...
DEPARTAMENTOS
DEPTO
DESCRICAO
01
Recursos Humanos
02
Diretoria
Modelo E-R
A Abordagem Entidade-Relacionamento
A técnica de diagramação é bastante simples e serve como meio de representação dos próprios conceitos por ela manipulados. Utiliza, basicamente, um retângulo para representar as entidades, um losango para representar os relacionamentos e balões para indicar e alocar os atributos.
Entidades
Identificação de Objetos (Entidades ou Classes)
Representação gráfica: 
A estratégia proposta por Shlaer & Mellor, define que deveremos procurar reconhecer objetos, ou elementos individualizados, através da observação de cinco grandes grupos de elementos:
As coisas tangíveis
As funções exercidas por elementos
Interações
Especificações
As classificações propostas têm como objetivo servir como um meio de discernimento para casos não facilmente enquadráveis ou mesmo para verificação e validação do processo de modelagem.
Coisas Tangíveis
O grupo de “Coisas Tangíveis” engloba todos os elementos que tenham existência concreta.
Funções
Definimos como todo o tipo de papel, atribuição, classificação, capacitação, ou outra característica qualquer que, para um dado elemento, especifique não sua existência mas sua atuação no ambiente em que está inserido.
Eventos ou Ocorrências
Alguns objetos, ou elementos individualizados, só conseguem ser percebidos, ou caracterizados, enquanto uma certa ação se desenrola. Em outras palavras, quando alguma ação, ou fato, acontece conseguimos definir características que os tornam materializáveis. Enquanto programado, durante sua execução ou após encerrado, esse elemento caracteriza-se como um evento ou ocorrência ao qual podemos fazer alguma referência.
Interações
Os chamados objetos-interação são resultantes da associação de objetos em função de um processo executado. Os objetos-interação passam a existir de maneira individualizada, além dos objetos que participam dessa interação.
Especificações
São elementos que definem características de outros objetos. Representam especificações que quando aplicadas ou seguidas darão origem a objetos.
A Dicionarização dos Objetos Modelados
Cada um dos elementos identificados e representados deverá, em um segundo instante, ser definido claramente para que, associando-se seu nome, sua representação e sua definição, sejamos capazes de ter o completo entendimento de conceito que estes procuram transmitir.
Regras Básicas para a Dicionarização de Objetos (Entidades/Classes)
Uma das principais tendências quando passamos a dicionarizar um objeto é nos referenciarmos a ele como um meio de armazenamento e não como o próprio objeto que ele representa.
Requisitos a serem atendidos na dicionarização
Para dicionarização de um objeto, ou entidade, deveremos ter em mente algo que satisfaça, senão todas, a grande parte das seguintes perguntas:
O que é o elemento?
O que faz o elemento?
Para que serve?
O que engloba essa categoria de elementos?
O que está excluído dessa categoria
Quando alguém passa a ser, ou deixa de ser, um elemento desse tipo?
Sua permanência nessa categoria é imutável?
Considerações sobre Entidades Fortes e Entidades Fracas
Essa caracterização se dá através da análise de existência de duas condições básicas:
Dependência de existência
Dependência de identificador
Dizemos que uma entidade é fraca se um desses dois tipos de dependência se verificar entre uma entidade A e uma entidade B.
Dependência de Existência
Se B depender de A para existir, teremos em B uma entidade fraca, enquanto que A, se não depender de ninguém para existir, será considerada, será considerada uma entidade forte.
Dependência de Identificador
Esse segundo critério de definição de entidades fortes e entidades fracas, tem sua importância reconhecida sob o ponto de vista de projeto lógico, onde as chaves identificadoras, utilizadas como diferenciadores entre instâncias dos elementos, ou como método de endereçamento de registros, passando a ter papel vital durante o processo de projeto de estruturas de dados.
Atributos
O Papel dos Atributos
Ao observarmos objetos em um ambiente, estaremos, na verdade, reconhecendo tais elementos através da identificação de suas características próprias. Essas características, inerentes a cada um desses objetos, serão, em princípio, comuns a todos os objetos, ou elementos individualizados, pertencentes a um mesmo conjunto.
Classificação dos Atributos quanto a sua finalidade
Após termos identificado os atributos de cada um dos objetos, podemos, sob o ponto de vista de classificação quanto a sua finalidade, enquadra-los em três grandes grupos:
Atributos Descritivos
Todo e qualquer atributo que seja capaz de demonstrar, ou representar, características formadoras, ou pertencentes, a um objeto poderá vir a ser enquadrado como descritivo.
Atributos Nominativos
Engloba todos aqueles atributos que, além de cumprirem a função de descritivos, também servem como definidores de nomes ou rótulos de identificação aos objetos aos quais pertencem. Qualquer atributo que possa identificar um objeto, é chamado de Atributo Nominativo.
Atributos Referenciais
Os Atributos classificados como Referenciais são aqueles que não pertencem ao objeto onde estão alocados, mas fazem algum tipo de citação, ou ligação, desse objeto com um outro objeto.
Dicionarização dos Atributos
A Dicionarização dos Atributos identificados nos objetos por nós observados é, complementarmente à dicionarização dos próprios objetos e entidades, o únicomodo efetivo de caracterização do universo observado.
A Dicionarização deve procurar trazer ao conhecimento público toda e qualquer informação que seja de valia para o processo de compreensão e unificação de conceitos.
Relacionamentos
Identificação dos Relacionamentos
Através do mapeamento dos relacionamentos estaremos sendo capazes de demonstrar como um objeto se comporta em relação aos demais, qual seu grau de dependência de outros objetos, qual a associação de dados existentes entre eles, entre outros fatores. Devemos estar atentos para que o mapeamento desses relacionamentos possa agregar todas as características semânticas existentes em um certo tipo de associação.
Se um Relacionamento mapeado espelha a realidade, ele poderá envolver quaisquer tipos ou instâncias de objetos.
Dois tipos básicos de Relacionamentos:
Relacionamentos entre instâncias de objetos de diferentes tipos – associa instâncias de um objeto de um tipo a outras de outro tipo.
Relacionamentos entre instâncias de um mesmo tipo de objeto – esse tipo de relacionamento caracteriza um caso especial onde no papel de objetos formadores, ou participantes, do relacionamento encontraremos o mesmo tipo de objeto. 
Denominação dos Relacionamentos
No processo de reconhecimento e identificação dos relacionamentos existentes entre os objetos devemos buscar uma denominação que represente o conceito observado. Essa denominação será, do ponto de vista semântico e conceitual, extremamente importante para a correta construção do modelo.
Caracterização dos Relacionamentos
Um relacionamento demonstra uma associação entre objetos, de igual ou diferentes tipos. Esses Relacionamentos têm, todavia, características diversas que devem ser observadas e mapeadas.
A Caracterização dos Relacionamentos deverá ser feita baseada no atendimento de alguns requisitos:
Grau, ou Cardinalidade, do Relacionamento;
Número de elementos que participam do relacionamento;
Condição de participação dos elementos no relacionamento;
Condição de estabelecimento do relacionamento.
Grau de Cardinalidade do Relacionamento
Durante o processo de reconhecimento e entendimento de um relacionamento, estaremos sempre nos defrontando com regras de estabelecimento das associações entre os elementos, extraídas do próprio ambiente observado. Em muitos casos, uma regra que seja verdadeira em um ambiente X observado poderá não ser verdadeira em outro ambiente Y.
Processo para a Definição e Notação de um Relacionamento
Junto ao elemento que representa o relacionamento, estaremos representando o grau de associação, ou cardinalidade.
Possibilidades de Estabelecimento de Graus de relacionamento
Deveremos enquadrar os relacionamentos analisados em três grandes grupos, os quais, para fins de modelagem, cumprem a total finalidade de expressar a semântica de associação entre os elementos:
1:1 (Um para Um) – Um elemento do tipo A só se relaciona com um elemento do tipo B, e vive-versa;
1:N (Um para Muitos) – Apesar de um elemento do conjunto A poder se associar a N elementos do conjunto B, o contrário não é verdadeiro, cada elemento do conjunto B só poderá estar associado a um elemento do conjunto A; 
M:N (Muitos para Muitos) – Um elemento qualquer de um conjunto A pode se associar a nenhum, 1 ou vários elementos do conjunto B, e vice-versa.
Mudanças na Notação de Relacionamentos M:N
Algumas notações acabam por induzir o modelador para que, se o relacionamento for de grau 1:1 ou grau 1:N, seja utilizada uma representação e se o grau do relacionamento for M:N seja utilizada outra. Isso deve-se ao fato de essas notações estarem bastante orientadas aos modelos lógicos e não aos modelos conceituais.
Número de Elementos que participam do Relacionamento
Um Relacionamento pode se estabelecer entre dois ou mais elementos, e não somente, no máximo, dois elementos.
Em Relacionamentos Ternários, Quaternários ou de maiores graus podem estar mascarando um objeto não percebido, o qual concentra sobre si relacionamentos com os demais.
A estrutura necessária para a derivação de um relacionamento Ternário é a Agregação.
Presença dos Elementos no relacionamento
Outro tipo de conceito que deve ser manipulado quando se tratam os relacionamentos entre os objetos é a obrigatoriedade ou não da participação dos elementos nas associações passíveis de serem estabelecidas. Alguns elementos de um dado conjunto A podem não participar em nenhuma associação com elementos de um conjunto B. Do mesmo modo, qualquer um dos elementos do conjunto B pode não estabelecer associação com algum elemento do conjunto A.
Relacionamentos incondicionais
Nos Relacionamentos Incondicionais não será denotado nenhum tipo de opcionalidade quanto à participação de elementos nas associações. Nesse tipo de representação precisaremos de informações adicionais para reconhecer se o relacionamento sempre segue o grau descrito (1:1, 1:N, M:N), ou se, por omissão, existem regras de exceção não qualificadas.
Relacionamentos Condicionais
Nesse tipo de representação, estaremos, graficamente, demonstrando quando um ou outro elemento permite a ausência de associações.
Deveremos expandir o conceito de grau do relacionamento e pensar em dois tipos de grau: Mínimo e Máximo.
Grau Máximo é a determinação de relacionamentos como associações 1:1, 1:N e M:N. Ou seja, qual é o menor valor possível de participação dos elementos do conjunto A e B no relacionamento.
Quanto à Existência Simultânea de Relacionamentos
Essa característica leva-nos a uma situação na qual será preciso definir quando a existência de uma associação impacta ou impede a existência de outra.
Podemos caracterizar três tipos de associações entre objetos:
Relacionamentos Independentes – Agrupa todo e qualquer relacionamento que possa vir a ser estabelecido sem que haja necessidade de avaliação simultânea de outro relacionamento;
Relacionamentos Contingentes – Aqueles que, tendo dependência uns com os outros, impõem o estabelecimento simultâneo de associações entre os vários elementos envolvidos.
Relacionamentos Mutuamente Exclusivos – Se a associação de um elemento for estabelecida através de um dos relacionamentos, não poderá ser estabelecida pelos demais.
�
Quanto à Presença de Atributos
Durante o processo de modelagem, iremos nos defrontar com situações nas quais deveremos manipular informações (dados) que pertençam à associação dos objetos do ambiente observado. Isso fará com que seja necessário expandir nosso entendimento sobre o mapeamento de atributos e de relacionamentos.
 Classificação dos Relacionamentos:
Com Atributos – tem um nome, um significado, um grau mínimo e máximo, pode ser independente, contingente, mutuamente exclusivo, e adicionalmente, possui dados a serem manuseados.
Sem Atributos – se estabelece entre elementos de dois, ou mais, conjuntos e para o qual não são identificadas informações a serem mantidas ou mapeadas.
Mudanças na Representação em Função de Relacionamentos com Atributos
 
Outro motivo que tem levado os modeladores a já no nível conceitual terem de criar estruturas do tipo ‘Entidade’ para espelhar relacionamentos é o fato de o relacionamento conter atributos a serem mapeados.
Dicionarização de Relacionamentos
Para que realmente seja entendido o papel de um relacionamento, muitas vezes será necessário agregar algum tipo de informação adicional sobre o relacionamento estabelecido entre as entidades. O conhecimento da cardinalidade, utilizando-se graus mínimos e máximos, e a utilização de nomes significativos podem ajudar mas, freqüentemente, não são suficientes para o completo entendimento dos modelos.
Elementos de Caracterização Semântica Adicionais
Qualquer modelo poderia ser construído com um mínimo suficiente de semântica baseado nos conceitos de entidades, atributos e relacionamentos. Com o passar do tempo, novas característicassemânticas passaram a demonstrar ser necessárias para o completo entendimento dos modelos.
Estrutura de Generalização e Especificação
O principal objetivo do processo de abstração e identificação dos objetos é reconhecer agrupamentos e distinções entre conjuntos de objetos identificados. Entretanto, nem sempre a separação de instâncias desses objetos, ou elementos, se dará por conjuntos estritamente distintos.
Especializações Mutuamente Exclusivas (Categorias)
A partir da observação e identificação dos elementos e subconjuntos existentes em um conjunto, sempre que um elemento do conjunto global, pertencer a um dos subconjuntos, não poderá pertencer simultaneamente, a outro.
Especialização Não-mutuamente Exclusivas (Papéis)
Caracterizar, especificamente, se um elemento pertence a uma especificação com ou sem exclusividade deverá ser o objetivo do processo de investigação das regras estabelecidas pelo ambiente.
Níveis de Especialização
Uma característica, que podemos encontrar, quanto à formação de subconjuntos especializados, é a da existência de diferentes níveis de agrupamento. Partindo de um conjunto global, poderemos estabelecer um primeiro nível de subconjuntos e, dentro desses, voltar a estabelecer novos subconjuntos.
Quando Utilizar a Estrutura de Generalização-Especialização
Como regras práticas para definir se uma especialização deve ou não ser explicitada no modelo, devemos avaliar os seguintes passos:
Regra 1: Existe algum atributo que seja aplicável a somente um subconjunto de elementos e não a todos? Se sim, então é desejável a criação da especialização.
Regra 2: Existe algum relacionamento que seja aplicável a somente um subconjuntos de elementos e não a todos? Se sim, então é desejável a criação da especialização.
Regra 3: Não estaremos ‘poluindo’ o modelo com a inserção de detalhes desnecessários? Não, não estaremos. Então é possível a criação da especialização.
Regra 4: A finalidade de nosso modelo é procurar incorporar o máximo de elementos gráficos para que a compreensão não dependa de análise de elementos complementares, tais como dicionário de dados, documentos, anexos? Sim, é. Então, é possível a criação da especialização.
Essas regras nos levam a ter duas situações distintas:
A especialização deverá ser explicitada;
A especialização pode ser explicitada.
Como Apresentar os Subgrupos Existentes
Uma habilidade está disponível para ser utilizado junto á estrutura de Generalização-Especialização: a definição dos critérios. A partir desse critério teremos, então , a formação dos subgrupos pela divisão dos elementos pertencentes ao conjunto global.
Utilizando a Estrutura de Gen-Espec em Auto-Relacionamentos
A utilização da estrutura de Generalização-Especialização pode ser um recurso bastante interessante para acrescentar semântica ao casos de auto-relacionamento. Um auto-relacionamento se dá quando diferentes instâncias de um mesmo tipo de objeto se relacionam entre si.
�
Modelo Lógico de Dados (MLD)
Passos para a Derivação do Modelo Lógico
Vimos que a geração de um modelo lógico deveria ser antecedida pela obtenção de um modelo conceitual. A grande vantagem dessa proposta, é que a partir do modelo conceitual gerado, podemos aplicar regras predefinidas em função da tecnologia a ser empregada e , assim, obter os modelos necessários.
Podemos definir que o processo de obtenção de um modelo lógico a partir de um modelo conceitual segue os seguintes passos:
Obter o modelo conceitual;
Definir o tipo de implementação;
Aplicar as regras de derivação específicas;
Adaptar o modelo às necessidades.
Adaptações no Modelo Lógico Derivado
Visa a criar estruturas de implementação que atendam às reais expectativas das aplicações.
Conceitos Utilizados na Derivação de Modelos Relacionais
A visão básica estabelecida era de que registros de um arquivo assemelhavam-se a tuplas de uma relação. Uma relação, por sua vez, assemelhava-se a uma arquivo onde cada uma de suas tuplas, contendo elementos de domínios distintos, agregados de forma predefinida, podia ser entendida com um registro e seus campos.
Implementação do Modelo Relacional
Conceitos
Chave Candidata e Chave Primária – A Não-existência de elementos repetidos em uma tabela é uma necessidade básica a ser cumprida para o estabelecimento de um modelo relacional realmente aderente aos conceitos de ‘relação’, foi introduzido o conceito de Chave Identificadora da tabela.
Identificar domínios nos quais sabemos que a existência de valores instanciados não será repetida, podemos eleger esses domínios, ou colunas, como Candidatas a Chave.
Basta que exista mais de um domínio que apresente a característica de não repetir seus valores durante as instanciações para todas as linhas da tabela. Dentre essas várias colunas deveremos escolher uma e elege-la como Chave Identificadora ou Chave Primária.
Chave Estrangeira – Uma Chave Estrangeira recebe esse nome para denotar algumas características importantes:
Ela é uma chave, portanto, identifica de modo único uma tupla;
Ela não está em seu local original, mas sim em um local para onde foi migrada;
Ela tem um local de origem e lá possui suas características originais (é uma chave primária).
Uma Chave Estrangeira é uma chave primária de uma tabela que aparece repetida em outra.
Domínios de Atributos – Existe um conjunto de valores distintos que podem ser atribuídos a uma coluna. Entretanto, sabemos que pela diferente natureza de cada uma das colunas poderemos ter diferentes valores sendo válidos às instanciações.
Regras de Derivação
O processo de obtenção de um modelo relacional é baseado na execução de três atividades distintas:
Normalização das Estruturas de Dados;
A Derivação de Estruturas de Agregação e Generalização-Especialização;
A Derivação de Relacionamentos.
Normalização
Quando os pontos passam a estar claros, aí então passamos a efetivamente encarar o processo de normalização como uma alavanca para o processo de construção de banco de dados.
A Normalização não é um processo com finalidade restritiva mas sim com caráter organizativo.
A Normalização pode ocorrer em três instantes distintivos:
Durante o processo de concepção do modelo conceitual;
Durante a derivação do modelo lógico;
Após a derivação do modelo lógico.
Normalização durante o processo de concepção do Modelo Conceitual
O grau de normalização que ele pode apresentar dependerá de vários fatores como, por exemplo:
Abrangência do Modelo – Quanto mais abrangente for um modelo, mais chances, caso ele tenha sido adequadamente concebido, haverá de que ele tenha um baixo grau de normalização.
Facilidade de abstração e compreensão – O correto entendimento dos elementos presentes em um ambiente a ser modelado poderá nos levar mais facilmente à concepção de um modelo normalizado.
Conhecimento prévio do ambiente – O fato de que já temos conhecimento prévio do ambiente a ser modelado, e assim do próprio resultado a ser obtido, tanto no nível conceitual como no nível lógico, nos introduzirá a previamente enxergar o ambiente de modo normalizado.
Normalização durante a derivação do Modelo Lógico
Caso tenha concebido seu modelo conceitual e agora pretenda transforma-lo em um ambiente lógico para implementação em ambiente relacional, você deverá ter certeza de que ele respeita os preceitos da tecnologia relacional.
Normalização após o Processo de Derivação do Modelo Lógico
Caso você execute o processo de normalização em um dos outros dois instantes, acabará por criar tabelas cuja estrutura não está normalizada, o que resultará em deficiências e anomalias de projeto que, mais cedo ou mais tarde, terão de sofrer os ajustes necessários.
Benefícios da Normalização
Estabilidade do Modelo Lógico – Por estabilidade entendemos a capacidade de um modelo manter-se inalterado face a mudanças que venhama ser percebidas ou introduzidas no ambiente que tenha sido modelado.
Flexibilidade – Tanto de processos como de utilização de estruturas de dados. Capacidade de adaptação a demandas diferenciadas, a expansão e redução, a omissão ou presença, etc.
Integridade – As estruturas de dados obtidas pelo processo de modelagem necessitam de recursos para que os dados a serem nelas armazenados possam ter ‘qualidade’.
Economia – O aspecto economia, quando se aborda o tema normalização, tem sido visto, basicamente, sob o prisma da economia de espaço para armazenamento.
Fidelidade ao Ambiente Observado – Representação de um ambiente observado, através de um modelo, deve procurar retratar, independentemente do grau de abstração, as características observadas, assim como elas efetivamente são.
Primeira Forma Normal (1FN)
A definição para a primeira forma normal, assim como para as demais, é bastante formal e rigorosa. Não poderia e nem deveria ser diferente. Como esses processos agem sobre estruturas relacionais e foram definidas por pessoas ligadas ao ambiente matemático, herdaram predominantemente o formalismo presente nessas áreas. Isso é bom, por certo lado, pois torna inequívoca sua interpretação. Entretanto por outro lado, temos percebido que boa parte da dificuldade de entendimento, no que diz respeito a formas normais, advém, justamente de dificuldade em “traduzir o formalismo para termos do dia-a-dia”.
Definição da Primeira Forma Normal
Diz-se que um modelo está na primeira forma normal se:
Está integrado por tabela;
As linhas da tabela são unívocas;
As linhas não contêm itens repetitivos;
Os atributos são atômicos;
Os atributos não contêm valores nulos.
“... As linhas da tabela são unívocas”
Também quando mostramos os conceitos envolvidos no ambiente relacional, falamos sobre a obtenção de identificadores únicos para uma tabela visando assegurar a diferenciação entre duas linhas de uma tabela.
 “... As linhas não contêm itens repetitivos”
Grupos repetitivos são estruturas de dados artificiais (vetores) criadas para facilitar o manuseio de ocorrências repetitivas de elementos de dados.
“... Os atributos são atômicos”
Estruturas de agrupamento de itens de dados tornaram-se bastante comuns junto à linguagem tais como o COBOL.
“... Os atributos não contêm valores nulos”
A definição da 1FN impondo a não existência de valores nulos era historicamente, uma restrição bastante clara. Seguindo-se definição formal de uma relação não deveríamos, realmente, ter um domínio sem instanciação de valor.
Do ponto de vista prático atual, não há mais restrição quanto à existência de valores nulos em colunas de uma tabela para que ela esteja na primeira forma normal (1FN).
Processo para obtenção da Primeira Forma Normal (1FN)
Definir chaves candidatas e escolher a chave primária da tabela
Esse passo que em um primeiro instante parece trivial, pode nos levar a uma série de considerações de ordem prática. Em princípio, a escolha da chave da tabela deve ser feita observando-se os atributos existentes na tabela e escolhendo-se um ou mais deles para que concatenados possam servir como meio de diferenciação entre luma linha e outra (função básica da chave primária).
Transformar atributos compostos em atômicos
Esse passo é bastante simples e implica poucas decisões. Atributos compostos, que claramente 
tenham elementos distintos em sua estrutura, deverão ser separadas.
Em cada tabela eliminar grupos repetitivos gerando novas tabelas, uma para cada ocorrência de Item 
Repetitivo, mantendo os valores dos demais itens
 
A execução dessa atividade, isoladamente, poderá nos parecer bastante estranha. Ao olharmos a
Estrutura tabular que temos antes e depois dessa atividade, seremos levados a acreditar que tínhamos antes uma estrutura bem melhor do que depois de sua execução.
Segunda Forma Normal (2FN)
O intuito da segunda forma normal (2FN) é avançar, ainda mais na direção de uma estrutura de dados que não contenha anomalias. Poderão existir casos onde somente aplicando-se as regras da primeira forma normal já venhamos a obter uma estrutura acabada. O que isso significa? Que na verdade, nossa tabela já está normalizada, naturalmente, nas segunda e terceira formas normais. Para constatar isso, teremos de tentar aplicar regras da segunda e terceira formas normais da tabela. Se verificarmos que não existem as características indicadas pela segunda e terceira forma normais da tabela, então teremos comprovado sua normalização natural. Muitas vezes bastará que tenhamos aplicado as regras da segunda forma normal sobre uma tabela para que ela também já esteja normalizada na terceira forma normal.
Processo para obtenção da Segunda Forma Normal (2FN)
Definir as colunas que não participaram da chave primária da tabela;
Para cada uma das colunas identificadas, analisar se seu valor é determinado por parte ou pela totalidade da chave;
Para as colunas dependentes parcialmente da chave
Criar novas tabelas onde a chave primária será a coluna da chave original que determinou o valor da coluna;
Excluir da tabela original as colunas dependentes parcialmente da chave.
Terceira Forma Normal (3FN)
Visando a transformar a estrutura de dados obtidas até a segunda forma normal em uma estrutura isenta das anomalias constatadas, deveremos buscar a terceira forma normal.
Definição da Terceira Forma Normal
Uma tabela está na terceira forma normal se está na 2FN, e se nenhuma coluna não pertencente à chave fica determinada transitivamente por esta.
Processo para obtenção da Terceira Forma Normal (3FN)
Identificar as colunas que não participam da chave primária da tabela;
Para cada uma das colunas identificadas, analisar se seu valor é determinado por alguma outra coluna não pertencente à chave;
Para as colunas dependentes transitivamente da chave:
Criar novas tabelas onde a chave primária será a coluna que determinou o valor da coluna analisada. Agregar a essas tabelas as colunas dependentes transitivamente.
Excluir da tabela de origem as colunas dependentes transitivamente das chaves mantendo, porém, a coluna determinante da transitividade na tabela.
Derivação de Relacionamentos
O tratamento dos relacionamentos, estruturas de Generalização-Especialização e agregação também deverá ser feito durante o processo de derivação.
Relacionamento 1:1 sem Atributos
O caso mais elementar de relacionamento entre duas entidades é o de cardinalidade 1:1. Dentro desse tipo de relacionamento, por sua vez, o caso mais freqüente de ser encontrado é o de relacionamento 1:1 sem atributos.
Relacionamento 1:1 com Atributos
A existência de relacionamentos 1:1 com atributos não é algo muito comum. Poderíamos até dizer que é, realmente, um rigor extremo do projeto conceitual. Entretanto, como no nível conceitual eles poderão existir, apresentando 3 métodos para deriva-los.
Relacionamentos M:N com ou sem Atributos
Para a derivação dos relacionamentos M:N, independentemente da existência ou não de atributos nesse relacionamento, deveremos aplicar uma mesma estratégia. Essa estratégia será baseada no fato de que se um relacionamento M:N representa a interseção dos elementos de um conjunto A com um conjunto B, então deveremos representar fisicamente os possíveis pares formados pela agregação dos elementos de A e B.
Derivação de Estruturas de Generalização-Especificação 
O processo de derivação de uma estrutura de Generalização-Especificação não nos levará diretamente a um modelo lógico para a implementação. Ele na verdade, nos fornecerá um novo modelo conceitual simplificado onde a estrutura, antes existente, será substituída, simplesmente, por entidades e relacionamentos comuns. Estaremos substituindo a notação especialutilizada para representar essa estrutura por elementos comuns (entidade e relacionamentos) e, após isso, aplicando sobre eles as mesmas regras de derivação já vistas. A partir desse ponto teremos obtido os elementos lógicos resultantes da derivação.
Durante o processo de derivação, poderemos adotar quatro diferentes estratégias para tratar essas estruturas:
Criar uma tabela para a entidade generalizada e uma tabela para cada entidade especializada;
Criar somente uma tabela para a entidade generalizada e migrar todos os atributos e relacionamentos especializados para esta tabela;
Criar somente tabelas para as entidades especializadas e migrar todos os atributos e relacionamentos generalizados para cada uma dessas tabelas;
Utilizar as estratégias 3 e 4 de maneira combinada, migrando atributos e relacionamentos das entidades especializadas para entidade generalizada e/ou vice-versa.
Derivação de Agregações
A agregação foi um elemento introduzindo no modelo conceitual para representar de modo mais claro uma relação não-binária. O resultado obtido foi um elemento com características de entidade e de relacionamento simultaneamente. Para deriva-lo iremos tratar primeiramente seu aspecto ligado ao relacionamento e, depois, o aspecto ligado à entidade.
Restrições no Modelo Lógico
O assunto “restrição” será tratado sob três aspectos bastante distintos. São eles:
Restrições de Domínio;
Restrições de Integridade;
Restrições de Implementações;
Restrições de Domínio
A preocupação com restrições de domínios, para colunas de uma tabela, é um trabalho final executado durante a fase de definição dessas tabelas através da linguagem DDL de um SGBD específico.
Dentre as restrições de domínio que devemos tratar estão:
O tipo de dado da coluna;
O tipo de representação interna escolhida para o dado;
As características conceituais de presença ou não desse dado;
A especificação explícita de intervalos para domínios contínuos;
A especificação explícita de um conjunto de valores par domínios discretos;
A definição de alguns tipos especiais de dados.
Restrições de Integridade
O aspecto relativo à restrições de integridade não afetará diretamente a atribuição de valores isoladamente em uma linha de uma coluna. Normalmente estará envolvendo diferentes linhas da mesma tabela ou de tabelas diferentes. Em alguns casos terá a função de estabelecer (implementar) no modelo lógico algumas das restrições tecnológicas do modelo relacional e outras vezes, simplesmente, terá a função de manter a integridade (fidelidade,correteza, coesão, etc...) entre os dados armazenados no banco de dados.
Dentre as restrições de integridade que devemos tratar estão:
A definição de unicidade de valores em certas colunas das tabelas
A restrição de referência de uma chave estrangeira a um valor de chave primária inexistente;
A restrição de referência de uma chave estrangeira a uma coluna ou composição de colunas, de uma chave primária inexistente;
A referência de uma chave estrangeira a uma tabela inexistente;
A exclusão de ocorrências (tuplas) em modo cascata em estruturas tipo “ hierarquia” ;
A alteração de ocorrências (tuplas) em modo cascata em estruturas do tipo “ hierarquia” ;
A manutenção de sincronismo entre tabela e os índices da tabela.
Restrições de Implementação
O tratamento das restrições de implementação deverá ocorrer já durante a fase de derivação de modelo lógico. As decisões sobre quais estratégias utilizar durante o processo de derivação de relacionamentos e das estruturas de agregação e generalização-especialização dependerão das restrições de implementação impostas pelo SGBD que se esteja utilizando.
Dentre as restrições de implementação que possivelmente serão encontradas estão:
A existência de itens de repetição;
Implementação direta ou manuseio transparente de estruturas de generalização-especialização.
Objetos básicos de um SGBDR
Tabela. 
Índice.
View.
Stored Procedure.
Trigger.
Tabela ou Relação: Uma representação lógica da organização dos dados dentro do SGBDR. É uma tabela de valores, o seu nome e o nome das colunas, servem para auxiliar a interpretação do significado de seus valores.
Valor : É usado para representar 'alguma coisa'. É a menor partícula de dados do modelo relacional, eles são indivisíveis. 
Domínio : É um conjunto de valores atômicos, de mesmo tipo. São usados para preencher os valores de uma coluna.
 ex: Nome char(40) : restringe a coluna Nome a ter seus valores dentro do domínio de no máximo 40 caracteres ou seja um nome de 50 caracteres não é um nome válido para este domínio.
Linha ou Tupla : Representa uma linha da tabela, onde cada linha, representa uma coleção de valores.
 
MATRICULA
NOME
SALARIO
01
Zé
200,00
02
Maria
1000,00
03
João
800,00
04
Margarida
150,00
...
Conceitos de Chave:
Primary Key (PK) :Atributo ou conjunto de atributos de uma tabela que identificam univocamente uma linha. Toda Primary key deve ser minimal.
Foreign Key (FK) : Atributo ou conjunto de atributos de uma tabela que referencia a chave primária em outra tabela, ou no caso do auto relacionamento, na mesma tabela.
 Unique Key(UK) : Atributo de uma tabela que tem todas as qualificações para ser uma chave primária.
OBS. Muitos autores representa a chave primária de uma tabela com as colunas sublinhadas, e as chaves estrangeiras com uma linha acima das colunas.
Ex: FUNCIONARIOS(MATRICULA , NOME , SALARIO , CPF , DEPTO) 
Ex:
FUNCIONARIOS
MATRICULA
NOME
SALARIO
CPF
DEPTO
01
Zé
200,00
12999666
01
02
Maria
1000,00
18765789
02
03
João
800,00
49555969
02
04
Margarida
150,00
89993393
01
...
DEPARTAMENTOS
DEPTO
DESCRICAO
01
Recursos Humanos
02
Diretoria
Índices : É um conjunto de colunas da tabela, que são ordenadas visando uma maior performance nas consultas. 
OBS: O Banco de Dados Relacional permite a recuperação de um valor de qualquer coluna, independente da existência de índices para a coluna.
View : Restringe o acesso do usuário aos dados.
Ex: Pode-se restringir o acesso do usuário a coluna de SALARIO.
FUNCIONATIOS_V01
MATRICULA
NOME
CPF
DEPTO
01
Zé
12999666
01
02
Maria
18765789
02
03
João
49555969
02
04
Margarida
89993393
01
...
Stored Procedure : Um programa escrito em SQL que pode ser executado por uma aplicação, a diferença é que o processamento será executado no servidor.
Trigger: Um programa escrito em SQL que está obrigatoriamente associado a pelo menos um evento(insersão, alteração ou exclusão de linhas) em uma tabela, e será executado de acordo com este evento. O trigger é usado para implementar restrições de integridade.
�
Modelo de Entidades e Relacionamentos (ER).
Entidade 
Representa um objeto ou um conceito do mundo real.
Ex: Aluno , disciplina , curso , funcionário e etc...
Representação gráfica:
 
Atributo – Representa uma característica da entidade, uma informação sobre a entidade.
	Ex: No caso de uma entidade ‘aluno’, podemos citar como atributo a sua matrícula , nome , endereço e outros.
Tipos de Atributo:
Atributos Identificadores : Deve ser capaz de identificar univocamente uma instância da entidade.
 	Ex: Para a Faculdade, a matrícula do aluno é capaz de identificá-lo.
 Representação gráfica:
Atributos Simples : Apenas uma característica ou informação da entidade.
 Ex: O nome de um aluno é uma informação útil.
Representação gráfica:
 
Relacionamento 
 Representa um relacionamento entre duas entidades.
Ex: O histórico escolar relaciona as disciplinas cursadas com o aluno.
Representação gráfica:Cardinalidade
 Representa quantas vezes uma entidade pode se relacionar com a outra. 
OBS. Podemos indicar numericamente o mínimo e o máximo de vezes que uma entidade pode se relacionar com a outra.. 
Generalização / Especialização : 
É quando temos duas ou mais entidades com alguns atributos em comum e outros não. Na especialização os filhos devem ter o mesmo identificador do pai.
A especialização pode ser ({Total|Parcial},{Exclusiva,Superposição})
Total : Quando todos os elementos da entidade pai, deve obrigatoriamente existir em pelo menos uma entidade filha.
Parcial : Quando pode existir elementos na entidade pai e não existir nas entidades filhas.
Exclusiva : Quando um elemento de uma especialização não pode existir em outra entidade do mesmo nível.
Sobreposição : Quando um elemento de uma especialização pode existir em outra entidade do mesmo nível.
Entidade Fraca 
 O conceito de entidade fraca é quando uma entidade precisa do identificador de outra entidade para ajudar a se identificar.
Ex:
Importante : Uma entidade fraca TEM que se relacionar com a entidade forte no mínimo uma vez e no máximo uma vez
 
Agregação : 
É quando há a necessidade de ligar um relacionamento a outro relacionamento.
Ex:
ou
�
Regras de conversão do Modelo Conceitual (E-R) para o Modelo Lógico.
Nesta fase devemos identificar como tipo de colunas apenas os tipos genéricos, deixando para se preocupar com os tipos mais específico de dados no projeto físico, a não ser que o SGBD já tenha sido escolhido.
Ex: char(n),Int, Datetime , etc...
 
Entidade 
 Toda entidade vira tabela e seu(s) atributo(s) identificadores formará a chave primária (PK).
Aluno(Matricula, Nome, Endereco)
Aluno
Matricula
Nome
Eendereco
Entidade Fraca 
A entidade fraca vira tabela e carrega o atributo identificador da entidade forte. A chave primária(PK) é formada concatenando-se o atributo identificador da entidade forte com o seu atributo identificador.
Apartamento(Endereco, NumeroApartamento, QtdQuartos)
Apartamento
Endereco
NumeroApartamento
QtdQuartos
Relacionamentos
Cardinalidade 1:N : A tabela cujo a conectividade é N carregará o identificador da entidade onde a conectividade é 1 e formará uma chave estrangeira(FK).
Obs. Caso o relacionamento tenha um mínimo 1, basta definir a FK não permitindo valores nulos.
Cardinalidade 1:1 : A tabela que conter o menor número de linhas carregará o identificador da entidade onde conter o maior número de linhas e formará uma chave estrangeira(FK), nesta chave estrangeira deve ser criado um índice único(será visto mais tarde em Projeto Físico ).
Cardinalidade N:N : O relacionamento transforma-se em tabela, carregando os identificadores das entidades que ele relaciona. Esses identificadores concatenados, formarão a chave primária(PK), e cada um dos identificadores separadamente serão chaves estrangeiras(FKs) para suas entidades/tabelas de origem.
Obs. Caso o relacionamento seja com repetição, ele terá obrigatoriamente atributo identificador, neste caso, este atributo também fará parte da PK.
Especialização
Segue a regra para entidade, ou seja, vira tabela com as entidades filhas carregando a PK da entidade pai, sendo que a PK da entidade filha é uma FK para entidade pai.
OBS: No caso da especialização é preciso analisar caso a caso.
O caso mais genérico é transformar todas as entidades, pais e filhas em tabelas.
Obs. No caso da especialização Total e Exclusiva pode-se colocar um campo a mais na entidade pai para saber em qual das filhas ela se encontra.
Porém a duas outras maneiras de se implementar:
No caso da especialização ser Total e Exclusiva e somente neste caso, poderemos transformar apenas as entidades filhas em tabelas.
A ultima opção é transformar tudo em apenas uma tabela, porém o caso mais recomendado é o da especialização Parcial com Superposição.
Agregação
No caso da Agregação, terá de um lado do relacionamento uma entidade, e do outro lado, outro relacionamento. Neste caso deveremos tratar o relacionamento da ponta, como se fosse uma entidade.
Algebra Relacional 
A álgebra relacional é um conjunto de operações de manipulação de tabela, e seu resultado é sempre uma tabela.
Podemos dizer que existem dois grupos de operações algébricas:
Operações tradicionais derivadas da teoria matemática dos conjuntos (união, interseção, diferença e produto cartesiano).
Operações relacionais especiais (restrição ou seleção, projeção, junção e divisão)
Operações tradicionais
A B
União
A U B = 
A ( B = 
A – B = 
A * B = 
Operações relacionais especiais:
Seleção : Seleciona todas as linhas de uma tabela que satisfaz alguma condição de seleção.
Ex. Conjunto de alunos onde nome = ‘Zé’ .
Projeção : Produz um resultado contendo um ou mais atributos da tabela, eliminando as linhas duplicadas.
Junção : Junta duas ou mais tabelas através de um campo em comum.(A junção é quase sempre feita igualando uma FK com uma PK).
Obs. A junção é o resultado de um produto cartesiano com uma seleção.
Divisão : Seguindo um ER onde temos Alunos , Historico e Disciplinas. Podemos dizer que Alunos / Disciplinas são todos os alunos que se relacionam por histórico com todas as disciplinas. Ou seja os alunos que já se formaram.
�
Linguagem SQL.
�
Introdução ao SQL
A linguagem SQL é subdividida em várias sub-linguagens.
Através do comando select é implementado todas as operações algébricas.
Sintaxe básica para o comando select.
select [distinct] campo1,campo2,campo3
from tabela1[, tabela2, tabela3...]
[where condição] 
onde:
distinct : Serve para eliminar as linhas redundantes
condição : Qualquer condição de seleção para restringir o resultado final.
Ex1.
select NOME 
from ALUNOS
where ID_CURSO = 2
Este comando simples utiliza a operação algébrica da seleção, reparem que é feito uma seleção para o nome dos alunos apenas com o ID_CURSO = 2. O resultado deste comando será o conjunto de todos os alunos que estão matriculados no curso 2.
Ex2.
select ALUNOS.NOME , CURSO.NOME
from ALUNOS , CURSOS
where ALUNOS.ID_CURSO = CURSOS.ID_CURSO
xe "Introdução ao SQL"
Comandos SQL realizam tarefas como:
pesquisar dados
inserir, alterar e apagar linhas em uma tabela
criar, modificar e apagar objetos do Banco de Dados
controlar acesso para Banco de Dados e objetos do Banco de Dados
garantir a consistência do banco de dados
SQL*Plusxe "SQL*Plus"
SQL*Plus é uma interface na qual os comandos SQL podem ser entendidos e executados. 
Comandos SQL*Plus são feitos no prompt do SQL>, eles não entram no buffer.
Comando
Descrição
SAVE arquivo
permite o corrente contexto do SQL buffer ser salvo em um arquivo
GET arquivo
chama texto previamente salvo
START arquivo
executa um comando previamente salvo em um arquivo. Comandos de arquivo são discutidos na Unidade 10
ED arquivo
usa editor padrão em ordem para edição do arquivo salvo.
SPOOL arquivo
escreve todos os comandos subsequentes de saída no arquivo nomeado. O arquivo SPOOL é estendido por .LIS (LST em algum sistemas)
SPO(OL) OFF/OUT
OFF fecha o arquivo SPOOL e OUT fecha o arquivo SPOOL e emite o arquivo para impressora.
DESC(RIBE) tabelamostra a estrutura de uma tabela.
HELP
invoca o interno sistema de ajuda ORACLE
$O/S comando
invoca um comando do sistema operacional.
HOST comando
mesma função acima
CONN(ECT) usuário/senha
Invoca outro usuário ORACLE
EXIT
sai SQL*Plus
PROMPT texto
mostra o texto quando executa o comando arquivo.
;
mostra o texto que está no buffer.
/
Executa o texto que está no buffer.
EXEC
Executa um simples comando SQL como por exemplo uma stored procedure.
�
PL/SQL
É uma linguagem de programação sofisticada que permite processar códigos diretamente no servidor, tornando o acesso rápido e eficiente. 
Procedimentos compatíveis:
declaração de variáveis.
tarefas (X := Y + Z)
controles condicionais (IF, THEN, ELSE, ELSIF, GOTO)
Loop (FOR, WHILE, EXIT, WHEN)
manuseio de exceções (exception)
Sintaxe de um bloco PL/SQL:
DECLARE
 Procedure
Área de declaração de variáveis
 Procedure
BEGIN
 Procedure
 SQL
 Procedure
 SQL
Comandos
END
Alguns Comandos SQL:
SELECT
Esse é o comando mais comum, usado para retirar dados de uma Tabela
INSERT
UPDATE
DELETE
São os comandos usados para o preenchimento de novas linhas, modificando linhas existentes e removendo linhas não desejadas das tabelas.
CREATE
ALTER
DROP
São usados dinamicamente para configurar, modificar e remover várias estruturas de dados como: tabelas, visões, índices. 
GRANT
REVOKE
Usados para dar ou remover privilégios e direitos de acesso de um usuário ou grupo de usuários ao Banco de Dados ORACLE e às estruturas dentro dele.
SELECT
SELECT * (asterisco seleciona todos os campos)
 FROM EMP(nome da tabela)
Exemplo 1:
SELECT SELECT EMPNO, ENAME,MGR
FROM EMP;
Resultado da pesquisa:
EMPNO
ENAME
MGR
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
7902
7698
7698
7839
7698
7839
7839
7566
7698
7788
7698
7566
7782
Exemplo 2: 
SELECT * FROM EMP;
EMPNO
ENAME
JOB
MGR
HIREDATE
MGR SAL
COMM
DEPTNO
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDEN
SALESMAN
CLERK
CLERK
ANALYST
CLERK
7902
7698
7698
7839
7698
7839
7839
7566
7698
7788
7698
7566
7782
17/12/80
20/02/81
22/02/81
02/04/81
28/09/81
01/05/81
09/06/81
19/04/87
17/11/81
08/09/81
23/05/87
03/12/81
03/12/81
23/01/82
7902
7698
7698
7839
7698
7839
7839
7566
7698
7788
7698
7566
7782
 300
 500
 1400
 0
20
30
30
20
30
30
10
20
10
30
20
30
20
10
Expressões Aritméticas
Expressões Aritméticas podem conter nome de colunas, valores numéricos, constantes e operadores aritméticos:
Operadores
Descrições
+
Adição
-
Subtração
*
Multiplicação
/
Divisão
Exemplo:
SELECT	ENAME, SAL*12, COM
FROM		EMP;
ENAME
SAL*12
COMM
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
9600
 19200
 15000
 35700
 15000
 34200
 29400
 36000
 60000
 18000
 13200
 11400
 36000
 15600
 300
 500
 1400
 0
A prioridade é *,/, então +,-. No exemplo seguinte a multiplicação (250*12) é avaliada primeiro; então o valor do salário é adicionado no resultado da multiplicação (3000). 
Exemplo:
Select NOME, sal + 250 * 12
from emp;
ENAME
SAL+250*12
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
3800
4600
4250
5975
4250
5850
5450
6000
8000
4500
4100
3950
6000
4300
Parênteses podem ser usados para especificar a ordem na qual serão executados es operadores, se, por exemplo, a adição e requerida antes da multiplicação.
Exemplo:
Select NOME, (sal + 250) * 12
from emp;
ENAME
(sal + 250) * 12
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
12600
22200
18000
38700
18000
37200
32400
39000
63000
21000
16200
14400
39000
18600
Colunas Sinônimas
Quando mostramos o resultado de uma pesquisa, o SQL*Plus normalmente usa-se o nome das colunas selecionadas como cabeçalho. Você pode modificar o cabeçalho de uma coluna usando sinônimos(alias).
Exemplo:
SELECT SAL*12 GANHO_ANUAL, COMM
FROM EMP;
GANHO_ANUAL
COMM
 9600
 19200
 15000
 35700
 15000
 34200
 29400
 36000
 60000
 18000
 13200
 11400
 36000
 15600
 300
 500
 1400
 0
Operador de Concatenação
O Operador de Concatenação (||) permite que as colunas sejam juntadas com outras colunas, expressões aritméticas ou valores constantes para criar uma expressão alfanumérica. 
Para combinar COD e NOME e obter o sinônimo EMPREGADO, observe o exemplo abaixo:
Exemplo:
SELECT	EMPNO||ENAME EMPREGADO
FROM		EMP;
EMPREGADO
7369SMITH
7499ALLEN
7521WARD
7566JONES
7654MARTIN
7698BLAKE
7782CLARK
7788SCOTT
7839KING
7844TURNER
7876ADAMS
7900JAMES
7902FORD
7934MILLER
Literais
Literais são um ou mais caracteres, expressões ou números, incluídos na lista do SELECT.
Um literal na lista do SELECT terá uma saída para cada linha retornada. Literais de livre formatos de textos podem ser incluídos no resultado da pesquisa e são tratados como uma coluna na lista do SELECT.
Datas e caracteres alfanuméricos devem ser colocados entre aspas simples(‘); números não precisam de aspas simples.
As declarações seguintes contém literais selecionados com concatenação e colunas sinônimas.
Exemplo:
SELECT EMPNO||'-'||ENAME EMPREGADO, 'WORKS IN DEPARTMENT', DEPTNO
FROM		EMP;
EMPREGADO
'WORKS IN DEPARTMENT'
DEPTNO
7369-SMITH 
7499-ALLEN 
7521-WARD 
7566-JONES 
7654-MARTIN 
7698-BLAKE 
7782-CLARK 
7788-SCOTT 
7839-KING 
7844-TURNER 
7876-ADAMS 
7900-JAMES 
7902-FORD 
7934-MILLER
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
WORKS IN DEPARTMENT
20
30
30
20
30
30
10
20
10
30
20
30
20
10
Manuseando Valores Nulos
Um valor nulo é um valor indisponível e desconhecido. O valor nulo não é zero. Zero é um número.
Se algum valor de uma coluna em uma expressão for nulo, o resultado será nulo. 
Exemplo:
SELECT ENAME, SAL*12+COMM GANHO_ANUAL
FROM EMP;
ENAME
GANHO_ANUAL
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
 19500
 15500
 16400
 18000
Na ordem para realizar o resultado para todos os empregados, é necessário converter os valores nulos para numéricos. Nós usamos a função NVL para converter valores nulos para não nulos.
NVL conta com dois argumentos:
1- umaexpressão
2- um valor que será retornado caso o valor do primeiro argumento for nulo.
Note que você pode usar a função NVL para converter qualquer tipo de valor nulo.
NVL(COLUNA_DATA_NULA,’30-OCT-74’)
NVL(COLUNA_NUMÉRICA_NULA,21)
NVL(COLUNA_ALFANUMÉRICA_NULA,’QUALQUER VALOR’)
Prevenindo a Seleção de Linhas Duplicadas – Cláusula Distinct
Para eliminar valores duplicados no resultado, incluímos o DISTINCT 
Exemplo sem a clausula distinct: 		Para eliminar os valores Duplicados:
SELECT DEPTNO				SELECT DISTINCT DEPTNO
FROM EMP;	 				FROM	 EMP;
DEPTNO					DEPTNO	
 20						 10		
 30						 20		
 30						 30
 20
 30
 30
 10
 20
 10
 30
 20
 30
 20
 10 
Várias colunas podem ser especificadas depois do DISTINCT 
Exemplo:
SELECT DISTINCT DEPTNO, JOB
FROM		EMP;
DEPTNO JOB
------- ---------
 10 	 CLERK
 10 	 MANAGER
 10 	 PRESIDENT
 20 	 ANALYST
 20 	 CLERK
 20 	 MANAGER
 30 	 CLERK
 30 	 MANAGER
 30 	 SALESMAN
A clausula ORDER BY
A clausula ORDER BY pode ser usada para ordenar as linhas. Se usado, o ORDER BY deve ser a última clausula da declaração SELECT.
Para ordenar pelo NOME, faça:
Exemplo:
SELECT	ENAME, JOB, SAL*12, DEPTNO
FROM		EMP
ORDER BY ENAME;
ENAME
JOB
SAL*12
DEPTNO
ADAMS 
ALLEN 
BLAKE 
CLARK 
FORD 
JAMES 
JONES 
KING 
MARTIN
MILLER
SCOTT 
SMITH 
TURNER
WARD
CLERK 
SALESMAN 
MANAGER 
MANAGER 
ANALYST 
CLERK 
MANAGER 
PRESIDENT 
SALESMAN 
CLERK 
ANALYST 
CLERK 
SALESMAN 
SALESMAN
13200 
 19200 
 34200 
 29400 
 36000 
 11400 
 35700 
 60000 
 15000 
 15600 
 36000 
 9600 
 18000 
 15000
20
 30
 30
 10
 20
 30
 20
 10
 30
 10
 20
 20
 30
 30
Ordenação descendente
Para inverter essa ordem, use o comando DESC(Decrescente) depois do nome das colunas da clausula ORDER BY.
Exemplo:
SELECT	ENAME, JOB, HIREDATE DATA DESC
FROM		EMP
ORDER BY	HIREDATE DESC;
ENAME
JOB
DATA
ADAMS 
SCOTT 
MILLER
JAMES 
FORD 
KING 
MARTIN
TURNER
CLARK 
BLAKE 
JONES 
WARD 
ALLEN 
SMITH
CLERK 
ANALYST 
CLERK 
CLERK 
ANALYST 
PRESIDENT
SALESMAN 
SALESMAN 
MANAGER 
MANAGER 
MANAGER 
SALESMAN 
SALESMAN 
CLERK
23/05/87
19/04/87
23/01/82
03/12/81
03/12/81
17/11/81
28/09/81
08/09/81
09/06/81
01/05/81
02/04/81
22/02/81
20/02/81
17/12/80
Ordenação por várias colunas.
É possível na clausula ORDER BY usar mais de uma coluna. O limite de colunas é o número de colunas da tabela. Se algumas ou todas são invertidas especifique DESC depois de alguma ou cada uma das colunas.
A clausula ORDER BY é usada na pesquisa. O comando não altera a ordem dos dados que estão armazenados no Banco de Dados ORACLE.
A Clausula WHERE
A clausula WHERE corresponde aos Operadores de Restrições da Álgebra Relacional.
Sintaxe:
SELECT	coluna(s)
FROM		tabela(s)
WHERE	certa condição a ser encontrada
A clausula WHERE pode comparar valores em uma coluna, valores literais, expressões aritméticas ou funções.
Operadores de comparação são usados na clausula WHERE e podem ser divididos em duas categorias: Lógicos e SQL.
Operadores Lógicos
Esses operadores testam as seguintes condições:
=
igual a
> 
maior que
>=
maior e igual a
<
menor que
<=
menor e igual a
Alfanuméricos e Datas na clausula WHERE devem estar entre aspas simples.
Para listar os nomes, números, emprego e departamentos de todos os escriturários(CLERK):
SELECT	ENAME, EMPNO, JOB, DEPTNO		
FROM		EMP					
WHERE	JOB = 'CLERK';			
ENAME
EMPNO
JOB
DEPTNO
SMITH 
ADAMS 
JAMES 
MILLER
7369
7876
7900
7934
CLERK 
CLERK 
CLERK 
CLERK
20
20
30
10
Para encontrar todos os nomes de departamentos com número	maior que 20, faça:
SELECT	DEPTNO, DNAME
FROM		DEPT
WHERE	DEPTNO > 20;
DEPTNO
DNAME
30
40
SALES
OPERATIONS
Comparando uma coluna com outra coluna na mesma linha:
Exemplo:
SELECT 	ENAME, SAL, COMM
FROM		EMP
WHERE	COMM > SAL;
ENAME SAL COMM
---------- --------- ---------
MARTIN 1250 1400
Operadores SQL
Existem quatro operadores SQL que operam com todos os tipos de dados:
BETWEEN ... AND ...
Entre dois valores (inclusive)
IN(Lista)
Compara uma lista de valores
LIKE
Compara um parâmetro alfanumérico
IS NULL
É um valor nulo
O Operador BETWEEN
Testa um faixa de valores inclusive.
Exemplo:
SELECT	ENAME, SAL
FROM		EMP
WHERE	SAL BETWEEN 1000 AND 2000;
ENAME
SAL
ALLEN 
WARD 
MARTIN 
TURNER 
ADAMS 
MILLER
1600
1250
1250
1500
1100
1300
O Operador IN 
Testa os valores especificados em uma lista. 
Para encontrar empregados que tenham um dos três números de MAT, faça:
SELECT	EMPNO, ENAME, SAL, MGR
FROM		EMP
WHERE	MGR IN (7902,7566,7788)
EMPNO
ENAME
SAL
MGR
7369
 7788
 7876
 7902
SMITH 
 SCOTT 
 ADAMS 
 FORD
800 
3000 
1100 
3000
7902
7566
7788
7566
Podemos usar o comando select dentro da cláusula in.
O Operador LIKE
Algumas vezes você precisa procurar valores que não conhece exatamente. Usando o operador LIKE é possível selecionar linhas combinando parâmetros alfanuméricos. Dois símbolos podem ser usados para construir uma linha de procura.
Símbolo:
%
Várias seqüência de zero ou mais caracteres
_
um número desejado de caracteres
Para listar todos os empregados os quais o nome começa com a letra S, faça:
SELECT	ENAME
FROM		EMP
WHERE	ENAME LIKE 'S%';
ENAME
----------
SMITH
SCOTT
Eles podem ser usados para encontrar um determinado número de caracteres.
Por exemplo para listar todos empregados que tenham exatamente quatro caracteres de tamanho do nome:
SELECT	ENAME
FROM		EMP
WHERE	ENAME LIKE '____';
ENAME
----------
WARD
KING
FORD
O % e o _ podem ser usados em várias combinações com literais alfanuméricos.
Operador IS NULL
Para encontrar unicamente todos os empregados que não tenham gerente, você testará um valor nulo:
SELECT	ENAME, MGR
FROM		EMP
WHERE	MGR IS NULL;
ENAME MGR
---------- -----
KING
Expressões Negativas
Os operadores seguintes são testes de negação:
<>
diferente (todos sistemas operacionais)
NOT BETWEEN
tudo que estiver fora da faixa
NOT IN
tudo que não esteja na lista
NOT LIKE
tudo que não contenha a linha de caracteres
IS NOT NULL
tudo que não for nulo
Para encontrar empregados que tenham o salário fora da faixa, faça:
SELECT	ENAME, SAL
FROM		EMP
WHERE	SAL NOT BETWEEN 1000 AND 2000;
ENAME
SAL
SMITH 
JONES 
BLAKE 
CLARK 
SCOTT 
KING 
JAMES 
FORD
800
 2975
 2850
 2450
 3000
 5000
 950
 3000
Para encontrar os empregados os quais o cargo não comece com a letra M, faça:
SELECT	ENAME, JOB
FROM		EMP
WHERE	JOB NOT LIKE 'M%';
ENAME 
 JOB
SMITH 
ALLEN 
WARD 
MARTIN 
SCOTT 
KING 
TURNER 
ADAMS 
JAMES 
FORD 
MILLER
CLERK
SALESMAN
SALESMAN
SALESMAN
ANALYST
PRESIDEN
SALESMAN
CLERK
CLERK
ANALYST
CLERK
Para encontrar todos os empregados que tenham um gerente, faça:
SELECT	ENAME, MGR
FROM		EMP
WHERE	MGR IS NOT NULL;
ENAME
MGR
SMITH 
ALLEN 
WARD 
JONES 
MARTINBLAKE 
CLARK 
SCOTT 
TURNER 
ADAMS 
JAMES 
FORD 
MILLER
7902
 7698
 7698
 7839
 7698
 7839
 7839
 7566
 7698
 7788
 7698
 7566
 7782
Nota:
Se um valor nulo é usado em uma comparação, então o operador de comparação deve ser IS ou IS NOT NULL. Se esses operadores não forem usados e valores nulos forem comparados, o resultado será sempre FALSO.
Por exemplo, COMM <> NULL será sempre FALSO. O resultado será falso porque um valor nulo não pode ser igual ou não igual a qualquer outro valor.
Pesquisando Dados com Múltiplas Condições
Os operadores AND e OR devem ser usados para fazer composições de expressões lógicas.
O predicado AND espera que ambas as condições sejam verdadeiras, enquanto que o predicado OR espera que uma das condições seja verdadeira.
Nos seguintes exemplos as condições são as mesmas, o predicado é diferente. Veja como o resultado é dramaticamente alterado.
Para encontrar todos os escriturários que ganhem entre 1000 e 2000, faça:
SELECT	EMPNO, ENAME, JOB, SAL
FROM		EMP
WHERE	SAL BETWEEN 1000 AND 2000
AND		JOB = 'CLERK';
COD ENAME JOB SAL
----- - --------- ---------- ----------
 7876 ADAMS CLERK 1,100.00
 7934 MILLER CLERK 1,300.00
Para encontrar todos os empregados que são escriturários ou todos que ganhem entre 1000 e 2000 faça:
SELECT	EMPNO, ENAME, JOB, SAL
FROM		EMP
WHERE	SAL BETWEEN 1000 AND 2000
OR		JOB = 'CLERK';
EMPNO
ENAME
JOB
SAL
7369
 7499
 7521
 7654
 7844
 7876
 7900
 7934
SMITH 
ALLEN 
WARD 
MARTIN 
TURNER 
ADAMS 
JAMES 
MILLER
CLERK 
SALESMAN
SALESMAN
SALESMAN
SALESMAN
CLERK 
CLERK 
CLERK
800
1600
1250
1250
1500
1100
 950
1300
Você pode combinar AND e OR na mesma expressão lógica. Quando AND e OR aparecerem na mesma clausula WHERE, o AND é realizado primeiro depois o OR. 
Se AND não interfere sobre o OR a seguinte declaração SQL retornará todos os gerentes com salário acima de 1500 e todos os vendedores:
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
FROM	 EMP
WHERE SAL > 1500
AND JOB = 'MANAGER'
OR JOB = 'SALESMAN';
EMPNO
ENAME
JOB
SAL
DEPTNO
7499
 7521
 7566
 7654
 7698
 7782
 7844
ALLEN 
WARD 
JONES 
MARTIN 
BLAKE 
CLARK 
TURNER
SALESMAN 
 SALESMAN 
 MANAGER 
 SALESMAN 
 MANAGER 
 MANAGER 
 SALESMAN
1600 
 1250 
 2975 
 1250 
 2850 
 2450 
 1500
30
30
20
30
30
10
30
Todos os operadores são organizados em uma hierarquia. Numa Expressão, as operações são feitas na ordem de sua precedência, do maior para o menor. Onde os operadores de igual precedentes são usados próximo a outro, eles são feitos da esquerda para direita.
1- Todos os comparativos e Operadores SQL tem igual precedente:
=, !=, <, >, <=, >=, BETWEEN ... AND ..., IN, LIKE, IS NULL.
2- NOT (para inverter o resultado das expressões lógicas: WHERE NOT (SAL>2000))
3- AND
4- OR
Sempre que você estiver em dúvida sobre qual dos dois operadores será feito primeiro quando a expressão é avaliada, use parênteses aumentar a legibilidade.
Suponha que você queira encontrar todos os gerentes, em vários departamentos, e todos os escriturários no departamento 10 unicamente: 
 
SELECT *
FROM EMP
WHERE JOB = 'MANAGER' 
OR (JOB = 'CLERK' AND DEPTNO = 10);
EMPNO
ENAME
JOB
MGR
HIREDATE
SAL
COMM
DEPTNO
7566
7698
7782
7934
JONES 
BLAKE 
CLARK 
MILLER
MANAGER
MANAGER
MANAGER
CLERK
7839
7839
7839
7782
02/04/81
01/05/81
09/06/81
23/01/82
2975 
2850 
2450 
1300
20
 30
 10
 10
O parênteses acima não é necessário, por que o AND é precedente ao OR, mas ele esclarece o significado da expressão.
Funções
As Funções são usadas para manipular dados. Elas aceitam um ou mais argumentos e retornam um valor. Um argumento é uma constante, refere-se à variável, expressão ou coluna. 
Sintaxe:
função_nome (agrumento1,argument2,...)
 Funções podem ser usadas para:
Cálculos sobre datas
modificar valores de itens individuais
manipular saída para grupos de linhas
alterar formatos de datas para mostrá-los
Existem diferentes tipos de funções:
ALFANUMÉRICAS
NUMÉRICAS
DATA
CONVERSÃO
FUNÇÕES QUE ACEITAM VÁRIOS TIPOS DE DADOS
GRUPO
Algumas funções operam unicamente sobre linhas simples; outras manipulam grupos de linhas.
Funções de Linha Única:
agem sobre cada linha retornada na pesquisa
retornam um resultado por linha
esperam um ou mais argumento do usuário
podem ser aninhadas
podem ser usadas com variáveis do usuário, colunas, expressões; podem ser usadas, por exemplo, nas cláusulas SELECT, WHERE, ORDER BY.
Funções Alfanuméricas
Funções Alfanuméricas aceitam dados alfanuméricos e podem retornar valores alfanuméricos ou numéricos.
A função seguinte influencia na construção de valores alfanuméricos.
LOWER
LOWER(col/value)
fornece valores alfanuméricos os quais estão em letra maiúscula ou minúscula e retornam em letra minúscula
Para mostrar o nome dos departamentos em letra minúscula e a constante CURSO_SQL, faça:
SELECT LOWER(DEPTNO), LOWER('CURSO_SQL')
FROM DEPT;
LOWER(DEPTNO)
LOWER('CURSO_SQL')
10 
20 
30 
40
curso_sql
curso_sql
curso_sql
curso_sql
UPPER
UPPER(col/value)
fornece caracteres alfanuméricos, os quais estão em letra maiúscula ou minúscula e retorna em letra maiúscula.
No exemplo seguinte, a função UPPER força o usuário entrar em letra maiúscula.
SELECT ENAME
FROM EMP
WHERE ENAME = UPPER('&NOME');
Enter value for NOME : smith
ENAME
----------
SMITH
INITCAP
INITCAP(col/value)
força a primeira letra da palavras ser em maiúscula e o resto minúscula
Exemplo:
SELECT INITCAP(DNAME), INITCAP(LOC)
FROM DEPT;
INITCAP(DNAME)
INITCAP(LOC)
Accounting 
Research 
Sales 
Operations
New York
Dallas
Chicago
Boston
 LPAD e RPAD
LPAD(col/value,n,’caracter’)
Preenche a coluna ou valor literal da esquerda para o total tamanho de n posições. Os principais espaços estão preenchidos com o ‘caracter’. Se o caracter for omitido o valor padrão é espaços.
SELECT LPAD(DNAME,20,'*'), LPAD(DNAME,20), LPAD(DEPTNO,20,'.')
FROM DEPT;
 LPAD(DNSMR,20,'*') 
LPAD(DNAME,20)
LPAD(DEPTNO,20,'.')
*************RESEACH
RESEACH
..................20
***************SALES
SALES
..................30
**********OPERATIONS
OPERATIONS
..................40
***********ACCOUTING
ACCOUNTING
..................10
RPAD(col/value,n,’caracter’)
preenche a coluna ou valor literal da direita para o total tamanho de n posições. Os espaços a direita são preenchidos com o ‘caracter’. Se o ‘caracter’ for omitido o preenchimento fica em branco.
Exemplo:
SELECT RPAD(DNAME,20,'*'), RPAD(DNAME,20), RPAD(DEPTNO,20,'.')
FROM DEPT;
 RPAD(DNAME,20,'*') 
RPAD(DNAME,20)
RPAD(DEPTNO,20,'.')
ACCOUTING***********
ACCOUNTING
10..................
RESEACH*************
RESEACH
20..................
SALES***************
SALES
30..................
OPERATIONS**********
OPERATIONS
40..................
A segunda coluna é alinhada para a direita com brancos por padrão.
SUBSTR
SUBSTR(col/value,pos,n)
Retorna uma linha de n caracteres da coluna ou valor literal, iniciando na posição número pos. Se n é omitido a linha é extraída da posição pos até o fim.
Exemplo:
SELECT SUBSTR('ORACLE',2,4), SUBSTR(DNAME,2), SUBSTR(DNAME,3,5)
FROM DEPT;
SUBSTR('ORACLE',2,4)
SUBSTR(DNAME,2)

Outros materiais