Você está na página 1de 13

MODELO DE DADOS VS ESQUEMA

Um modelo de dados é um conjunto de conceitos usados para se descrever dados.

Um esquema é uma descrição de uma determinada coleção de dados, descrição essa baseada num certo modelo de dados.

O modelo relacional é o modelo de dados mais utilizado atualmente.

Principal conceito do modelo relacional: relação, basicamente uma tabela com linhas e colunas. Cada relação (tabela) tem
um esquema relacional que descreve suas colunas.

CLASSIFICAÇÃO DOS MODELOS DE DADOS


• Há modelos de dados: físicos (baixo nível)

• Lógicos ou de implementação (nível intermediário):


Suportados por SGBSs comerciais e comumente usados
na implementação de sistemas de bancos de dados. O
modelo relacional é o modelo lógico mais usado hoje
(IBM DB2, Oracle, Sybase, Informix, Microsoft SQL
Server, etc.)

• Conceituais ou semânticos (alto nível) : Incorporam


construções que permitem capturar o significado da
realidade do negócio. O Modelo Entidades-
Relacionamentos (E-R) é o modelo semântico mais
difundido.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


CLASSIFICAÇÃO DAS VISÕES E ESQUEMAS

A arquitetura ANSI/SPARC prevê: múltiplas visões de


dados, um esquema conceitual (lógico) e um esquema
interno (físico).

• Os esquemas externos descrevem visões, ou views


(como os usuários vêem os dados).

• O esquema conceitual descreve a estrutura lógica


dos dados.

• O esquema interno descreve os arquivos e os


índices empregados

OBS: NÃO confundir esquema conceitual (lógico) que interliga a camada externa (visão) e a camada física com modelo
conceitual que usa o Entidade – Relacionamentos (MER) como modelo semântico dos dados.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


FUNÇÕES DE GRUPO

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


A função COUNT tem três formatos:
COUNT(*) COUNT(expr) COUNT (DISTINCT expr)

COUNT(*) retorna o número de linhas em uma tabela que satisfaz os critérios da instrução SELECT, inclusive linhas
duplicadas e linhas contendo valores nulos em qualquer uma das colunas. Se uma cláusula WHERE estiver incluída na
instrução SELECT, COUNT(*) retornará o número de linhas que satisfizer a condição na cláusula WHERE.

COUNT (expr) retorna o número de valores não-nulos na coluna identificada por expr.

COUNT (DISTINCT expr) retorna o número de valores exclusivos não-nulos da coluna identificada por expr.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Unindo uma Tabela a ela Mesma

Algumas vezes será necessário unir uma tabela a ela mesma. Na tabela acima, para localizar o nome do
gerente de cada funcionário, é necessário unir a tabela EMP a ela mesma ou executar uma autojunção. Por exemplo,
para localizar o nome do gerente de Blake, é necessário:

• Localizar Blake na tabela EMP consultando a coluna ENAME.


• Localizar o número do gerente de Blake consultando a coluna MGR. O número do gerente de Blake é 7839.
• Localizar o nome do gerente como o EMPNO 7839 consultando a coluna ENAME. O número do funcionário King é
7839, então King é gerente de Blake.

Neste processo, você analisa a tabela duas vezes. Na primeira vez, você consulta a tabela para localizar Blake
na coluna ENAME e o valor MGR de 7839. Na segunda vez, você consulta a coluna EMPNO para localizar 7839 e a
coluna ENAME para localizar King.

DICA: Em se tratando de autojunções, sempre vai haver uma inversão durante a cláusula WHERE, neste
exemplo: trabalhador. NúmeroGerente = gerente. NúmeroTrabalhador.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Às vezes, é necessário dividir a tabela de informações em grupos menores. Isso pode ser feito com o uso da cláusula
GROUP BY.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


No exemplo, a cláusula WHERE poderia especificar as linhas a serem recuperadas. Já que não há uma cláusula
WHERE, todas as linhas são recuperadas por default.

A cláusula GROUP BY especifica como as linhas devem ser agrupadas. As linhas são agrupadas pelo número do
departamento, de forma que a função AVG que esteja sendo aplicada à coluna de salários calcule o salário médio para
cada departamento

Sempre que você usa uma mistura de itens individuais (DEPARTMENT_ID) e funções de grupo (COUNT) na mesma instrução
SELECT, deve incluir uma cláusula GROUP BY que especifique os itens individuais (neste caso, DEPARTMENT_ID).

Qualquer coluna ou expressão na lista SELECT que não seja uma função agregada deve estar na cláusula GROUP BY.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


CONSULTA VÁLIDA
SELECT department_id, AVG(salary)
FROM employees
HAVING AVG (salary) > 8000
GROUP BY department_id;

Da mesma forma que você usa a cláusula WHERE para restringir as linhas que seleciona, pode usar a cláusula HAVING para
restringir grupos.

Uma subconsulta é uma instrução SELECT que é incorporada a uma


cláusula de outra instrução SELECT. Você pode desenvolver instruções
sofisticadas a partir de instruções simples usando subconsultas. Elas
poderão ser muito úteis quando você precisar selecionar linhas de
uma tabela com uma condição que dependa dos dados na própria
tabela.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


É possível colocar a subconsulta em várias cláusulas SQL, incluindo as cláusulas WHERE, HAVING e
FROM

Na sintaxe: o operador inclui uma condição de comparação como >, = ou IN

Observação: as condições de comparação subdividem-se em duas classes: operadores de uma única


linha (>, =, >=, <, <>, <=) e operadores de várias linhas (IN, ANY, ALL).

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Para corrigir o erro acima, altere o operador “ = “para “IN”.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


“< ANY” significa menos que o máximo. ”>ANY” significa mais que o mínimo. “=ANY” equivale a IN.
“> ALL” significa mais que o máximo e “<ALL” significa menos que o mínimo. “<>ANY” equivale a NOT IN

A função SYSDATE é usada para obter a data e a hora atuais.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com
Se o registro pai que você tentar deletar tiver registros filhos, você receberá a mensagem ORA-02292
de violação de registro filho encontrado. Se a cláusula “on delete cascate” for especificada para chave
estrangeira, a linha poderá ser excluída sem problema.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com

Você também pode gostar