aulasbasedados

Upload: jair-selassie

Post on 08-Aug-2018

245 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/22/2019 AulasBaseDados

    1/89

    Matemtica e Informtica

    Mdulo IV

    Bases de Dados RelacionaisBases de Dados Relacionais

    (linguagem SQL)(linguagem SQL)

    2006/2007

  • 8/22/2019 AulasBaseDados

    2/89

    2

    Utilidade das Bases de Dados

    Recolha e processamento de dados que possuem um volume significativo,

    que so interrelacionados,

    de forma a que no existam perdas de informao, cuja organizao permita a sua fcil compreenso e

    que o seu processamento seja eficiente.

    Eficcia!!!

  • 8/22/2019 AulasBaseDados

    3/89

    3

    Base de Dados

    um conjunto de dados relacionados que utilizado recorrendo a um Sistema Gestor deBases de Dados (SGBD). Uma Base de Dados representa uma parte da realidade

    que relevante para a resoluo de um determinadoconjunto de problemas.

    Existem no mercado diversos SGBD, os maisutilizados so os SGBD relacionais que permitem

    criar bases de dados relacionais.

  • 8/22/2019 AulasBaseDados

    4/89

    4

    SGBD relacional

    Os conceitos em que se baseia foram apresentadosem 1970.

    Desde ento vrios fornecedores de softwareinformtico tm vindo a desenvolver SGBDrelacionais. O OpenOffice.org Base um SGBD relacional

    pode ser utilizado em computadores com sistema operativoWindows ou Linux

    O Microsoft Access tambm um SGBD relacional destina-se a ser utilizado em computadores com sistema

    operativo Windows

    O ORACLE outro exemplo de SGBD relacional

    muito utilizado em computadores com sistema operativoWindows ou Linux

  • 8/22/2019 AulasBaseDados

    5/89

    5

    Mtodos de desenvolvimentode bases de dados

    Os mais divulgados incluem: uma fase de criao de um modelo conceptual de dados uma fase de converso deste modelo para o SGBD

    escolhido para a sua implementao

    Um modelo conceptual de dados pode ser criadoutilizando conceitos e regras de tipo Entidade-Associao (E-A).Vantagens

    necessita apenas de um conjunto diminuto de conceitose regras simples, representao por diagramas com uma notao muito

    elementar.

  • 8/22/2019 AulasBaseDados

    6/89

    6

    Conceitos para modelos conceptuaisde tipo E-A

    Os modelos de tipo E-A so compostos porentidades e associaes.

    As entidades representam objectos reais quepossuem uma descrio que determinada pelosproblemas que se pretendem resolver por meio daBase de Dados.

    As associaes representam relacionamentos

    relevantes entre entidades.

  • 8/22/2019 AulasBaseDados

    7/89

    7

    Tipo de entidades e atributos

    As entidades que possuem uma descrio comumso representadas por um tipo de entidade, o qual caracterizado por um conjunto de atributos.

    Os valores que tomam cada um dos atributos deum tipo de entidade permitem descrever edistinguir entre si as entidades que pertencem aum mesmo tipo de entidade.

  • 8/22/2019 AulasBaseDados

    8/89

    8

    Exemplo

    Numa base de dados que se destina a servir osalunos de uma Faculdade: os alunos, os professores e as disciplinas so entidades

    aluno, professor e disciplina so tipos de entidade identificados, respectivamente, porAluno, Professor,

    Disciplina

    n de aluno (nAluno), nome de aluno (nomeA) e data

    de nascimento (datanasc) so atributos do tipo de

    entidade Aluno; cdigo da disciplina (cdigo),

    designao (designao) e crditos (crditos) so

    atributos do tipo de entidade Disciplina

    12345, Jos Silva, 1980-11-30 so valores dos atributos...

  • 8/22/2019 AulasBaseDados

    9/89

    9

    Chave primria de um tipo de entidade

    A um atributo de um tipo de entidade cujosvalores permitam identificar de forma inequvocacada uma das entidades desse tipo d-se o nome dechave primria.

    Regra: cada tipo de entidade deve possuir umachave primria. no exemplo, cada entidade do tipo Aluno pode ser

    identificada pelo nAluno e cada entidade do tipo

    Disciplina pode ser identificada pelo cdigo alunos distintos tero nmeros diferentes; duas

    disciplinas diferentes tero cdigos diferentes.

  • 8/22/2019 AulasBaseDados

    10/89

    10

    Associao e tipo de associao

    Entre alunos e disciplinas existem associaes,entre professores e disciplinas tambm existemassociaes ...

    Um tipo de associao representa as associaes

    com caractersticas comuns que se estabelecementre as vrias entidades. no exemplo, pode ser criado um tipo de associao,

    com o nome Inscrito, que representa as associaes

    que se estabelecem entre as entidades do tipo Aluno eas entidades do tipo Disciplina; pode ainda ser criadoum tipo de associao Responsabilidade pararepresentar as associaes existentes entre as entidadesdo tipo Professor e as entidades do tipo Disciplina

  • 8/22/2019 AulasBaseDados

    11/89

    11

    Diagrama do modelo conceptual

    Disciplina Professor

    Aluno

    Inscrito

    Responsabilidade

  • 8/22/2019 AulasBaseDados

    12/89

    12

    Atributos de um tipo de Associao

    Um tipo de associao pode possuiratributos quepermitam descrever as caractersticas prprias decada associao. como atributo do tipo de associao Inscrito pode

    incluir-se a data de inscrio dos alunos na disciplina(dataInsc) .

  • 8/22/2019 AulasBaseDados

    13/89

    13

    Diagrama do modelo conceptual

    cdigodesignao

    nAluno

    nomeA

    dataNasc

    nProfnomePcategoria

    dataInsc

    Disciplina Professor

    Aluno

    Inscrito

    Responsabilidade

  • 8/22/2019 AulasBaseDados

    14/89

    14

    Cardinalidade de um tipo de associao

    Um tipo de associao caracteriza-se pelo nmerode tipos de entidade que envolve, podendo serunria, ou binria (o caso mais frequente), outernria, ou

  • 8/22/2019 AulasBaseDados

    15/89

    15

    Multiplicidade de um tipo de associao

    A multiplicidade do tipo de associao indica omodo como se podem estabelecer associaesdesse tipo.

    Um tipo de associao binria pode ser:

    de um para um (1:1) quando cada entidade s podeocorrer numa nica associao desse tipo; de um para muitos (1:n) quando cada entidade de um

    tipo s pode ocorrer numa associao, mas as entidadesdo outro tipo podem ocorrer em mais do que uma

    associao desse tipo; de muitos para muitos (n:n) quando no existenenhuma restrio ao nmero de ocorrncias de cadaentidade em associaes desse tipo.

  • 8/22/2019 AulasBaseDados

    16/89

    16

    Exemplos

    O tipo de associao Responsabilidade entre ostipos de entidade Professor e Disciplina de 1:n cada disciplina da responsabilidade de um nico

    professor mas um professor pode ser responsvel por

    mais do que uma disciplinaO tipo de associao Inscrito entre Aluno e

    Disciplina de n:n um aluno pode estar inscrito em mais do que uma

    disciplina e uma disciplina pode ter vrios alunosinscritos.

  • 8/22/2019 AulasBaseDados

    17/89

    17

    Multiplicidade (mais detalhe)

    Geralmente, vantajoso definir a multiplicidadede um tipo de associao de uma forma maisdetalhada, indicando dois nmeros: o mnimo e omximo de vezes que uma entidade pode

    participar em associaes de um mesmo tipo.A multiplicidade frequentemente 0,1 ou 1,1 ou

    0,n ou 1,n, mas pode ser diferente (2,2 ou 2,n, porexemplo).

  • 8/22/2019 AulasBaseDados

    18/89

    18

    Exemplos

    O tipo de associao Inscrito tem multiplicidade 1,nrelativamente ao tipo de entidade Aluno nesta base de dados, um aluno tem que estar inscrito em pelo

    menos uma disciplina

    O tipo de associao Inscrito tem multiplicidade 0,nrelativamente ao tipo de entidade Disciplina

    nesta base de dados, podem existir entidades de tipo Disciplina

    que no estejam associadas a nenhuma entidade do tipo Aluno e

    outras que estejam associadas a uma ou mais entidades do tipoAluno

    A multiplicidade do tipo de associao Responsabilidade

    1,1 relativamente ao tipo de entidade Professor

    para cada disciplina existe sempre um e s um professorres onsvel

  • 8/22/2019 AulasBaseDados

    19/89

    19

    Restries de integridade

    So condies que tm que ser verificadas paraque a base de dados seja fiel realidade.

    A multiplicidade dos tipos de associaorepresentam restries de integridade do modelode dados.

    Nem todas as restries de integridade dos dadospodem ser representadas no modelo pela

    multiplicidade dos tipos de associao por exemplo: a data de inscrio numa disciplina temque ser posterior data de nascimento do aluno.

  • 8/22/2019 AulasBaseDados

    20/89

    20

    1 etapa da criao de um modeloconceptual de dados

    Identificao dos tipos de entidade e respectivosatributos.Regras gerais:

    As entidades representam objectos que podem possuir uma

    descrio; os atributos no possuem informao descritiva. Quando a uma entidade pode corresponder mais do que um

    valor de um dado atributo, este deve ser considerado comouma entidade mesmo que sobre ele no exista mais nenhumainformao descritiva.

    Os atributos devem ser usados nas entidades a que maisdirectamente dizem respeito.

    Como chave primria deve-se evitar a utilizao de conjuntosde atributos.

  • 8/22/2019 AulasBaseDados

    21/89

    21

    2 etapa da criao de um modeloconceptual de dados

    Identificao dos tipos de associao e respectivosatributos. Por excluso de partes, devero representar os objectos

    que no foram considerados nem entidades nem

    atributos.Regras gerais:

    As associaes redundantes devem ser eliminadas.Consideram-se redundantes as associaes que representamum mesmo aspecto da realidade; as redundncias mais

    frequentes resultam da existncia de associaes transitivas S devem ser usadas associaes ternrias quando for

    impossvel represent-las por meio de vrias associaesbinrias.

  • 8/22/2019 AulasBaseDados

    22/89

    22

    Diagrama do modelo conceptual

    cdigodesignao

    nAluno

    nomeA

    dataNasc

    nProfnomePcategoria

    dataInsc

    Disciplina Professor

    Aluno

    Inscrito

    Responsabilidade

    1:n

    n:n

    1,1

    1,n

    0,n

    0,n

  • 8/22/2019 AulasBaseDados

    23/89

    23

    Exerccios:

    1. Uma loja pretende construir uma base de dados cominformao relevante sobre os discos que vende.Relativamente a cada disco, pretende registar na basede dados um cdigo identificativo, o ttulo, n de cpias

    vendidas, data de gravao e o grupo/intrprete.Pretende tambm registar as msicas que cada discoinclui. Sobre cada msica, pretende registar o ttulo queidentifica a msica e o primeiro autor. Uma mesmamsica pode figurar em discos distintos.

  • 8/22/2019 AulasBaseDados

    24/89

    24

    Exerccios (cont.):

    2. Uma empresa agrcola pretende construir uma base de dados cominformao relevante sobre os animais que possui. Relativamente acada variedade de animal, pretende registar na base de dados umnome identificativo e o nmero de animais dessa variedade quepossui. Pretende tambm registar os produtos derivados de cada

    variedade de animal, em particular a sua designao, a quantidadeproduzida e o seu preo de venda. Cada um destes produtos produzido apenas por uma variedade de animal. Cada variedade deanimal consome vrios alimentos e um dado alimento pode serincludo na alimentao de diversas variedades de animal. necessrio registar os alimentos utilizados, sendo cada alimento

    caracterizado por um nome identificativo e pelo seu preo deaquisio. A base de dados deve ainda conter informao relativa quantidade de cada alimento consumida por cada variedade deanimal.

  • 8/22/2019 AulasBaseDados

    25/89

    25

    Exerccios (cont.):

    3. Pretende-se criar uma base de dados, para efectuar a gesto de umaempresa agrcola, onde seja registada informao relativa aos seustrabalhadores e produo e venda. Sobre cada trabalhadorpretende-se registar o seu nome, data de nascimento e especialidade.Sobre cada produto da explorao agrcola pretende-se conhecer asua designao, rea cultivada e qual o trabalhador responsvel. Emrelao aos compradores e aos fornecedores, pretende-se conhecer asua identificao, morada e telefone. Para cada matria-primapretende-se registar a sua designao e quantidade armazenada. Paracada produto vendido dever ser registado o comprador, a data davenda, a quantidade vendida, o valor da venda e a data do

    recebimento. Para a matria-prima consumida pretende-se registaros produtos a que esta se destina, a data da utilizao e a quantidadeutilizada. Para cada aquisio de matria-prima deve-se conhecer ofornecedor, a data da compra, a quantidade comprada, o valor dacompra e a data de pagamento.

  • 8/22/2019 AulasBaseDados

    26/89

    26

    Produto

    Matria-prima Fornecedor

    Comprador

    Trabalhador

    cdigo-pdesignao-prea

    nmeronomedata_nascespecialidade

    Responsvel

    Venda

    Compra

    Utiliza

    data-uquantidade-u

    cdigo-cidentificao-cmorada-ctelefone-c

    data-vquantidade-vvalor-vdata_recebim

    cdigo-mp

    designao-mpquant-armaz

    data-c

    quantidade-cvalor-cdata-pagam

    cdigo-fidentificao-fmorada-ftelefone-f

    1,1

    0,n

    1,n 0,n

    1,n

    0,n

    1,n 1,n

  • 8/22/2019 AulasBaseDados

    27/89

    27

    SGBD relacional

    Baseiam-se num conjunto de conceitos tericosapresentados em 1970 porE. F. Codd. os conceitos que Codd introduziu foram desenvolvidos

    por outros autores

    actualmente so os mais utilizadosVantagens dos SGBD relacionais:

    simplicidade dos conceitos que utilizam existncia de definies formais para os conceitos

    permitiram uma rpida divulgao permitiram a adeso de diversos fabricantes de software;

    adequao representao de muitos dos aspectos queconstituem a realidade

  • 8/22/2019 AulasBaseDados

    28/89

    28

    Relao

    Nas bases de dados relacionais a estruturafundamental a relao ou tabela.

    Uma relao definida por um esquema. Um esquema composto:

    pelo nome da relao

    pelos nomes de cada um dos atributos

    pelo domnio de cada atributo

    a definio de cada atributo depende do tipo de dados (inteiro,real, alfanumrico, data, lgico ) que o atributo irarmazenar.

  • 8/22/2019 AulasBaseDados

    29/89

    29

    Exemplos de esquemas

    Aluno(nAluno, nomeA, datanasc)

    Professor(nProf, nomeP, categoria)

  • 8/22/2019 AulasBaseDados

    30/89

    30

    Atributos

    Um atributo Ai toma valores num conjunto Dichamado domnio do atributo. O domnio determina o tipo de valores que o atributo

    pode tomar.

    Dado U={A1, A2,...,An}, uma relao R sobre U um subconjunto de D1 x D2 x ... x Dn.

    A cada tuplo deste produto cartesiano d-se o

    nome de instncia da relao R. as linhas da relao R so os registos

    as colunas so os atributos (ou campos)

  • 8/22/2019 AulasBaseDados

    31/89

    31

    Tabela

    O conjunto das instncias da relao R constitu umatabela em que

    - as linhas so as instncias (ou registos)

    -as colunas so os atributos (ou campos)

  • 8/22/2019 AulasBaseDados

    32/89

    32

    Exemplo de uma tabela

    Domnio de naluno: integer (N) Domnio de nome: string 50 (A ) Domnio de datanasc: date (D)

    Cada registo (instncia) um tuplo

    (12345, "Jos Silva", 1980-11-03) NA D

    Atributos ou campos

    Instnciasou

    registos1985-12-25...Natlia Costa...22222...

    1980-11-30Jos Silva12345

    1978-12-03Ana Maria Santos11111

    datanascnomeAnaluno

  • 8/22/2019 AulasBaseDados

    33/89

    33

    Observaes

    Numa relao todas as instncias tm o mesmo nmero deatributos; por exemplo,

    Aluno (nAluno, nomeA, disciplina1, , disciplinaj, ,dataNasc) no uma relao;

    Numa instncia o valor de um atributo sempre atmico; isto , numa tabela, no cruzamento de uma linha com uma coluna s

    pode existir um valor de atributo; numa relao no podem existir instncias iguais; a ordem porque se encontram as instncias de uma relao e os

    seus atributos irrelevante; os valores de cada atributo pertencem a um mesmo domnio;podem existir instncias sem valores em alguns dos seus atributos;

    neste caso o atributo diz-se opcional e o seu valor null; os nomes (ou identificadores) dos atributos que constituem o

    esquema de uma relao so nicos nessa relao.

  • 8/22/2019 AulasBaseDados

    34/89

    34

    Chave(s) de uma relao

    Um atributo que toma valores diferentes para cadainstncia da relao uma chave candidata darelao. cada instncia pode ser identificada pelo valor da

    chave: o valor da chave nunca se repete.Por vezes, uma chave pode ser composta por mais

    do que um atributo. E, no caso extremo, umachave pode at ser composta por todos os atributos

    que definem a relao.

  • 8/22/2019 AulasBaseDados

    35/89

    35

    Chave primria

    Chave primria de uma relao um subcon-junto mnimo de atributos cujos valores permitamidentificar de modo nico cada uma das instnciasdessa relao.

    Atributo primrio: pertence chave primria. Atributo no primrio: no pertence chave

    primria.

  • 8/22/2019 AulasBaseDados

    36/89

    36

    Chave estrangeira

    Nos SGBD relacionais, para representar asassociaes existentes entre as vrias entidadesutilizam-se esquemas de relaes em que figuramatributos comuns.

    Uma chave estrangeira de uma relao umconjunto de atributos que chave primria deoutra relao.

  • 8/22/2019 AulasBaseDados

    37/89

    37

    Restries de integridade

    Condies que devem ser verificadas para que umelemento do produto cartesiano dos domnios dosatributos possa pertencer relao.

    Consequncias imediatas das definies dadas:

    integridade de domnio impostas pelo domnio de cada atributo; integridade de entidade

    no existem duas instncias de uma relao cujas chavestenham o mesmo valor

    valor de uma chave primria (ou mesmo de uma parte dela)

    no pode sernull; integridade de referncia

    o valor de qualquer chave estrangeira de uma relao umvalor da chave primria da relao que refere

  • 8/22/2019 AulasBaseDados

    38/89

    38

    Outras restries de integridade

    Outra categoria de restries: condies que devem ser verificadas pelos valores de

    dois ou mais atributos de uma mesma instncia darelao.

    Algumas restries requerem a utilizao de frmulasmatemticas ou lgicas.

    Exemplo: a data de nascimento de um aluno tem de ser posterior data

    de inscrio nas vrias disciplinas.

  • 8/22/2019 AulasBaseDados

    39/89

    39

    Dependncias funcionais

    Dada um relao R definida sobre um conjunto deatributos U={A1, A2, , An}, diz-se que o atributo Aj

    depende funcionalmente do atributo Ai (AiAj) quando impossvel terem-se duas instncias de R com o mesmo

    valor para Ai e diferentes valores para Aj.

    Exemplo:

    Categoria

    101 Maria321 Joo Assistente

    98 Manuel

    294 Maria Assistente

    Nprof NomeP

    Prof. Aux.

    Prof. Aux.

    no

  • 8/22/2019 AulasBaseDados

    40/89

    40

    Esquema de uma base de dados

    O conjunto das relaes que a compem, definidaspor meio dos seus atributos, e das restries deintegridade.

    Para cada base de dados pode existir um nmero

    quase ilimitado de esquemas.Um esquema tanto melhor quanto mais fcil for

    o seu manuseamento, nomeadamente no que serefere manuteno da sua coerncia aps as

    actualizaes que venha a sofrer.Um esquema tanto melhor quanto menor for o

    nmero de dependncias funcionais nele existente.

  • 8/22/2019 AulasBaseDados

    41/89

    41

    Normalizao

    O objectivo das regras de normalizao definirregras para o agrupamento de atributos de forma aminimizar o nmero de dependncias funcionaisexistentes numa base de dados.

    Resumidamente, pode dizer-se que numa relaoque verifica as primeiras trs formas normais,qualquer atributo que no pertence chavedepende completamente e exclusivamente da

    totalidade da chave.

  • 8/22/2019 AulasBaseDados

    42/89

    42

    Primeira forma normal

    Uma relao R encontra-se na primeira formanormal se e s se todos os seus atributos contmvalores atmicos.

    Por exemplo, o esquemaAluno (nAluno, nomeA, disciplina1, , disciplinaj, ,dataNasc)

    no respeita a 1 forma normal (nem sequer umarelao) porque possui um nmero varivel deatributos.

  • 8/22/2019 AulasBaseDados

    43/89

    43

    Segunda forma normal

    Uma relao R encontra-se na segunda formanormal se e s se: verifica a primeira forma normal e todos os atributos no primrios so funcionalmente

    dependentes da totalidade da chave primria de R. Esta normalizao visa diminuir a duplicao de dados.

    Exemplo:Inscrito (nAluno, cdigo, nomeA, dataNasc)

    no se encontra na 2 forma normal porque ...

    Aplicao da 2 forma normal a esta relao:Inscrito (nAluno, cdigo)Aluno (nAluno, nomeA, dataNasc)

  • 8/22/2019 AulasBaseDados

    44/89

    44

    Terceira forma normal

    Uma relao R encontra-se na terceira formanormal se e s se: verifica a segunda forma normal e

    no contm dependncias funcionais entre atributos no

    primrios. Um atributo que no pertence chave primria da relao no

    pode ser funcionalmente dependente de outro atributo quetambm no pertence chave da relao.

    Exemplo:

    Disciplina (cdigo, designao, nProf, nomeP, categoria)no se encontra na 3 forma normal, mas

    Disciplina (cdigo, designao, nProf)

    Professor (nProf, nomeP, categoria)

    j esto na terceira forma normal.

  • 8/22/2019 AulasBaseDados

    45/89

    45

    Passagem do modelo E-A para relacional

    Um modelo de tipo E-A descreve bem e de umaforma natural e simples a realidade.

    Os modelos deste tipo so suficientementeflexveis para poderem ser utilizados eficazmente

    numa fase em que a estruturao dos dados aindaconfusa.

    A estas vantagens pode ainda adicionar-se afacilidade com que possvel efectuar a sua

    passagem para um SGBD relacional, bemformalizado e comercializado por diversosfornecedores desoftware.

  • 8/22/2019 AulasBaseDados

    46/89

    46

    Regras para transformao de um modeloE-A num esquema relacional (1)

    Cada tipo de entidades do modelo E-A traduz-sepor uma relao em que a chave primria e osatributos provm do tipo de entidade.

    Aluno (nAluno, nomeA, dataNasc)

    Disciplina (cdigo, designao)

    Professor (nProf, nomeP, categoria)

    cdigo

    designao

    nAlunonomeAdataNasc

    nProfnomePcategoria

    dataInsc

    Disciplina Professor

    Aluno

    Inscrito

    Responsabilidade

    1:n

    n:n

    1,1

    1,n

    0,n

    0,n

  • 8/22/2019 AulasBaseDados

    47/89

    47

    Regras para transformao de um modeloE-A num esquema relacional (2)

    Um tipo de associao de 1:n (um para muitos)entre dois tipos de entidades Ei e Ej que tenha umamultiplicidade igual a 0,1 ou 1,1 para um tipo deentidade Ei traduz-se por uma chave estrangeira na

    relao R que traduo de Ej.

    Disciplina (cdigo, designao, nProf)

    cdigodesignao

    nAlunonomeAdataNasc

    nProfnomePcategoria

    dataInsc

    Disciplina Professor

    Aluno

    Inscrito

    Responsabilidade

    1:n

    n:n

    1,1

    1,n

    0,n

    0,n

  • 8/22/2019 AulasBaseDados

    48/89

    48

    Regras para transformao de um modeloE-A num esquema relacional (2')

    Um tipo de associao de 1:1 (um para um) entredois tipos de entidades Ei e Ej tratado como umcaso especial do tipo de associao 1:n traduz-se por uma chave estrangeira na relao que

    traduo de Ej ou de Ei; se apenas para um destes tipos entidades a

    multiplicidade for 1,1 (sendo para a outra 0,1) d-sepreferncia relao que traduz este tipo de entidade,

    no caso contrrio indiferente qual a relao que escolhida.

  • 8/22/2019 AulasBaseDados

    49/89

    49

    Regras para transformao de um modeloE-A num esquema relacional (3)

    Um tipo de associao de n:n (muitos para muitos)traduz-se por uma relao em que a chave

    primria inclui as chaves estrangeiras que sochave primria dos tipos de entidade que a

    constituem; os outros atributos so a traduo dostipos de atributos da associao (se esta possuiralgum). No caso das chaves estrangeiras no serem suficientes

    para formar a chave primria da relao, naconstituio desta devem tambm ser utilizados outrosatributos de forma a ser obtida uma chave primriaadequada relao.

  • 8/22/2019 AulasBaseDados

    50/89

    50

    Aluno (nAluno, nomeA, dataNasc)

    Disciplina (cdigo, designao, nProf)

    Professor (nProf, nomeP, categoria)

    Inscrito (nAluno, cdigo, dataInsc)

    Cacifo (nCacifo, local, nAluno,dataAlug)

    Na notao utilizada um duplo sublinhado indica que o conjunto de atributos a chave primria da relao um sublinhado simples tracejado indica uma chave estrangeira.

    Regras para transformao de um modeloE-A num esquema relacional (3) (exemplo)

    cdigodesignao

    nAlunonomeAdataNasc

    dataInsc

    Disciplina Professor

    Aluno

    Inscrito

    Responsabilidade

    nProfnomePcategoria

    1:n

    n:n

    1,1

    1,n

    0,n

    0,n

    nCacifolocal

    Aluga Cacifo

    dataAlug

    0,11,11:1

  • 8/22/2019 AulasBaseDados

    51/89

    51

    Traduo do Modelo E-A no Modelo Relacional

    Estas regras permitem que se proceda de umaforma rpida (e quase automtica) passagem deum modelo Entidade-Associao em que sexistam associaes binrias para um esquema

    relacional.

  • 8/22/2019 AulasBaseDados

    52/89

    52

    Exerccio:

    A partir dos modelos entidade associaoestabelecidos nos exerccios anteriores, crie, para cadaum deles, um esquema relacional que respeite aterceira forma normal.

  • 8/22/2019 AulasBaseDados

    53/89

    53

    OpenOffice.org Base

    O Open Office.org um conjunto de aplicaesmultiplataforma (Windows, Linux, Sun Solaris,Mac OS X, FreeBSD), open source e dedistribuio gratuita (www.openoffice.org).

    O OpenOffice.org Base um sistema de gesto debases de dados relacionais que utiliza como motorda base de dados o HSQLDB (www.hsqldb.org) eque suporta a linguagem SQL.

    O SQL, Structured Query Language, umalinguagem normalizada (ANSI) usada paramanipular a informao de uma base de dadosrelacional.

    http://www.openoffice.org/http://www.hsqldb.org/http://www.hsqldb.org/http://www.openoffice.org/
  • 8/22/2019 AulasBaseDados

    54/89

    54

    Criao de uma base de dados em Base

    Activar a aplicao:Start Programs OpenOffice.org 2.1

    OpenOffice.org Base

  • 8/22/2019 AulasBaseDados

    55/89

    55

    Criao de uma base de dados (cont.)

    Exerccio: Crie uma base de dados designada PrimeiraBD,salvando-a na pasta de trabalho BDados, na sua rea pessoal,no servidorquercus.

  • 8/22/2019 AulasBaseDados

    56/89

    56

    Criao de uma tabela

  • 8/22/2019 AulasBaseDados

    57/89

    57

    Para adicionar /alterar registosnuma tabela necessrio abrir a

    tabela: duplo clique nonome da tabela, ou

    aps clicar com oboto direito do

    rato, seleccionarOpen, ou

    menu Edit OpenDatabase Object...

    Introduo de dados numa tabela

  • 8/22/2019 AulasBaseDados

    58/89

    58

    Exerccio:

    Crie as tabelas Trabalhador e Produto, da base dedados do exerccio 3, com os seguintes registos:

  • 8/22/2019 AulasBaseDados

    59/89

    59

    Implementao de restries de integridadede referncia

    1

    2

    3

  • 8/22/2019 AulasBaseDados

    60/89

    60

    Restries de integridade de referncia:exemplo da base de dados Explorao

  • 8/22/2019 AulasBaseDados

    61/89

    61

    Consultas a uma base de dados

    As operaes de consulta (e actualizao) de umabase de dados denominam-se queries.

    As regras do modelo relacional levaram aodesenvolvimento de uma linguagem, o SQL, que

    permite efectuar eficientemente queries.Iniciar a criao de uma query em SQL:

  • 8/22/2019 AulasBaseDados

    62/89

    62

    13executara query

    2 escrever oscomandos SQL

    Execuo de uma query em SQL

    1 Seleccionar o icon SQL (deste modo os comandos sodirectamente executados no motor da base de dados);

    2 Escrever os comandos SQL nas verses mais recentes do OpenOffice.org Base necessrio

    colocar entre aspas os nomes das tabelas e dos campos;3 Executar a query.

  • 8/22/2019 AulasBaseDados

    63/89

    63

    A instruo SELECT

    As consultas a uma base de dados relacionalfazem-se em SQL recorrendo instruoSELECT. Esta instruo permite criar conjuntosde registos de uma ou mais tabelas da base de

    dados seleccionados segundo diversos critrios.A sintaxe completa da instruo SELECT

    complexa.

    A f i i l d i

  • 8/22/2019 AulasBaseDados

    64/89

    64

    A forma mais simples da instruoSELECT

    utiliza apenas a clusula FROMselecciona todos os registos de uma tabela

    Sintaxe 1 variante:SELECT { * | table.* | [table.]field1 [, [table.]field2 [, ...]]}FROM table;

    onde* especifica que todos os campos devem ser seleccionados

    table especifica o nome da tabela que contm os campos e os registos

    seleccionadosfield especifica os nomes dos campos que so seleccionados

  • 8/22/2019 AulasBaseDados

    65/89

    65

    Considere a base de dados Explorao1

    com o seguinte esquemarelacional:Trabalhador (numero, nome, dataNasc, especialidade)Produto (codigoP, designacaoP, area, numero)Comprador (codigoC, identificacaoC, moradaC,telefoneC)

    Venda (codigoP, codigoC, dataV, quantidadeV, valorV,dataRecebim)MateriaPrima (codigoMP, designacaoMP, quantArmaz)Utiliza (codigoP, codigoMp, dataU, quantidadeU)Fornecedor (codigoF, identificacaoF, moradaF, TelefoneF)

    Compra (codigoMp, codigoF, dataC, quantidadeC, valorC,dataPagam)

    1 \\prunus\home\cadeiras\MatInf\BDados\Explorao.odb

    Exemplo

  • 8/22/2019 AulasBaseDados

    66/89

    A f i i l d i t SELECT

  • 8/22/2019 AulasBaseDados

    67/89

    67

    A forma mais simples da instruo SELECT(exemplo)

    Seleccionar todos os produtos e os valores de todos osseus atributos.

    SELECT *FROM Produto;

    Conjunto de registos seleccionados:

    21rosa8

    42.6batata7

    16.5feijo verde6

    44.5cenoura5

    numeroareadesignacaoPcodigoP

  • 8/22/2019 AulasBaseDados

    68/89

    68

    A clusula WHERE

    permite especificar uma condio que os registosseleccionados verificam.Sintaxe 2 variante:

    SELECT fieldlist

    FROM tableWHERE condition;

    ondefieldlist ...table ...

    condition uma condio que os registos seleccionados verificam; podemser utilizados operadores relacionais (=, =, ) ,operadores lgicos (NOT, AND, OR) e os operadores IN, ISBETWEEN e LIKE.

  • 8/22/2019 AulasBaseDados

    69/89

    69

    A clusula WHERE (exemplo)

    Seleccionar os cdigos dos produtos vendidos desde1999-04-01, os cdigos dos compradores que oscompraram, as datas destas vendas e os respectivosvalores.

    SELECT codigoP, codigoC, dataV, valorV

    FROM VendaWHERE dataV > {D 1999-04-01};

    Conjunto de registos seleccionados:

    6000005-04-199926

    4500007-04-199915

    valorVdataVcodigoCcodigoP

  • 8/22/2019 AulasBaseDados

    70/89

    70

    A clusula FROM

    A clusula FROM especifica o(s) nome(s) da(s)tabela(s) em que se encontram os registos aseleccionar.

    Quando indicada mais do que uma tabela, a

    instruo SELECT produz um conjunto deregistos cujos campos so os indicados na lista decampos.

    Os registos seleccionados correspondem aos

    tuplos do produto cartesiano das tabelasespecificadas, isto , cada registo composto porum registo de cada uma dessas tabelas.

  • 8/22/2019 AulasBaseDados

    71/89

    71

    A clusula FROM

    Sintaxe 3 variante:SELECT fieldlist

    FROM tableexpression

    [ WHERE condition ] ;

    ondetableexpression especifica o(s) nome(s) da(s) tabela(s) que contm oscampos e os registos seleccionados.

    Exemplo:

    SELECT designacaoP, area, Produto.numero,Trabalhador.numero, nome, especialidade

    FROM Produto, Trabalhador;

  • 8/22/2019 AulasBaseDados

    72/89

  • 8/22/2019 AulasBaseDados

    73/89

    73

    A clusula FROM e a clusula WHERE

    Quando a clusula FROM refere mais do que umatabela, a clusula WHERE frequentementeutilizada para seleccionar no resultado do produtocartesiano os tuplos que correspondem a registos

    em que o valor de uma chave estrangeira igualao valor de uma chave primria.Neste caso, a instruo SELECT produz um

    subconjunto do produto cartesiano das tabelas

    referidas na clusula FROM e usual dizer-se quese efectua umjoin ou cruzamento de tabelas.

    A l l FROM l l WHERE

  • 8/22/2019 AulasBaseDados

    74/89

    74

    A clusula FROM e a clusula WHERE(exemplos)

    Para cada produto seleccionar a designao, a rea e onmero, nome e especialidade do respectivo responsvel.SELECT designacaoP, area, Trabalhador.numero, nome,

    especialidade

    FROM Produto, Trabalhador

    WHERE Produto.numero=Trabalhador.numero;

    Conjunto de registos seleccionados:

    eng agrnomoJoana Garcia42.6batata

    eng agrnomoJoana Garcia44.5cenoura

    jardineiroLusa Ferreira21rosa

    horteloJoo Dias16.5feijo verde

    especialidadenomenumeroareadesignacaoP

  • 8/22/2019 AulasBaseDados

    75/89

    75

    Eliminao de registos duplicados

    Algumas queries podem conduzir a conjuntos deregistos com duplicaes. Os registos duplicadospodem ser eliminados recorrendo utilizao deDISTINCT.

    Sintaxe 4 variante:SELECT DISTINCT fieldlistFROM tableexpressionWHERE condition;

    Eliminao de registos duplicados

  • 8/22/2019 AulasBaseDados

    76/89

    76

    Eliminao de registos duplicados(exemplo)

    Seleccionar o nmero, nome e especialidade dostrabalhadores que so responsveis por algum produto.

    SELECT DISTINCT Trabalhador.numero, nome,especialidade

    FROM Produto, TrabalhadorWHERE Produto.numero=Trabalhador.numero;

    Conjunto de registos seleccionados:

    eng agrnomoJoana Garcia4

    jardineiroLusa Ferreira2

    horteloJoo Dias1

    especialidadenomenumero

  • 8/22/2019 AulasBaseDados

    77/89

    77

    Sub-query numa clusula WHERE

    Na clusula WHERE pode ainda figurar umaquery, neste caso denominada sub-query,constituda por outra instruo SELECT.

    O resultado dasub-query define um conjunto de

    valores que so utilizados na condioespecificada pela clusula WHERE.

    Sub query numa clusula WHERE

  • 8/22/2019 AulasBaseDados

    78/89

    78

    Sub-query numa clusula WHERE(exemplo)

    Seleccionar as designaes dos produtos dos quais j setenham efectuado vendas, e o nome e a especialidade dosrespectivos reponsveis.

    SELECT nome, especialidade, designacaoPFROM Trabalhador, Produto

    WHERE Trabalhador.numero=Produto.numeroAND Produto.codigoP IN (SELECT codigoP

    FROM Venda);

    Conjunto de registos seleccionados:

    feijo verdehorteloJoo Dias

    cenouraeng agrnomoJoana Garcia

    designacaoPespecialidadenome

  • 8/22/2019 AulasBaseDados

    79/89

    79

    A clusula ORDER BY

    A clusula ORDER BY apenas ordena os registosseleccionados pelos valores de um conjunto decampos especificado.

    Sintaxe 5 variante:

    SELECT fieldlistFROM tableexpression

    WHERE condition

    ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ][, ...]];

    ondeASC especifica a ordem ascendenteDESC especifica a ordem descendente

  • 8/22/2019 AulasBaseDados

    80/89

    80

    Aliases

    possvel definir novos nomes (aliases) para onome das tabelas e/ou dos campos utilizados numainstruo SELECT.

    Exemplo: Para cada produto seleccionar a designao, area e o nome e especialidade do respectivo responsvel. Oresultado deve ser apresentado por ordem decrescente darea do produto.

    SELECT designacaoP AS prod, area, nome AS responsvel,especialidade

    FROM Produto AS P, Trabalhador AS T

    WHERE P.numero=T.numero

    ORDER BY area DESC;

  • 8/22/2019 AulasBaseDados

    81/89

    81

    Funes de agregao

    Estas funes possibilitam o resumo dosresultados de uma seleco de registos, comoalternativa seleco de registos. Podem serutilizadas as funes SUM, AVG, MAX, MIN e

    COUNT.

  • 8/22/2019 AulasBaseDados

    82/89

    82

    Funes de agregao (exemplo)

    Seleccionar a rea total de todos os produtos, a rea mdiapor produto e o nmero de produtos existentes

    SELECTSUM(area)AS rea total,AVG (area) AS rea mdia,

    COUNT(*)AS N de produtosFROM Produto;

    Conjunto de registos seleccionados:

    43.6514.6N de produtosrea mdiarea total

  • 8/22/2019 AulasBaseDados

    83/89

    83

    Clusula GROUP BY

    A utilizao de funes de agregao feitafrequentemente em conjunto com a clusulaGROUP BY. Esta especifica os conjuntos deregistos seleccionados que so objecto da(s)

    funo(es).Quando utilizada a clusula GROUP BY, s

    podem ser indicados na clusula SELECT osatributos includos na clusula GROUP BY (para

    alm daqueles que so objecto de uma funo).

  • 8/22/2019 AulasBaseDados

    84/89

    84

    Clusula GROUP BY (exemplo)

    Para cada produto seleccionar o respectivo cdigo,nmero de vendas e a quantidade total dessas vendas.

    SELECT codigoP, COUNT(codigoP) AS N de vendas,SUM(quantidadeV) AS Quantidade Tot

    FROM VendaGROUP BY "codigoP";

    Conjunto de registos seleccionados:

    55026

    55.625

    Quantidade TotN de vendascodigoP

  • 8/22/2019 AulasBaseDados

    85/89

    85

    Clusula GROUP BY ... HAVING

    A clusula GROUP BY pode ser utilizada emconjunto com HAVING para restringir os registosseleccionados queles que verificam a condioespecificada em HAVING.

  • 8/22/2019 AulasBaseDados

    86/89

    86

    Clusula GROUP BY ... HAVING (exemplo)

    Para cada produto com vendas no pagas numa qantidadetotal superior ou igual a 250, seleccionar o respectivocdigo, nmero de vendas por pagar e a quantidade totaldessas vendas.

    SELECT codigoP, COUNT(codigoP) AS N de vendas,SUM(quantidadeV)AS Quantidade Tot

    FROM Venda

    WHERE dataRecebim ISNULL

    GROUP BY codigoPHAVING SUM(quantidadeV)>=250;

    Conjunto de registos seleccionados:

    55026

    Quantidade TotN de vendascdigoP

  • 8/22/2019 AulasBaseDados

    87/89

    87

    O operador UNION

    UNION usado para combinar o resultado de duas ou maisinstrues SELECT num nico conjunto de resultados.

    Cada instruo SELECT tem de ter como resultado o mesmonmero de colunas.

    As colunas correspondentes nas vrias instrues SELECT tm de

    ter tipos de dados compatveis.No resultado final, o nome das colunas corresponde ao do

    primeiro SELECT.SELECT ...

    UNION

    SELECT ...

    [UNION

    SELECT ...]

    [ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ][, ...]];

  • 8/22/2019 AulasBaseDados

    88/89

    88

    O operador UNION (exemplo)

    Seleccionar os cdigos e as identificaes de todos oscompradores e fornecedores indicando os que so clientes eos que so fornecedores.

    SELECT codigoC AS cdigo, identificacaoC AS Nome,

    'Cliente' AS TipoFROM Comprador

    UNION

    SELECT codigoF, identificacaoF, 'Fornecedor'

    FROM Fornecedor;codigo nome Tipo

    1 Ana Sousa Fornecedor 1 Manel Maria Cliente2 Luisa Fraga Cliente

    3 Duarte Silva Cliente

    O i SQL

  • 8/22/2019 AulasBaseDados

    89/89

    Outras instrues SQL

    A linguagem SQL inclui outras instrues paradefinio/alterao do esquema de uma base dedados: CREATE TABLE

    ALTER TABLE INSERT DELETE UPDATE