49
Aula 01

Conteúdo Online - Implementação de Banco de Dados - Aulas 1 a 10

Embed Size (px)

DESCRIPTION

Conteúdo da disciplina de implementação de banco de dados.

Citation preview

  • Aula 01

  • Modelo relacional

    O modelo relacional tem se mostrado dominante nos SGBD comercial. De fato os principais SGBD como oracle,

    SqlServer, SYBase, PostgreeSQL, MySQL utilizam o modelo relacional ou sua extenso o modelo objeto relacional. O

    modelo relacional foi propost pelo Dr. Codd em 1970, baseando-se em conceitos matemticos para proporcionar uma

    representao confivel para banco de dados. O modelo relacional se propem a representar os dados em uma colao

    de relaes. Desta forma as relaes so vistas como tabelas de valores, onde cada linha representa uma coleo de

    dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instancia de uma entidade ou

    de um relacionamento do mundo real. Os nomes da tabela e das colunas so utilizados para facilitar a interpretao dos

    valores armazenados em cada linha da tabela.

  • AULA 2

  • PROJEO

  • PRODUTO CARTESIANO

    JUNO

  • OPERAO DE CONJUNTOS

    OPERAO DE DIVISO

  • AULA 3

    A Linguaqem SQL como Padro. SQL quer dizer Structured Query Language e o padro mundial de acesso s bases

    de dados relacionais.

    DDL - Create, Alter, Drop, Rename, Truncate. Permitem a criao e definio de objetos como tabelas, views e outros

    objetos no banco de dados.

    DRL Select. o comando mais comum do SQL. Utilizado amplamente para recuperao dos dados de uma base.

    DML Insert, Delete, Update. Comandos de manipulao dos dados. Usados nas aplicaes que mantm a base de

    informaes com inseres, atualizaes e delees de dados.

    DCL Grant, Revoke. So utilizados para atribuir ou remover direitos de acesso a objetos do banco de dados e suas

    estruturas.

    Controle de transaes - Commit, Rollback, Savepoint. Faz parte do padro SQL a efetivao total, parcial ou o

    abandono de uma transao atravs da utilizao destes comandos.

  • Adicionando campo: ALTER TABLE TABELA ADD CAMPO VARCHAR(30) NOT NULL

    Comando: Describe tabela OU desc tabela, descreve a tabela

    Alterando um campo: ALTER TABLE DEPARTAMENTO MODIFY DESCRICAO NULL

    Remover coluna: alter table drop column ;

    Mais Constraints

    At agora utilizamos apenas as constraints NOT NULL e PRIMARY KEY, vejamos agora as Constraints UNIQUE e FOREIGN

    KEY.

    Campos nicos: Esta constraint determina que uma coluna no pode ter valor repetido; no significando, entretanto,

    que deva possuir valor, ou seja, que tenho preenchimento obrigatrio. Isso significa que podemos ter mais uma linha

    nula em uma coluna nica. Para estabelecer essa restrio, estabelecemos UNIQUE como restrio da coluna, por

    exemplo: CPF char(11) UNIQUE,

    Reforando a integridade referencial com chaves estrangeiras:

    Os relacionamentos entre tabelas so criados, gerando-se chaves estrangeiras (foreign key FK) nas tabelas FILHO que

    referenciam colunas chaves nas tabelas PAI.

    Para estabelecer essa restrio, acrescentamos REFERENCES definio da coluna como exemplo:

    ID_DEPTO number(7) References Departamento(ID),

    Onde:

    Id_depto o nome da coluna.

    Number(7) o tipo da coluna.

  • References identifica a restrio de chave estrangeira.

    Departamento o nome da tabela para onde aponta a chave estrangeira.

    (ID) coluna da tabela departamento apontada pela chave estrangeira.

    Constraint de Colunas e Tabelas

    As constraints podem ser definidas junto com a coluna. ou separadamente (no final do comando create table ou com o

    comando alter table). As constraints not null s podem ser definidas junto com a definio da coluna. As constraints de

    tabela so utilizadas principalmente para criar constraints compostas. onde duas ou mais colunas fazem parte da

    constraint. como por exemplo, chaves primrias compostas.

    Vejamos um exemplo:

    A tabela Turmas possui uma chave primary composta pelas colunas CODIGO_TURMA e CODIGO_CURSO. O comando

    para sua criao :

    CREATE TABLE TURMAS (CODIGO_TURMA NUMBER(6), CODIGO_CURSO NUMBER(3), CODIGO_FUNCIONARIO

    NUMBER(6), DATA_INICIO DATE, DATA_FIM DATE , SALA NUMBER(2), PRIMARY KEY (CODIGO_TURMA,

    CODIGO_CURSO) );

    Incluindo uma Foreign Key numa Tabela Existente

    Tambm podemos incluir a constraint de Foreign Key aps a criao da tabela, para tal, basta especificar a adio da

    constraint no comando ALTER TABLE.

    Para exemplificar, vamos primeiro criar a tabela CLIENTE, utilizando o comando abaixo:

    CREATE TABLE CLIENTE ( ID NUMBER(7) PRIMARY KEY, NOME VARCHAR2(40) NOT NULL, VENDEDOR NUMBER(7))

    A tabela foi criada, mas a coluna Vendedor deveria ser uma chave estrangeira para a tabela Empregado na coluna ID,

    podemos dar o seguinte comando de ALTER TABLE:

    ALTER TABLE CLIENTE ADD FOREIGN KEY (VENDEDOR) REFERENCES EMPREGADO(ID)

    ----------

    Trocar nome de tabela

    RENAME TABELA TO NOVATURMA.

    Dropar tabelas

    Drop table tabela

    Se voc aplicar este comando em uma tabela que possua filhos, como por exemplo, a tabela Departamento ir

    gerar um erro ( veja figura). O erro ocorre porque essa tabela referenciada por uma foreign key de outra

    tabela, que ficaria inconsistente caso esta fosse removida; o banco de dados, muito acertadamente, no

  • permite este comando DROP TABLE. Caso seja realmente necessrio eliminar essa tabela, posso solicitar que

    todas as constraints a ela vinculadas sejam eliminadas tambm, para isso acrescentamos CASCADE

    CONSTRAINTS ao comando.

    DROP TABLE DEPARTAMENTO CASCADE CONSTRAINTS

    Resumo:

    CREATE TABLE X_EMPR( ID NUMBER(5) PRIMARY KEY,NOME VARCHAR2(40) NOT NULL,CPF CHAR(11) NOT NULL

    NIQUE,SALARIO NUMBER(9,2),CNH CHAR(15) UNIQUE,ID_DEPTO NUMBER(5) REFERENCES

    X_DEPTO(ID),ID_GERENTE NUMBER(5))

    ALTER TABLE X_EMPR MODIFY (SALARIO NOT NULL)

    ALTER TABLE X_EMPR ADD FOREIGN KEY (ID_GERENTE) REFERENCES X_EMPR(ID)

    DROP TABLE X_EMPR

    DROP TABLE DEPARTAMENTO CASCADE CONSTRAINTS

    Aula 04

    Select uma tabela

  • OBS:

    Aula 05

    Ordenao: Order by.

    Funes de grupo:

    Group by;

    AVG(x): Retorna o valor mdio das colunas, ignora nulos;

    MAX

    MIN

    SUM

    Count(x): retorna o numero de linhas de uma tabela, ignora valores nulos.

  • Count(*): Retorna o numero de linhas de uma tabela, considera valores nulos.

    Funcoes de grupo no podem estar no WHERE. Deve se usar HAVING.

    Aula 06 JUNO

    Juno Cruzada cross join

    Uma juno cruzada de tabelas, tambm chamada juno irrestrita de duas tabelas gera um resultado formado por

    todas as combinaes possveis de uma linha da primeira tabela com uma linha da segunda. No existe uma condio de

    juno. Esse resultado chamado produto cartesiano das duas tabelas.

    Por exemplo desejamos realizar a Juno Cruzada das tabelas Empregado e Departamento cujo contedo mostrado na

    figura.

    Nesse caso, como a tabela Empregado possui 6 linhas e a tabela Departamento 3 linhas , o resultado final ser 18 linhas

    que 6 * 3 = 18 linhas, formadas por todas as combinaes possveis de empregado e departamento. Teramos como

    resultado ento esta tabela.

    select * from empregado cross join departamento;

    Juno interior -inner join

    A juno interior de tabelas [inner join]. conecta as duas tabelas e retorna apenas as linhas que satisfazem a condio

    de juno. Uma juno interior chamada de equijoin quando as colunas so comparadas usando o =, e as duas colunas

    aparecem no resultado, mostrando dados redundantes, j que elas tm o mesmo valor.

    Juno exterior outer join ou left join

    FULL JOIN as linhas de ambas as tabelas so includas, mesmo as que no esto relacionadas com a outra

    tabela. ~

    Auto-juno: inner join com a mesma tabela.

    dasda

  • Aula 07 Subconsulta e operadores de conjunto.

    Subconsulta uma consulta dentro de um outro comando SQL que pode ser:

    CREATE TABLE

    CREATE VIEW

    SELECT

    INSERT

    DELETE

    UPDATE

    Exemplos: SELECT * FROM EMPREGADO WHERE ID_DEPTO = ( SELECT ID FROM DEPARTAMENTO

    WHERE UPPER(NOME) = VENDAS)

    Subconsultas correlatas

    SELECT * FROM EMPREGADO E WHERE SALARIO > (SELECT AVG(SALARIO) FROM EMPREGADO I WHERE ID_DEPTO =

    E.ID_DEPTO)

  • UNION: retorna duas consultas sem repetio.

    UNION ALL: Resulta na combinao de todas as linhas de duas ou mais tabelas participantes do UNION, mantendo todas

    as linhas duplicadas.

    INTERSECT: Resulta na interseo entre todas as linhas de duas ou mais tabelas participantes do INTERSECT, ou seja,

    apenas as linhas comuns entre ela: No existe INTERSECT ALL

    SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,30)

    INTERSECT

    SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR'

    MINUS: Resulta nas linhas existentes na primeira tabela, mas que no existem na segunda. As linhas comuns tambm

    no so resultantes. No existe MINUS ALL

    Obs: ODER BY apenas na ultima consulta.

    Aula 08 OUTROS OBJETOS DE BANCO DE DADOS.

  • A sintaxe do comando de criao de uma Sequence :

    CREATE SEQUENCE sequence_name

    [ INCREMENT BY n ]

    [START WITH n]

    [MAXVALUE n I NOMAXVALUE]

    [MINVALUE n I NOMINVALUE]

    [CYCLE I NOCYCLE]

    [CACHE l NOCACHE]

    [ORDER I NOORDER ]

  • importante observar que ndices so objetos atualizados pelo Oracle, em todas as operaes de INSERT, UPDATE e

    DELETE na tabela indexada, portanto, se por um lado aceleram a pesquisa aos dados atravs do comando SELECT, por

    outro lado, quanto mais ndice tiver a tabela, maior o tempo de atualizao da mesma.

    Aula 09 - TRANSAES

    Aps uma transao, o banco de dados deve continuar consistente. Para assegurar a integridade dos dados, um sistema

    de banco de dados deve ter as seguintes propriedades das transacoes.

    Atomicidade: indivisibilidade, a propriedade que garante que todas as operaes de uma transao so

    refletidas corretamente no banco de dados ou nenhuma ser. Uma transao indivisvel.

    Consistncia: a execuo de uma transao isolada (ou seja, sem a execuo de outra transao qualquer

    concorrentemente) preserva a consistncia do banco de dados.

    Isolamento: embora diversas transaes possam ser executadas concorrentemente, o SGBD deve garantir que,

    para todo par de transaes Ti, Tj, Ti tem a sensao de que Tj terminou suas operaes, antes de Ti comear

    com as suas. Assim, cada transao no toma conhecimento de outras transaes concorrentes no sistema. O

    sistema pode executar um pedao de Ti parar e executar um pedao de Tj, mas para as transaes elas so

    nicas no sistema.

    Durabilidade: depois de a transao completar-se com sucesso, as mudanas que ela faz no banco dedados

    persistem, at mesmo se houver falha no sistema.

    So as chamadas propriedades ACID das transaes.

  • Transaes concorrentes

    Os sistemas de processamento de transao de banco de dados, normalmente permitem que diversas transaes sejam

    executadas de modo concorrente. Permitir que essas transaes concorram na atualizao dos dados traz diversas

    complicaes em relao consistncia dos bancos de dados.

    Principal desvantagem das execues concorrentes:

    o Assegurar a consistncia de transaes, exige trabalho adicional, mais fcil assegurar as propriedades

    ACID em transaes com execuo seqencial do que em execues concorrente.

    Principais vantagens de execues concorrentes:

    o Uma transao consiste de diversos passos. Alguns envolvem atividades de E/S, outros, atividade de

    UCP; logo, atividades de E/S podem ser feitas em paralelo com o processamento de UCP; assim, o

    paralelismo entre atividades de E/S e atividades de UCP podem ser explorando para executar diversas

    transaes em paralelo aumentando o throughput do sistema (um maior nmero de transaes

    podem ser executadas num determinado tempo);

    o reduz o tempo mdio de resposta para uma transao se completar aps ser submetida, pois as

    transaes curtas no precisam esperar que as transaes longas terminem para serem iniciadas.

  • Aula 10 Execuo de comandos e otimizao

  • JUNES Os algoritmos classicos utilizados em juncoes so.

    Fases do processamento de comandos SQL no oracle

  • O Otimizador Oracle

  • FULL TABLE SCAN: O nmero de blocos visitados para executar um full table scan 80/8 = 10;

    PESQUISA NO INDICE I_COD_DEPART: Este um ndice no-nico, logo a seletividade calculada como 0,17 (6 valores

    distintos para codigo_depart). O custo total 0,17 * 80 = 14;

    PESQUISA NO INDICE I_MATRIC: Este um ndice nico porm em um intervalo limitado de valores. A seletividade

    calculada como 0,19(intervalo da condio 250 100 dividido pelo intervalo do ndice 800 1). O custo total 0,19 * 80

    = 16;

  • FULL TABLE SCAN: Este caminho est disponvel para todos os comandos SQL. Seu rank 15;

    PESQUISA NO INDICE I_COD_DEPART: Este caminho est disponvel por causa da condio codigo_depart = 3. Seu

    rank 9 (single-column index);

    PESQUISA NO INDICE I_MATRIC: Este caminho est disponvel por causa da condio matricula BETWEEN 100 AND

    250. Seu rank 10 (bounded range search);

    Opo COMPUTE STATISTCS: Voc calcula estatsticas exatas com esta opo. Ela bloqueia a tabela e executa um full

    table scan. Pode levar muito tempo se a tabela muito grande. Voc jamais dever usar esta opo enquanto usurios

    esto logados e acessando a tabela.

    Opo ESTIMATE STATISTICS: Voc somente estima estatsticas com esta opo. Contudo, se voc utiliz-la com uma

    proporo de dados aceitvel, ela pode ser considerada to realista quanto a opo COMPUTE STATISTICS.

    Opo DELETE STATISTICS: Limpa todas as estatsticas com esta opo. No necessrio us-la antes de reanalisar um

    objeto.