Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fernando Albuquerque - fernando@cic.unb.br Bancos de Dados Fernando Albuquerque 061-2733589 fernando@cic.unb.br Fernando Albuquerque - fernando@cic.unb.br Tópicos n Introdução n O modelo relacional n A linguagem SQL Fernando Albuquerque - fernando@cic.unb.br Introdução n O que é um banco de dados : • Coleção de informações que existe por um longo período de tempo e que é gerenciada por um SGBD ( Sistema Gerenciador de Banco de Dados ). • Coleção de dados relacionados que atendem as necessidades de múltiplos usuários dentro de uma ou de múltiplas organizações. • O uso de bancos de dados em vez de arquivos resulta em maior disponibilidade, maior facilidade de acesso e atualização em transações complexas e menor redundância dos dados. Fernando Albuquerque - fernando@cic.unb.br Introdução n Responsabilidades de um SGBD : • Software para a manipulação de bancos de dados que suporta uma visão lógica e física dos dados, linguagem de definição e de manipulação dos dados, gerência de transações, controle de concorrência, segurança e recuperação de falhas. • Permite criar novas bases de dados e especificar a sua estrutura lógica ( schema ) usando uma linguagem de definição de dados. • Permite a consulta e a modificação dos dados através de uma linguagem de consulta ou de manipulação de dados. Fernando Albuquerque - fernando@cic.unb.br Introdução • Possibilita o armazenamento de grandes quantidades de dados por longos períodos de tempo. • Protege os dados de acidentes ou acessos não autorizados. • Possibilita o acesso eficiente aos dados para consultas e modificações. • Controla o acesso simultâneo aos dados evitando que os dados sejam corrompidos. Fernando Albuquerque - fernando@cic.unb.br Introdução n Sistemas de bancos de dados relacionais : • Em artigos publicados a partir de 1970, Ted Codd sugeriu que os dados fossem apresentados aos usuários organizados em tabelas chamadas tabelas ( relations ). • O usuário não deveria se preocupar com as estruturas de dados efetivamente usadas para armazenamento dos dados. númeroConta balanço tipo 12345 1000.00 poupança 67890 2846.92 corrente . . . . . . . . . Atributos Tuplas Fernando Albuquerque - fernando@cic.unb.br O modelo relacional n Introdução: • As abordagens de modelagem orientadas a objetos e entidade-relacionamento são apropriadas para descrever a estrutura dos dados mas a implementação é normalmente baseada no modelo relacional. • O modelo relacional tem um único conceito de modelagem chamado relação. • Uma relação é uma tabela bidimensional onde os dados são organizados. • O modelo relacional suporta uma linguagem de alto nível chamada Structured Query Language ( SQL ). Fernando Albuquerque - fernando@cic.unb.br O modelo relacional • A linguagem SQL possibilita que programas simples sejam escritos para manipulação dos dados armazenados nas relações de formas sofisticadas. • Os modelos desenvolvidos usando-se orientação a objetos ou entidade-relacionamento são traduzidos em relações. • O modelo relacional tem a sua própria teoria, chamada normalização de relações, baseada em dependências funcionais. n Relações : • No modelo relacional os dados são representados como tabelas bidimensionais. Fernando Albuquerque - fernando@cic.unb.br O modelo relacional n Atributos: • São listados no topo da relação e servem como nomes das colunas em uma relação. • Descrevem significados dos dados em uma coluna. • Não é obrigatório que os atributos em uma relação correspondam a componentes nos modelos ODL ou E/R. título ano duração tipo Star Wars 1977 124 cor Mighty Ducks 1991 104 cor Wayne´s World 1992 95 cor Fernando Albuquerque - fernando@cic.unb.br O modelo relacional n Esquemas : • O nome de uma relação e o conjunto de atributos é chamado esquema. • O esquema de uma relação é representado pelo nome da relação seguido pelo atributos entre parênteses. • No modelo relacional, um projeto consiste de um ou mais esquemas. • O conjunto de esquemas em um projeto é chamado de esquema do banco de dados. Filme ( título, ano, duração , tipo ) Fernando Albuquerque - fernando@cic.unb.br O modelo relacional n Tuplas : • As linhas de uma relação chamam-se tuplas. • Uma tupla tem um componente para cada atributo. • Quando se deseja escrever uma tupla, os componentes são separados por vírgulas e colocados entre parênteses. • A ordem na qual os atributos são listados no esquema deve ser obedecida. • Uma tupla pode ser vista como representando objetos e uma relação representando classes. ( Star Wars , 1977 , 124 , cor ) Fernando Albuquerque - fernando@cic.unb.br O modelo relacional • Diferente de objetos, não é possível que uma tupla apareça mais de uma vez em uma relação. n Domínios : • Cada componente em cada tupla deve ser atômico, deve ser de um tipo elementar. • Não é permitido que o componente seja uma estrutura de dados ou qualquer tipo cujos valores possam se decompostos em componentes menores. • Um domínio é associado a cada atributo de uma relação. • O valor de cada componente deve pertencer ao domínio. Fernando Albuquerque - fernando@cic.unb.br A linguagem SQL n Conceitos : • Structured Query Language ( linguagem de consultas ) • Muitos dialetos diferentes • ANSI SQL • Padrão atualizado em 1992 chamado SQL-92 ou SQL2 • Padrão recente SQL3 • Versões dos principais fornecedores • Não há diferença entre maiúsculas e minúsculas Fernando Albuquerque - fernando@cic.unb.br Selecionando dados n Consultas simples : • Usadas as palavras-chave SELECT , FROM e WHERE. • A palavra-chave FROM especifica a relação ou relações às quais a consulta se refere. • A palavra-chave WHERE é uma condição que as linhas deve satisfazer na consulta. • A palavra-chave SELECT identifica os atributos das linhas que devem fazer parte da resposta. SELECT lista_de_colunas FROM relação[s] [WHERE condições_pesquisa] Fernando Albuquerque - fernando@cic.unb.br Selecionando dados • O resultado de uma consulta é a relação composta pelas linhas produzidas no processo. SELECT au_sobrenome , au_nome FROM autores au_sobrenome au_nome Albuquerque Fernando Amado Jorge Emerson Sandra Fernando Albuquerque - fernando@cic.unb.br Selecionando dados n Seleção em SQL : • Podem ser usados seis diferentes operadores de comparação. • Os valores a serem comparados incluem constantes e atributos mencionados após FROM. • Operadores aritméticos podem ser aplicados antes da comparação. • Resultado de uma comparação é TRUE ou FALSE e podem ser combinados via AND, OR e NOT. = igual < > diferente < menor > maior <= menor ou igual >= maior ou igual Fernando Albuquerque - fernando@cic.unb.br Selecionando dados • A operação de seleção permite a recuperação de um sub- conjunto de linhas em uma relação. • Para se especificar as linhas desejadas são especificadas condições no WHERE. SELECT * FROM publishers WHERE state = “CA” Resultados : pub_id pub_name addresscity state 1389 Algodata 3rd Dr. Berkeley CA Fernando Albuquerque - fernando@cic.unb.br Joining n Operação join : • A operação join atua sobre duas ou mais relações por vez. • Os dados são combinados de modo a poderem ser comparados e contrastados. • Quando do join é como se as relações tivessem sido unidas enquanto dura a consulta. • A operação join combina dados comparando valores em colunas especificadas. • Através da operação evita-se que seja necessário colocar todas as informações em uma mesma relação com o conseqüente impacto em termos de performance e eficiência. Fernando Albuquerque - fernando@cic.unb.br Joining títulos editoras id-titulo id-editora titulo nome-editoratipo endereco id-editora cidade preço estado contrato data-pub notas SELECT titulo , nome-editora FROM titulos , editoras WHERE editoras.id-editora = titulos.id-editora Fernando Albuquerque - fernando@cic.unb.br Joining • Na maioria dos sistemas a operação de join é especificada no WHERE. • Operações de join são expressas implicitamente e não explicitamente. • Cada join é especificado em duas relações usando uma coluna de cada relação. SELECT lista_seleção FROM relação_1 , relação_2 [ , relação_3 ] ... WHERE [ relação_1.]coluna operador [relação_2.]coluna Fernando Albuquerque - fernando@cic.unb.br Views n View : • Uma view é uma representação alternativa dos dados em uma ou mais relações e são chamadas de relações virtuais ou relações derivadas. • Os dados vistos através de uma view não são efetivamente armazenados no banco de dados, a view não é uma cópia dos dados em outra relação. • O dicionário de dados armazena a definição de uma view. • Quando a view é chamada pelo usuário, os dados apropriados são associados. Fernando Albuquerque - fernando@cic.unb.br Views n Criando views : • Na primeira linha é especificado o nome da view. • No enunciado SELECT é definida a view. CREATE VIEW Livros_E_Publicacoes AS SELECT titulo , nome-editora FROM titulos , editoras WHERE editoras.id-editora = titulos.id-editora SELECT * FROM Livros_E_Publicacoes Fernando Albuquerque - fernando@cic.unb.br Views • Uma view pode ser usada em um enunciado SELECT da mesma forma que uma relação. CREATE VIEW books SELECT titles.title_id , au_ord , au_lname , au_fname FROM authors , titles , titleauthors WHERE authors.au_id = titleauthors.au_id AND titles.title_id = titleauthors.title_id SELECT * FROM books SELECT * FROM boks ORDER BY au_lname Fernando Albuquerque - fernando@cic.unb.br Views • Uma view possibilita que cada usuário tenha uma visão do banco de dados que corresponda às suas necessidades. • Através de views é possível adaptar um banco de dados de modo a facilitar o trabalho de usuários com diferentes interesses e níveis de treinamento. • Cada usuário pode ter uma diferente visão embora esteja acessando as mesmas relações. n Removendo views : DROP VIEW nome_view Fernando Albuquerque - fernando@cic.unb.br Uniões, interseções e diferenças n Operação UNION : • Forma de se combinar dados de múltiplas consultas. • Útil quando deseja-se analisar dados similares de duas ou mais relações. SELECT au_fname , au_lname , city FROM authors WHERE city IN ( ‘Oakland’ , ‘Berkeley’ ) UNION SELECT ed_fname , ed_lname , city FROM editors WHERE city IN ( ‘Oakland’ , ‘Berkeley’ ) Fernando Albuquerque - fernando@cic.unb.br Uniões, interseções e diferenças n Operações INTERSECT e EXCEPT : ( SELECT nome , endereco FROM filmeEstrela WHERE sexo = ‘F’) INTERSECT ( SELECT nome , endereco FROM filmeExec WHERE valor > 1000000 ); ( SELECT nome , endereco FROM filmeEstrela ) EXCEPT ( SELECT nome , endereco FROM filmeExec )
Compartilhar