Академический Документы
Профессиональный Документы
Культура Документы
F.C.T.
Apresentao
Este curso tem como objetivo, oferecer uma noo geral sobre a construo de sistemas de banco de dados. Para isto, necessrio estudar modelos para a construo de projetos lgicos de bancos de dados, modelos para a construo de projetos fsicos de banco de dados, tcnicas de controle de dependncia de dados e mtodos de consultas. Para construo dos modelos lgicos, ser estudado o modelo Entidade Relacionamento, utilizando a abordagem proposta em [ELMAS89] que oferece uma notao rica em recursos, permitindo a modelagem de entidades normais, fracas, atributos simples, compostos, multivalorados, derivados e a modelagens de objetos mais complexos como classes e subclasses (modelo Entidade Relacionamento Extendido). Para construo dos modelos fsicos, ser estudado o modelo Relacional como originalmente proposto por Codd. Para eliminar dependncia de dados, utilizaremos a normalizao, abordando a 1 a, a 2a, a 3 Formas Normais, propostas originalmente por Codd.
a
Para a elaborao de consultas, ser estudado a lgebra Relacional, que nada mais do que uma forma cannica para as linguagens de consulta e a linguagem de consultas SQL.
Pgina 1
F.C.T.
No processamento tradicional de arquivos, a estrutura dos dados est incorporada ao programa de acesso. Desta forma, qualquer alterao na estrutura de arquivos implica na Software de Acesso aos alterao no cdigo fonte de todos os programas. J na abordagem banco de dados, a estrutura Dados alterada apenas no catlogo, no alterando os programas.
Pgina 2
F.C.T.
1.2. Usurios
Para um grande banco de dados, existe um grande nmero de pessoas envolvidas, desde o projeto, uso at manuteno.
F.C.T.
outras responsabilidades aps a construo do banco de dados. funo do projetista tambm avaliar as necessidades de cada grupo de usurios para definir as vises que sero necessrias, integrando-as, fazendo com que o banco de dados seja capaz de atender a todas as necessidades dos usurios.
F.C.T.
Um SGBD deve fornece um subsistema de autorizao e segurana, o qual utilizado pelo DBA para criar contas e especificar as restries destas contas; o controle de restries se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD.
Pgina 5
F.C.T.
NVEL EXTERNO
Viso Externa 1
...
Viso Externa n
A principal meta da arquitetura trs esquemas (figura 2) separar as aplicaes do Mapeamento usurio do banco de dados fsico. Os esquemas podem ser definidos como: Conceitual Externo nvel interno: ou esquema interno, o qual descreve a estrutura de armazenamento fsico do banco de dados; utiliza um modelo de dados e descreve detalhadamente Esquema Conceitual os dados armazenados e os caminhos de acesso ao banco de dados; NVEL nvel conceitual: ou esquema conceitual, o qual descreve a estrutura do banco de Mapeamento dados como um todo; uma descrio global do banco de dados, que no fornece Conceitual Interno detalhes do modo como os dados esto fisicamente armazenados; nvel externo: ou esquema de viso, o qual descreve as vises do banco de dados para um grupo de usurios; cada viso descreve quais pores do banco de dados um grupo NVEL Esquema Interno INTERNO de usurios ter acesso.
CONCEITUAL
Pgina 6
F.C.T.
F.C.T.
descries dos esquemas e para armazen-las no catlogo do SGBD. A DDL utilizada em SGBDs onde a separao entre os nveis interno e conceitual no muito clara. Em um SGBD em que a separao entre os nveis conceitual e interno so bem claras, utilizado uma outra linguagem, a SDL (Storage Definition Language - Linguagem de Definio de Armazenamento) para a especificao do esquema interno. A especificao do esquema conceitual fica por conta da DDL. Em um SGBD que utiliza a arquitetura trs esquemas, necessria a utilizao de mais uma linguagem para a definio de vises, a VDL (Vision Definition Language - Linguagem de Definio de Vises). Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma linguagem para fazer a manipulao dos dados, a DML (Data Manipulation Language Linguagem de Manipulao de Dados).
Pgina 8
F.C.T.
programas de aplicao
chamadas de rotina
consultas
processador de consultas
SGBD
gerenciador de arquivos
Pgina 9
F.C.T.
Mini-Mundo
Projeto Conceitual Esquema Conceitual (Alto Nvel) Mapeamento do Modelo de Dados Esquema Conceitual (Modelo do SGBD) Projeto Fsico
Catlogo do BD
F.C.T.
O objeto bsico tratado pelo modelo ER a entidade, que pode ser definida como um objeto do mundo real, concreto ou abstrato e que possui existncia independente. Cada entidade possui um conjunto particular de propriedades que a descreve chamado atributos. Um atributo pode ser dividido em diversas sub-partes com significado independente entre si, recebendo o nome de atributo composto. Um atributo que no pode ser subdividido chamado de atributo simples ou atmico. Os atributos que podem assumir apenas um determinado valor em uma determinada instncia denominado atributo simplesmente valorado, enquanto que um atributo que pode assumir diversos valores em uma mesma instncia denominado multi valorado. Um atributo que gerado a partir de outro atributo chamado de atributo derivado.
d1 d2 d3
Pgina 11
F.C.T.
e1 e2 e3 e4 Supervisiona
Pgina 12
F.C.T.
Figura 6 - Um Relacionamento Recursivo No exemplo, temos um relacionamento entre o tipo entidade EMPREGADO, onde um empregado pode supervisionar outro empregado e um empregado pode ser supervisionado por outro empregado.
d1 d2 d3
Figura 7 - Relacionamento EMPREGADO gerencia DEPARTAMENTO No exemplo da figura 7, temos a seguinte situao: um empregado pode gerenciar apenas um departamento, enquanto que um departamento, pode ser gerenciado por apenas um empregado. A este tipo de restrio, ns chamamos cardinalidade. A cardinalidade indica o nmero de relacionamentos dos quais uma entidade pode participar. A cardinalidade pode ser: 1:1, 1:N, M:N. No exemplo da figura 7, a cardinalidade 1:1, pois cada entidade empregado pode gerenciar apenas um departamento e um departamento pode ser gerenciado por apenas um empregado. No exemplo da figura 5, no relacionamento EMPREGADO Trabalha Para DEPARTAMENTO, o relacionamento 1:N, pois um empregado pode trabalhar em apenas um departamento, enquanto que um departamento pode possuir vrios empregados. Na figura 8 temos um exemplo de um relacionamento com cardinalidade N:M. Sistemas de Bancos de Dados Pgina 13
F.C.T.
p1 p2 p3
Figura 8 - Relacionamento N:M No exemplo da figura 8, ns temos que um empregado pode trabalhar em vrios projetos enquanto que um projeto pode ter vrios empregados trabalhando. Outra restrio muito importante a participao. A participao define a existncia de uma entidade atravs do relacionamento, podendo ser parcial ou total. Veja o exemplo da figura 7. A participao do empregado parcial pois nem todo empregado gerencia um departamento, porm a participao do departamento neste relacionamento total pois todo departamento precisa ser gerenciado por um empregado. Desta forma, todas as entidades do tipo entidade DEPARTAMENTO precisam participar do relacionamento, mas nem todas as entidade do tipo entidade EMPREGADO precisam participar do relacionamento. J no exemplo da figura 5, ambas as participaes so totais pois todo empregado precisa trabalhar em um departamento e todo departamento tem que ter empregados trabalhando nele. Estas restries so chamadas de restries estruturais. Algumas vezes, torna-se necessrio armazenar um atributo no tipo relacionamento. Veja o exemplo da figura 7. Eu posso querer saber em que dia o empregado passou a gerenciar o departamento. difcil estabelecer a qual tipo entidade pertence atributo, pois o mesmo definido apenas pela existncia do relacionamento. Quando temos relacionamentos com cardinalidade 1:1, podemos colocar o atributo em uma das entidades, de preferncia, em uma cujo tipo entidade tenha participao total. No caso, o atributo poderia ir para o tipo entidade departamento. Isto porque nem todo empregado participar do relacionamento. Caso a cardinalidade seja 1:N, ento podemos colocar o atributo no tipo entidade com participao N. Porm, se a cardinalidade for N:M, ento o atributo dever mesmo ficar no tipo relao. Veja o exemplo da figura 8. Caso queiramos armazenar quantas horas cada empregado trabalhou em cada projeto, ento este dever ser um atributo do relacionamento.
p1 p2 p3
Pgina 14
F.C.T.
Figura 9 - Relacionamento com uma Entidade Fraca (Dependente) O tipo entidade DEPENDENTE uma entidade fraca pois no possui um mtodo de identificar uma entidade nica. O EMPREGADO no uma entidade fraca pois possui um atributo para identificao (atributo chave). O nmero do RG de um empregado identifica um nico empregado. Porm, um dependente de 5 anos de idade no possui necessariamente um documento. Desta forma, esta entidade um tipo entidade fraca. Um tipo entidade fraca possui uma chave parcial, que juntamente com a chave primria da entidade proprietria forma uma chave primria composta. Neste exemplo: a chave primria do EMPREGADO o RG. A chave parcial do DEPENDENTE o seu nome, pois dois irmos no podem ter o mesmo nome. Desta forma, a chave primria desta entidade fica sendo o RG do pai ou me mais o nome do dependente. Todos os exemplos vistos acima foram para relacionamentos binrios, ou seja, entre dois tipos entidades diferentes ou recursivos. Porm, o modelo entidade relacionamento no se restringe apenas relacionamentos binrios. O nmero de entidades que participam de um tipo relacionamento irrestrito e armazenam muito mais informaes do que diversos relacionamentos binrios. Considere o seguinte exemplo: Um motorista pode efetuar uma viagem para uma localidade dirigindo um determinado caminho em uma determinada data. Se efetuarmos trs relacionamentos binrios, no teremos estas informaes de forma completa como se criassemos um relacionamento ternrio. Veja o resultado como fica no exemplo da figura 10.
data 1
data 2
M1 M2 M3 M4
C1 C2 C3
data 3
data 4 data 5 L1 L2 L3
Pgina 15
F.C.T.
Pgina 16
F.C.T.
TIPO ENTIDADE
ATRIBUTO DERIVADO
E1
E2
E1
E2
(min, max)
E1
Pgina 17
F.C.T.
O primeiro conceito do modelo ERE que ser abordado o de subclasse de um tipo entidade. Como visto anteriormente, um tipo entidade utilizado para representar um conjunto de entidades do mesmo tipo. Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de entidades que so significativas e precisam ser representadas explicitamente devido ao seu significado aplicao de banco de dados. Leve em considerao o seguinte exemplo: Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as seguintes caractersticas: nome, rg, cic, nmero funcional, endereo completo (rua, nmero, complemento, cep, bairro, cidade), sexo, data de nascimento e telefone (ddd e nmero); caso o(a) funcionrio(a) seja um(a) engenheiro(a), ento deseja-se armazenar as seguintes informaes: nmero do CREA e especialidade (Civil, Mecnico, Eltro/Eletrnico); caso o(a) funcionrio(a) seja um(a) secretrio(a), ento deseja-se armazenar as seguinte informaes: qualificao (bi ou tri lngue) e os idiomas no qual possui fluncia verbal e escrita. Se as informaes nmero do CREA, especialidade, tipo e idiomas forem representadas diretamente no tipo entidade empregado estaremos representando informaes de um conjunto limitados de entidades empregado para os todos os funcionrios da empresa. Neste caso, podemo criar duas subclasses do tipo entidade empregado: engenheiro e secretria, as quais iro conter as informaes acima citadas. Alm disto, engenheiro e secretria podem ter relacionamentos especficos. Uma entidade no pode existir meramente como componente de uma subclasse. Antes de ser componente de uma subclasse, uma entidade deve ser componente de uma superclasse. Isto leva ao conceito de herana de atributos; ou seja, a subclasse herda todos os atributos da superclasse. Isto porque a entidade de subclasse representa as mesmas caracterscticas de uma mesma entidade da superclasse. Uma subclasse pode herdar atributos de superclasses diferentes. A figura 12 mostra a representao diagramtica do exemplo acima.
nome no. funcional sexo rg dt. nasc.
Empregado
endereo
Funo d
qualificao
No registro
especializao
Engenheiro
Secretria
idiomas
3.8.3. Especializao
Pgina 18
F.C.T.
Especializao o processo de definio de um conjunto de classes de um tipo entidade; este tipo entidade chamado de superclasse da especializao. O conjunto de subclasses formado baseado em alguma caracterstica que distingua as entidades entre si. No exemplo da figura 12, temos uma especializao, a qual podemos chamar de funo. Veja agora no exemplo da figura 13, temos a entidade empregado e duas especializaes.
Empregado
Funo d
Categoria Salarial d
Engenheiro
Secretria
Horista
Mensalista
Figura 13 - Duas Especializaes para Empregado: Funo e Categoria Salarial Como visto anteriormente, uma subclasse pode ter relacionamentos especficos com outras entidades ou com a prpria entidade que a sua superclasse. Veja o exemplo da figura 14.
Empregado
O processo de especializao nos permite: definir um conjunto de subclasses de um tipo entidade; associar atributos especficos adicionais para cada subclasse; Sistemas de Bancos de Dados Pgina 19
F.C.T.
3.8.4. Generalizao
A generalizao pode ser pensada como um processo de abstrao reverso ao da especializao, no qual so suprimidas as diferenas entre diversos tipos entidades, identificando suas caractersticas comuns e generalizando estas entidades em uma superclasse
no. funcional
qualificao
especializao
Engenheiro
nome rg
Secretria
nome
idiomas rg
rg
Empregado Funo d
qualificao
no registro
especializao
Engenheiro
Secretria
idiomas
Figura 16 - Generalizao Empregado para os Tipos Entidades Engenheiro e Secretria importante destacar que existe diferena semntica entre a especializao e a generalizao. Na especializao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao simples, indicando participao parcial por parte da superclasse. Analisando o exemplo da figura 12, observado que um empregado no obrigado a ser um engenheiro ou uma secretria. Na generalizao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao duplo, indicando participao total por parte da superclasse. Analisando o exemplo da figura 16, observado que um empregado obrigado a ser um engenheiro ou uma secretria. A letra d dentro do crculo que especifica uma especializao ou uma generalizao significa disjuno. Uma disjuno em uma especializao ou generalizao indica que uma entidade do tipo entidade que representa a superclasse pode assumir apenas um papel dentro da Sistemas de Bancos de Dados Pgina 20
F.C.T.
mesma. Analisando o exemplo da figura 13. Temos duas especializaes para a superclasse Empregado, as quais so restringidas atravs de uma disjuno. Neste caso, um empregado pode ser um engenheiro ou uma secretria e o mesmo pode ser horista ou mensalista. Alm da disjuno podemos ter um overlap, representado pela letra o. No caso do overlap, uma entidade de uma superclasse pode ser membro de mais que uma subclasse em uma especializao ou generalizao. Analise a generalizao no exemplo da figura 17. Suponha que uma pea fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido manufaturada e torneada.
Pea
o
No. Projeto
Data
Ordem Servio
Manufaturada
Torneada
Preo
Funo d
Categoria
Salarial
Secretaria
Engenheiro
Mensalista
Horista
Pgina 21
Gerente
F.C.T.
Figura 18 - Um Lattice com a Subclasse Gerente Compartilhada Neste caso ento, um gerente ser um funcionrio que alm de possuir as caractersticas prprias de Gerente, herdar as caractersticas de Engenheiro e de Mensalista.
Pgina 22
F.C.T.
4. O Modelo Relacional
O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleo de relaes, onde cada relao representada por uma tabela, ou falando de uma forma mais direta, um arquivo. Porm, um arquivo mais restrito que uma tabela. Toda tabela pode ser considerada um arquivo, porm, nem todo arquivo pode ser considerado uma tabela. Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela representa uma coleo de dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instncia de uma entidade ou de um relacionamento. O nome da tabela e das colunas desta tabela so utilizados para facilitar a interpretao dos valores armazenados em cada linha da tabela. Todos os valores em uma coluna so necessariamente do mesmo tipo. Na terminologia do modelo relacional, cada tabela chamada de relao; uma linha de uma tabela chamada de tupla; o nome de cada coluna chamado de atributo; o tipo de dado que descreve cada coluna chamado de domnio.
Um esquema de relao R, denotado por R(A1, A2, ... , An), onde cada atributo Ai o nome do papel desempenhado por um domnio D no esquema relao R, onde D chamado domnio de Ai e denotado por dom(Ai). O grau de uma relao R o nmero de atributos presentes em seu esquema de relao. A instncia r de um esquema relao denotado por r(R) um conjunto de n-tuplas r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domnio D. O valor nulo tambm pode fazer parte do domnio de um atributo e representa um valor no conhecido para uma determinada tupla.
F.C.T.
Volume, No da Revista) uma superchave e uma chave, pois qualquer um dos atributos que retirarmos, deixaremos de ter uma superchave, ou seja, (Nome da Revista, Volume) no identifica uma nica tupla. Em outras palavras, uma superchave uma chave composta, ou seja, uma chave formada por mais que um atributo. Veja o exemplo abaixo:
Tabela DEPENDENTES RG Responsvel 10101010 10101010 20202020 20202020 30303030 Nome Dependente Jorge Luiz Fernanda Angelo Fernanda Dt. Nascimento 27/12/86 18/11/79 14/02/69 10/02/95 01/05/90 Relao Filho Filho Conjuge Filho Filho Sexo Masculino Masculino Feminino Masculino Feminino
Quando uma relao possui mais que uma chave (no confundir com chave composta) como por exemplo RG e CIC para empregados - cada uma destas chaves so chamadas de chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primria. Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento entre as tabelas R1 e R2.
Tabela DEPARTAMENTO Nome Contabilidade Engenharia Civil Engenharia Mecnica Nmero 1 2 3 RG Gerente 10101010 30303030 20202020
Tabela EMPREGADO Nome Joo Luiz Fernando Ricardo Jorge Renato RG 10101010 20202020 30303030 40404040 50505050 CIC 11111111 22222222 33333333 44444444 55555555 Depto. 1 2 2 2 3 RG Supervisor NULO 10101010 10101010 20202020 20202020 Salrio 3.000,00 2.500,00 2.300,00 4.200,00 1.300,00
F.C.T.
os componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave primria de T1; 2. Para cada entidade fraca EF com entidade proprietria E no modelo ER, criada uma tabela T1 no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto , so inseridos apenas os componentes simples de cada um; a chave primria desta relao T1 ser composta pela chave parcial da entidade fraca EF mais a chave primria da entidade proprietria E; 3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraram as tabelas T1 e T2 respectivamente, devemos escolher a chave primria de uma das relaes (T1, T2)e inser-la como chave estrangeira na outra relao; se um dos lados do relacionamento tiver participao total e outro parcial, ento interessante que a chave do lado com participao parcial seja inserido como chave estrangeira no lado que tem participao total; 4. Para cada relacionamento regular com cardinalidade 1:N entre entidades E1 e E2 respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a chave primria de T1 como chave estrangeira em T2; 5. Para cada relacionamento regular com cardinalidade N:N entre entidades E1 e E2, criase uma nova tabela T1, contendo todos os atributos do relacionamento mais o atributo chave de E1 e o atributo chave de E2; a chave primria de T1 ser composta pelos atributos chave de E1 e E2; 6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo multivalorado A1, mais o atributo chave C da tabela que representa a entidade ou relacionamento que contm A1; a chave primria de T1 ser composta por A1 mais C; se A1 for composto, ento a tabela T1 dever conter todos os atributos de A1; 7. Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos os atributos do relacionamento; a chave primria de T1 ser composta pelos atributos chaves das entidades participantes do relacionamento; 8. Converta cada especializao com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os atributos de SC so {c, a1, a2, ..., an} onde c a chave primria de SC, em tabelas utilizando uma das seguintes opes: 8.1. Crie uma tabela T para SC com os atributos A(T) = {c, a1, a2, ..., an} e chave C(T) = c; crie uma tabela Ti para cada subclasse Si , 1 i m, com os atributos A(Ti) = {c} A(Si), onde C(T) = c; 8.2. Crie uma tabela Ti para cada subclasse Si, 1 i m, com os atributos A(Ti) = A(Si) {c, a1, a2, ..., an} e C(Ti) = c; 8.3. Crie uma tabela T com os atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t} e C(T) = c, onde t um atributo tipo que indica a subclasse qual cada tupla pertence, caso isto venha a ocorrer; 8.4. Crie uma tabela T com atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t1, t2, ..., tm} e C(T) = c; esta opo para generalizaes com overlapping, e cada ti, 1 i m, um atributo booleano indicando se a tupla pertence ou no subclasse Si; embora funcional, esta opo pode gerar uma quantidade muito grande de valores nulos;
Pgina 25
EF
F.C.T.
4.4.2. Normalizao
O processo de normalizao pode ser visto como o processo no qual so eliminados esquemas de relaes (tabelas) no satisfatrios, decompondo-os, atravs da separao de seus atributos em esquemas de relaes menos complexas mas que satisfaam as propriedades desejadas. Sistemas de Bancos de Dados Pgina 26
F.C.T.
O processo de normalizao como foi proposto inicialmente por Codd conduz um esquema de relao atravs de um bateria de testes para certificar se o mesmo est na 1a, 2a e 3a Formas Normais. Estas trs Formas Normais so baseadas em dependncias funcionais dos atributos do esquema de relao. 4.4.2.1. 1a Forma Normal A 1a Forma Normal prega que todos os atributos de uma tabela devem ser atmicos (indivisveis), ou seja, no so permitidos atributos multivalorados, atributos compostos ou atributos multivalorados compostos. Leve em considerao o esquema a seguir: CLIENTE 1. Cdigo 2. { Telefone } 3. Endereo: ( Rua, Nmero, Cidade ) gerando a tabela resultante: Cliente Cdigo Telefone 1 Telefone n Rua Endereo No Cidade
sendo que a mesma no est na 1a Forma Normal pois seus atributos no so atmicos. Para que a tabela acima fique na 1a Forma Normal temos que eliminar os atributos no atmicos, gerando as seguintes tabelas como resultado: Cliente Cdigo Rua Nmero Cidade
Cliente_Telefone
Cdigo_Cliente
Telefone_Client e
4.4.2.2. 2a Forma Normal A 2a Forma Normal prega o conceito da dependncia funcional total. Uma dependncia funcional X Y total se removemos um atributo A qualquer do componente X e desta forma, a dependncia funcional deixa de existir. A dependncia funcional X Y uma dependncia funcional parcial se existir um atributo A qualquer do componente X que pode ser removido e a dependncia funcional X Y no deixa de existir. Veja a dependncia funcional 3 do tem 4.4.1. Dependncia Funcional: { RG_Empregado, Nmero_Projeto } Horas uma dependncia funcional total, pois se removermos o atributo RG_Empregado ou o atributo Nmero_Projeto, a dependncia funcional deixa de existir. Uma tabela T est na 2a Forma Normal se estiver na 1a Forma Normal e todo atributo que no compem a chave primria C for totalmente funcionalmente dependente da chave primria C. Se uma tabela no est na 2a Forma Normal a mesma pode ser normalizada gerando outras tabelas cujos atributos que no faam parte da chave primria sejam totalmente funcionalmente dependente da mesma, ficando a tabela na 2a Forma Normal. 4.4.2.3. 3a Forma Normal
Pgina 27
F.C.T.
A 3a Forma Normal prega o conceito de dependncia transitiva. Uma dependncia funcional X Y em uma tabela T uma dependncia transitiva se existir um conjunto de atributos Z que no um subconjunto de chaves de T e as dependncias X Z, Z Y, so vlidas. Considere a seguinte tabela como exemplo:
Empregado RG Nom e No_Departamento Nome_Depto RG_Ger_Depto
onde temos a seguinte dependncia transitiva: RG { Nome_Depto, RG_Ger_Depto } RG No_Departamento No_Departamento { Nome_Depto, RG_Ger_Depto } Porm, verifique o caso da tabela abaixo:
Empregado RG CIC Nom e No_Funcional
Neste caso, a dependncia transitiva: RG { Nome, No_Funcional } RG CIC CIC { Nome, No_Funcional } no valida pois o atributo CIC uma chave candidata. Uma tabela est na 3a Forma Normal se estiver na 2a Forma Normal e no houver dependncia transitiva entre atributos no chave.
F.C.T.
consulta2 =
As operaes relacionais que podem ser aplicadas na operao select so: < , > , , , =, alm dos operadores booleanos: and, or, not. A operao select unria, ou seja, s pode ser aplicada a uma nica relao. No possvel aplicar a operao sobre tuplas de relaes distintas.
Nome,
Dt. Nascimento
(DEPENDENTES)
Pgina 29
F.C.T.
Tabela consulta5
consulta6 =
F.C.T.
podem ser aplicadas sobre mais de uma tabela, porm, existe a necessidade das tabelas possuirem tuplas exatamente do mesmo tipo. Estas operaes podem ser definidas da seguinte forma: unio - o resultado desta operao representada por R S uma relao T que inclui todas as tuplas que se encontram em R e todas as tuplas que se encontram em S; interseco - o resultado desta operao representada por R S uma relao T que inclui as tuplas que se encontram em R e em S ao mesmo tempo; diferena - o resultado desta operao representada por R S uma relao T que inclui todas as tuplas que esto em R mas no esto em S. Leve em considerao a seguinte consulta: Selecione todos os empregados que trabalham no departamento nmero 2 ou que supervisionam empregados que trabalham no departamento nmero 2. Vamos primeiro selecionar todos os funcionrios que trabalham no departamento nmero 2.
consulta7 =
Tabela consulta7 Nome Fernando Ricardo Jorge
depto = 2 (EMPREGADOS)
RG 20202020 30303030 40404040 CIC 22222222 33333333 44444444 Depto. 2 2 2 RG Supervisor 10101010 10101010 20202020 Salrio 2.500,00 2.300,00 4.200,00
Vamos agora selecionar os supervisores dos empregados que trabalham no departamento nmero 2.
consulta8 =
rg_supervisor (CONSULTA7)
consulta9 =
RG
rg(CONSULTA7)
Pgina 31
Tabela consulta9
F.C.T.
consulta10
RG
= CONSULTA8
CONSULTA9
Tabela consulta10
Leve em considerao a prxima consulta: selecione todos os empregados que desenvolvem algum projeto e que trabalham no departamento nmero 2; Vamos primeiro selecionar todos os empregados que trabalham em um projeto.
consulta11 =
rg_empregado(EMPREGADO/PROJETO)
consulta12 =
rg (depto = 2 (EMPREGADOS))
Tabela consulta12 RG 20202020 30303030 40404040
Pgina 32
F.C.T.
Obtemos ento todos os empregados que trabalham no departamento 2 e que desenvolvem algum projeto.
consulta13
= CONSULTA11
Tabela consulta13 RG 20202020 30303030 40404040
CONSULTA12
Leve em considerao a seguinte consulta: selecione todos os usurios que no desenvolvem projetos;
consulta14 =
rg_empregado (EMPREGADO/PROJETO)
consulta15 =
rg (EMPREGADOS)
Tabela consulta15 RG 10101010 20202020 30303030 40404040 50505050
F.C.T.
O produto cartesiano uma operao binria que combina todas as tuplas de duas tabelas. Diferente da operao unio, o produto cartesiano no exige que as tuplas das tabelas possuam exatamente o mesmo tipo. O produto cartesiano permite ento a consulta entre tabelas relacionadas utilizando uma condio de seleo apropriada. O resultado de um produto cartesiano uma nova tabela formada pela combinao das tuplas das tabelas sobre as quais aplicou-se a operao. O formato geral do produto cartesiano entre duas tabelas R e S : R S Leve em considerao a seguinte consulta: encontre todos os funcionrios que desenvolvem projetos em Campinas;
Vamos agora selecionar as tuplas resultantes que esto devidamente relacionadas que so as que possuem o mesmo valor em nmero do projeto e nmero e cuja localizao seja Campinas. consulta17 = rg_empregado, nmero ((nmero_projeto = nmero) .and. (localizao = Campinas)(CONSULTA16))
Pgina 34
F.C.T.
A operao produto cartesiano no muito utilizada por no oferecer um resultado otimizado. Veja o tem seguinte.
<condio de juno>
Leve em considerao a consulta a seguir: encontre todos os funcionrios que desenvolvem projetos em Campinas; consulta18 = EMPREGADOS/PROJETOS
Tabela consulta18 RG_Empregado 20202020 20202020 30303030 40404040 50505050 Nmero_Projeto 5 10 5 20 20 Nome Financeiro 1 Motor 3 Financeiro 1 Prdio Central Prdio Central Nmero 5 10 5 20 20 Localizao So Paulo Rio Claro So Paulo Campinas Campinas
consulta19 =
Pgina 35
F.C.T.
O comando create table permite ao usurio criar uma nova tabela (ou relao). Para cada atributo da relao definido um nome, um tipo, mscara e algumas restries. Os tipos de uma coluna so: char(n): caracteres e strings onde n o nmero de caracteres; integer: inteiros float: ponto flutuante; decimal(m,n): onde m o nmero de casas inteiras e n o nmero de casas decimais. A restrio not null indica que o atributo deve ser obrigatoriamente preenchido; se no for especificado, ento o default que o atributo possa assumir o valor nulo. A forma geral do comando create table ento : create table <nome_tabela> ( <nome_coluna1> <tipo_coluna1> NULL>, <nome_coluna2> <tipo_coluna2> NULL>, : <nome_colunan> <tipo_colunan> ); <NOT <NOT
<NOT NULL>
Por exemplo, para criar a tabela EMPREGADOS do apndice A, teramos o seguinte comando: create table EMPREGADOS ( nome rg cic depto rg_supervisor salario, char (30) integer integer, integer integer, decimal (7,2) NOT NULL, NOT NULL, NOT NULL, NOT NULL );
4.6.1.2. Comando DROP TABLE O comando drop table permite a excluso de uma tabela (relao) em um banco de dados. A forma geral para o comando drop table : drop table <nome_tabela>; Por exemplo, para eliminar a tabela EMPREGADOS do apndice A teramos o seguinte comando: drop table EMPREGADOS; Observe que neste caso, a chave da tabela EMPREGADOS, (rg) utilizada como chave estrangeira ou como chave primria composta em diversos tabelas que devem ser devidamente corrigidas. Este processo no assim to simples pois, como vemos neste caso, a excluso da tabela EMPREGADOS implica na alterao do projeto fsico de diversas tabelas. Isto acaba implicando na construo de uma nova base de dados. 4.6.1.3. Comando ALTER TABLE O comando alter table permite que o usurio faa a incluso de novos atributos em uma tabela. A forma geral para o comando alter table a seguinte: Sistemas de Bancos de Dados Pgina 36
F.C.T.
No caso do comando alter table, a restrio NOT NULL no permitida pois assim que se insere um novo atributo na tabela, o valor para o mesmo em todas as tuplas da tabela recebero o valor NULL.
Por exemplo, para selecionar o nome e o rg dos funcionrios que trabalham no departamento nmero 2 na tabela EMPREGADOS utilizamos o seguinte comando: select nome, rg from EMPREGADOS where depto = 2; obteremos ento o seguinte resultado:
Nome Fernando Ricardo Jorge RG 20202020 30303030 40404040
F.C.T.
nos nomes das colunas de duas ou mais tabelas que esto envolvidas em uma expresso. Ao invs de utilizar o alias, possvel utilizar o nome da tabela, mas isto pode ficar cansativo em consultas muito complexas alm do que, impossibilitaria a utilizao da mesma tabela mais que uma vez em uma expresso SQL. Considere a seguinte consulta: selecione o nome e o rg de todos os funcionrios que so supervisores; select e1.nome, e1.rg from empregado e1, empregado e2 where e1.rg = e2.rg_supervisor; que gera o seguinte resultado:
Nome Joo Luiz Fernando RG 10101010 20202020
nome, rg (
EMPREGADOS
tg_t1 = rg_supervisor_t2
EMPREGADOS);
O operador * dentro do especificador select seleciona todos os atributos de uma tabela, enquanto que a excluso do especificador where faz com que todas as tuplas de uma tabela sejam selecionadas. Desta forma, a expresso: select * from empregados; gera o seguinte resultado:
Nome Joo Luiz Fernando Ricardo Jorge Renato RG 10101010 20202020 30303030 40404040 50505050 CIC 11111111 22222222 33333333 44444444 55555555 Depto. 1 2 2 2 3 RG Supervisor NULO 10101010 10101010 20202020 20202020 Salrio 3.000,00 2.500,00 2.300,00 4.200,00 1.300,00
Diferente de lgebra relacional, a operao select em SQL permite a gerao de tuplas duplicadas como resultado de uma expresso. Para evitar isto, devemos utilizar o especificador distinct. Veja a seguir os exemplos com e sem o especificador distinct. select depto from empregado; que gera os seguintes resultados:
Depto. 1 2 2 2 3 Depto. 1 2 3
Pgina 38
F.C.T.
Podemos gerar consultas aninhadas em SQL utilizando o espeficicador in, que faz uma comparao do especificador where da consulta mais externa com o resultado da consulta mais interna. Considere a consulta a seguir:
selecione o nome de todos os funcionrios que trabalham em projetos localizados em Rio Claro; select e1.nome, e1.rg, e1.depto from empregado e1, empregado_projeto e2 where e1.rg = e2.rg_empregado and e2.numero_projeto in ( select numero from projeto where localizacao = Rio Claro);
Para selecionar um conjunto de tuplas de forma ordenada devemos utilizar o comando order by. Leve em considerao a seguinte consulta: selecione todos os empregados por ordem alfabtica: select nome, rg, depto from empregado order by nome;
Unimar - Universidade de Marlia departamento: 3 salrio: R$2.500,00 insert into values empregados (nome, rg, cic, depto, salario) (Joao de Campos, 70707070, 77777777, 3, 2500,00);
F.C.T.
Como na primeira insero todos os campos foram inseridos, ento no foi necessrio especificar o nome das colunas. Porm, na segunda insero, o campo rg_supervisor no foi inserido, ento especificou-se as colunas. Outra forma de se elaborar esta insero seria: insert into values empregados (Joao de Campos, 70707070, 77777777, 3, , 2500,00);
Neste caso, utilizou-se os caracteres para se declarar que um valor nulo seria inserido nesta coluna. Para se efetuar uma alterao em uma tabela, utilizado o comando update. A forma geral do comando update : update set where <tabela> <coluna> = <expresso> <condio>
Considere a seguinte declarao: atualize o salrio de todos os empregados que trabalham no departamento 2 para R$ 3.000,00; update set where empregado salario = 3.000,00 depto = 2;
Para se eliminar uma tupla de uma tabela, utiliza-se o comando delete. A forma geral do comando update : delete from <tabela> where <condio>; Leve em considerao a seguinte expresso: elimine os registros nos quais o empregado trabalhe no departamento 2 e possua salrio maior que R$ 3.500,00; delete from empregado where salario > 3.500,00 and depto = 2; Nos casos de atualizao que foram vistos, todas as <condies> podem ser uma consulta utilizando o comando select, onde o comando ser aplicado sobre todos os registros que satisfizerem as condies determinadas pelo comando de seleo.
Pgina 40
F.C.T.
5. Bibliografia
Fundamentals of Database Systems; Ramez Elmasri, Shamkant Navathe; The Benjamin CummingsPublishing Company; 1989; Sistema de Banco de Dados; Henry F. Korth, Abraham Silberschatz; Makro Books; 1995; SQL Language - Oracle Reference Manual; Version 7.2;
Pgina 41
F.C.T.
Tabela DEPARTAMENTO Nome Contabilidade Engenharia Civil Engenharia Mecnica Nmero 1 2 3 RG Gerente 10101010 30303030 20202020
Tabela PROJETO Nome Financeiro 1 Motor 3 Prdio Central Nmero 5 10 20 Localizao So Paulo Rio Claro Campinas
Tabela DEPENDENTES RG Responsvel 10101010 10101010 20202020 20202020 30303030 Nome Dependente Jorge Luiz Fernanda Angelo Adreia Dt. Nascimento 27/12/86 18/11/79 14/02/69 10/02/95 01/05/90 Relao Filho Filho Conjuge Filho Filho Sexo Masculino Masculino Feminino Masculino Feminino
Tabela EMPREGADO_PROJETO RG Empregado 20202020 20202020 30303030 40404040 50505050 Nmero Projeto 5 10 5 20 20 Horas 10 25 35 50 35
Pgina 42