Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Autoria Esta apresentação foi desenvolvida por Ricardo Campos, docente do Instituto Politécnico de Tomar. Encontra-se disponível na página web do autor no link Publications ao abrigo da seguinte licença: Mais detalhes em: http://creativecommons.org/licenses/by-nc/3.0/deed.pt O seu uso, de parte ou da totalidade, pressupõe a utilização da seguinte referência: Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. A sua disponibilização em formato PPT pode ser feita mediante solicitação (email: [email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 1 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bibliografia Recursos: C.J.Date “An Introduction to Database Systems” Addision Wesley Robert Vieira “Professional SQL Server 2000 Programming” Wrox Books A.Silberschatz, H.F.Korth, S.Sudarshan “Database System Concepts” MacGraw-Hill J.L.Pereira “Tecnologia de Bases de Dados” FCA – Editora de Informática D, Luis “SQL – Structured Query Language” FCA – Editora de Informática Acetatos de Pedro Nogueira Ramos, ISCTE Acetatos de Henrique Madeira, 1997/1998, UC © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Bibliografia Recursos on-line (Bases de Dados e SQL): Tutoriais, http://apostilando.com/sessao.php?cod=18 Noções da Linguagem SQL, http://www.juliobattisti.com.br/artigos/office/nocoessqlconsultas.asp Linha de Código SQL, http://www.linhadecodigo.com.br/desenvolvimento/sql.asp SQL Course Interactive, http://www.sqlcourse.com SQL for Web Nerds, http://philip.greenspun.com/sql/ Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 2 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bibliografia Recursos on-line (SQL Server ): Sql Server Developer Center, http://msdn2.microsoft.com/en-us/sql/default.aspx Newsgroups, http://groups.google.com/groups/dir?lnk=gh&hl=en&sel=33606733 SQL Server Magazine, http://www.sqlmag.com/ SQL Server Database Help, http://www.sswug.org/ Data Generation Tool, http://www.sqledit.com/dg/index.html SQL Server Central, http://www.sqlservercentral.com/ SQL Server 2005 Books, http://www.microsoft.com/downloads/details.aspx?FamilyId=BE6A2C5D-00DF4220-B133-29C1E0B6585F&displaylang=en http://www.mcdbabrasil.com.br/ Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Sumário Objectivos Parte Teórica Parte Prática Programa Bibliografia © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 3 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Objectivos Discussão dos conceitos relacionados com bases de dados; Diagrama de entidade-relação (modelo conceptual) para a representação do modelo de dados; Introdução às bases de dados relacionais (modelo lógico) e à normalização; Aprendizagem das cláusulas mais importantes da linguagem SQL, quer para a criação da estrutura da base de dados (DDL) quer para a exploração dos dados (DML); Noções fundamentais sobre transacções e optimização; Capacidade de espelhar os conhecimentos teóricos num projecto de desenho e construção de uma base de dados utilizando um SGBD relacional. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Objectivos Levantamento das necessidades de informação; Modelação de dados (diagramas E-R e normalização de dados); Implementação de uma base de dados em Microsoft SQL Server 2005; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 4 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Programa Conceitos de Bases de Dados Bases de Dados; Níveis de Análise do Sistema de Informação; Ficheiros vs SGBDs; Tipos de Bases de Dados. Modelo Relacional Modelo E-R (nível conceptual); Modelo Relacional (nível lógico); Normalização de uma Base de Dados; Estratégias para a Concepção de uma Base de Dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Programa Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server; Interface; Criar Bases de Dados; Criar Tabelas; Criar Índices; Executar Queries; Executar Store Procedures; Realizar Backups. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 5 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Programa Álgebra Relacional Operações Binárias; Operações Unárias. Linguagem SQL Tipos de Linguagens; SQL Embebido VS APIs; Definição de SQL; Comandos DDL e Comandos DML; Comandos SQL para administração de privilégios; Sinónimos; Store Procedures. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Programa Transacções, Recuperação e Optimização Definição de Transacção; Tipos de Transacção; Concorrência de Transacções; Definição de Recuperação e Tolerância a Falhas; Mecanismos de Recuperação; Tipos de Falhas; Definição de Índices; Considerações sobre os índices; Estrutura Interna de um Índice; Monitorização; Hashing. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 6 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Programa Desenho de um esquema de Bases de Dados em SQL Server Desenho de uma base de dados para um banco; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Conceitos de Bases de Dados Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 7 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Sumário Sumário Conceitos de Bases de Dados Bases de Dados; Níveis de Análise do Sistema de Informação; Ficheiros vs SGBDs; Tipos de Bases de Dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Bases de Dados Motivação Definição Aplicações Motivação Porque é que alguém que não quer ser profissional de sistemas de informação, deve aprender bases de dados? Pelo mesmo motivo pelo qual se devia aprender a usar um computador há 10 anos atrás; As bases de dados serão tão comuns no futuro como as folhas de cálculo; A criação de sistemas de informação é um processo que envolve pessoas de várias áreas. Ter conhecimentos em bases de dados, facilitará a comunicação com os profissionais de SI. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 8 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Motivação Definição Aplicações O que é uma Base de Dados? De uma forma genérica uma base de dados é uma estrutura que guarda dados: Uma agenda com moradas e contactos telefónicos; Uma lista de CDs; A World Wide Web. O objectivo de uma base de dados é possibilitar de uma forma rápida e automática o acesso aos seus dados: Procurar a morada de uma determinada pessoa; Procurar o nome da pessoa que canta determinada música; Procurar a página WWW do CET. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Bases de Dados Motivação Definição Aplicações Aplicações de Bases de Dados Banca: todas as transacções e movimentos; Companhias áreas: reservas, horários; Universidades: inscrições, notas; Vendas: clientes, produtos, compras; Indústria: inventário, pedidos; Recursos Humanos: registo dos empregados, salários, impostos; Bibliotecas: registo de livros, revistas. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 9 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Nível Conceptual, Lógico e Físico Nível Conceptual (Modelo E-R) Nível Lógico (Modelo Relacional) Nível Físico 00100110001100010001000 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Gestão de Ficheiros vs SGBDs Para a organização dos dados existem 2 sistemas: Sistema de Gestão de Ficheiros Criados e mantidos pelas aplicações. Sistemas de Gestão de Bases de Dados No qual se verifica uma certa independência entre as aplicações e os dados, sob a mediação do SGBD. S G B D © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados Bases de Dados 10 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Definição de Sistema de Gestão de Ficheiros Uma das características principais dos Sistemas de Gestão de Ficheiros é que cada aplicação é responsável pela criação e gestão da estrutura interna da informação dos seus próprios ficheiros. Desta forma, qualquer alteração na estrutura de ficheiros implica uma alteração no código de cada uma das aplicações; Cada tipo de ficheiro possui a sua própria estrutura (docs como o Word e Excel têm estruturas diferentes) e é a aplicação que os cria que é responsável pela sua definição da estrutura interna desses ficheiros. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Desvantagens do Sistema de Gestão de Ficheiros Redundância e Inconsistência dos dados Múltiplos formatos, duplicação da informação em ficheiros diferentes; No processamento tradicional de ficheiros (Sistema de Gestão de Ficheiros), cada aplicação mantém o seu próprio conjunto de ficheiros e dados, provocando a ocorrência de redundâncias; A redundância leva ao armazenamento excessivo de informações, ocupando espaço que poderia estar a ser utilizado com outras informações e dificulta a integridade da informação; Considere um sistema em que a informação relativa à morada dos clientes é registada em dois ficheiros diferentes. Se o cliente muda de morada e a mesma é apenas actualizada num dos ficheiros, o sistema passa a conter informação inconsistente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 11 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Desvantagens do Sistema de Gestão de Ficheiros Dificuldades no acesso aos dados Necessidade de escrever um novo programa para efectuar uma nova tarefa; Atomicidade das alterações Falhas podem colocar a base de dados num estado inconsistente, com alterações parciais já efectuadas. Explo: A operação de levantamento de dinheiro de uma conta deve ser totalmente realizada ou caso contrário nenhuma alteração deve ser efectuada. Acessos concorrentes por diversos utilizadores Acessos concorrente não controlados podem originar inconsistências. Explo: duas pessoas a consultarem um saldo e a alterarem-no ao mesmo tempo. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Definição de Sistemas de Gestão de Bases de Dados (SGBDs) A abordagem pelos SGBDs tem uma característica fundamental: os dados são organizados num único conjunto (uma única unidade de armazenamento em vez de várias unidades independentes); Adicionalmente todos os acessos aos dados passam por entidade designada por SGBD que centraliza em si o acesso à base de dados; Os SGBDs ocultam os detalhes físicos de armazenamento e organização dos dados (a base de dados encontra-se evidentemente num conjunto de ficheiros); O SGBD é uma única entidade que manipula a base de dados, atendendo a solicitações do nível aplicacional. S G B D © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados Bases de Dados 12 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Características dos SGBDs Os SGBDs mantém não somente os dados, mas também a forma como os mesmos são armazenados, contendo uma descrição completa da base de dados; Essas informações são armazenadas no catálogo do SGBD (o dicionário de dados), o qual contém informações sobre a estrutura de cada ficheiro, o tipo, o formato, restrições, etc… A informação armazenada no catálogo (no dicionário) é chamada de metadados; Assim, uma qualquer alteração na estrutura dos ficheiros, apenas implica uma alteração no catálogo, evitando a alteração no código fonte de cada uma das aplicações; Diferentes utilizadores poderão ter o seu acesso limitado a partes da base de dados. Por exemplo, embora todos os dados de uma organização estejam na mesma base de dados, aqueles que são importantes para a definição da estratégia só podem ser consultados pela administração. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Vantagens dos SGBDs Acesso Simultâneo Vários utilizadores podem aceder e alterar ao mesmo tempo a mesma base de dados sem criar inconsistências. Explo: 2 utilizadores diferentes podem consultar simultaneamente os dados do mesmo cliente. No entanto o SGBD não permite que ambos os utilizadores alterem esses dados ao mesmo tempo. Controle de Redundância Ao contrário do tradicional sistema de gestão de ficheiros, onde cada aplicação deve manter o seu próprio conjunto de ficheiros e dados, os SGBDs não, situação que facilita o controle de redundância. Restrição a acessos não autorizados Um SGBD deve fornecer um sistema de autorização e segurança, o qual é utilizado pelo administrador da base de dados, para criar contas e especificar as restrições dessas contas. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 13 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Vantagens dos SGBDs Independência dos dados relativamente às aplicações Assim, uma qualquer alteração na estrutura dos ficheiros, apenas implica uma alteração no catálogo, evitando a alteração no código fonte de cada uma das aplicações. Tolerância a Falhas Um SGBD deve fornecer recursos para recuperação de falhas, tanto de software como de hardware. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Exemplos de SGBDs Oracle, Informix, SQL Server, etc… São bastante fiáveis e com maiores capacidade que os do próximo exemplo. MySql, Access, Mais adequados para uso doméstico, pequenas empresas, etc… Explo: 2 utilizadores diferentes podem consultar simultaneamente os dados do mesmo cliente. No entanto o SGBD não permite que ambos os utilizadores alterem esses dados ao mesmo tempo. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 14 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Utilizadores de um SGBD Administradores Utilizadores Programadores Utilizadores Nível de Nível da Avançado Base de Dados Básico usam Programas de Interface Aplicações Programas usam usam escrevem Ferramentas de Ferramentas de Análise Administração © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Utilizadores de um SGBD Utilizadores Nível Básico Chamam uma das aplicações que foi construída previamente; Explo: pessoas a aceder a uma base de dados através da web. Programadores de Aplicações Interagem com o sistema através de chamadas DML; Utilizadores Nível Avançado Constroem pedidos numa linguagem de consulta de bases de dados ou através de ferramentas de OLAP ou Data Mining; Administrador da Base de Dados Coordena todas as actividades do sistema de bases de dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 15 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Funções do Administrador de Bases de Dados Concede aos utilizadores autorizações de acesso à base de dados; Define os métodos de acesso; Define restrições de integridade; Monitoriza o desempenho; Manutenção de rotina (backups, gestão de espaço em disco). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Arquitectura de um SGBD Utilizadores utilizadores nível básico programas de interface programadores de aplicações Utilizadores nível avançado DBA consultas esquema de bases de dados processador de consultas compilador da linguagem de definição de dados chamadas de rotina pré-compilador da linguagem de manipulação de dados código objecto dos programas de interface gestor da base de dados SGBD gestor de ficheiros ficheiros de dados dicionário de dados © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 16 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Arquitectura Cliente/Servidor Servidor Servidor BD BD Servidor Rede Rede Aplicação Cliente Aplicação Cliente Aplicação Arquitectura de duas camadas Arquitectura de três camadas Programas clientes que comunicam com a base de dados. Aplicações web recorrendo a software intermediário. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Aplicação Bases de Dados Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Vantagens Arquitectura Cliente/Servidor Independência das aplicações de cliente relativamente à localização física dos dados; Todo o trabalho de interface com o utilizador e tratamento da informação (gráfico, formatação) é feito no cliente; Todas as tarefas de armazenamento da informação, consulta, segurança, partilha de dados, são concentradas no servidor; Só os pedidos de informação e os resultados é que são enviados pela rede, donde resulta um tráfego geralmente baixo; Adapta-se facilmente a problemas de diferentes dimensões: mais ou menos clientes, servidores com maior ou menor capacidade, mais ou menos servidores. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 17 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de Bases de Dados Tipos de Bases de Dados Bases de Dados Distribuídas Servidor Servidor BD BD Servidor 1 Servidor 2 Rede Cliente Cliente Uma base de dados distribuída surge ao utilizador como se fosse uma única base de dados, mas na realidade é constituída por diversas bases de dados distribuídas por diversos computadores. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Bases de Dados Hierárquico Em Rede Relacional Contextualização Histórica A utilização comercial de BDs começou nos anos 60. Inicialmente a informação era guardada em ficheiros e a sua consulta e manipulação era pouco prática; Para definição de dados eram usados os modelos hierárquico e de rede; No início dos anos 70 surgiram os SGBD relacionais cuja popularidade não tem parado de crescer até hoje; Este sucesso pode ser explicado pela simplicidade do modelo em que assentam, o modelo relacional, que é constituído somente por relações, e pelo surgimento de uma linguagem de manipulação simples e eficiente, o SQL (Structured Query Language). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 18 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Hierárquico Em Rede Relacional Tipos: Hierárquicos, em Rede, Relacionais Hierárquicos; Em Rede; Relacional: Relações entre tabelas de dados controladas por álgebra relacional; Proposto por Codd em 1969; Actualmente existem vários fornecedores de tecnologia relacional no mercado: Oracle; MySql; SqlServer, Access, etc…; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Hierárquico Em Rede Relacional Exemplo de Informações numa Base de Dados Consideremos a seguinte tabela como base para a definição dos vários tipos de bases de dados: Nome Rua Cidade Conta Saldo Nuno Terlamonte Aljezur 1 55€ Filipa Sítio Fechado Aljezur 2 1000€ Filipa Sítio Fechado Aljezur 3 5366€ António Glorioso Lisboa 3 5366€ António Glorioso Lisboa 4 10553€ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 19 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Hierárquico Em Rede Relacional Modelo Hierárquico Os dados são representados por registos e os relacionamentos por ligações; Os registos são organizados como colecções arbitrárias de árvores. Nuno Terlamonte Filipa 2 1 António Aljezur Sítio Fechado 1000€ Glorioso Aljezur 5366€ 3 55€ 3 5366€ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Lisboa 4 10533€ Bases de Dados Hierárquico Em Rede Relacional Modelo Hierárquico Modelo Hierárquico Cliente Como se pode concluir, esta é uma organização que privilegia o acesso aos registos do Cliente, mas que dificulta o acesso aos registos do Produto. Encomenda Linha_Encomenda Produto © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 20 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Hierárquico Em Rede Relacional Modelo em Rede Os dados são representados por colecções de registos e os relacionamentos por ligações: Nuno Terlamonte Aljezur Filipa Sítio Fechado Aljezur António Glorioso Lisboa 1 55€ 2 1000€ 3 5366€ 4 10533€ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Bases de Dados Hierárquico Em Rede Relacional Modelo Relacional Tanto os dados, como os relacionamentos são representados por tabelas; Possui fundamento matemático sólido; Suponha-se a representação da realidade recorrendo ao modelo E-R (nível conceptual): rua número cidade saldo nome Cliente M possui N Conta Modelo Relacional (Nível Lógico): codCliente Nome Rua Cidade codCliente numConta 100 Nuno Terlamonte Aljezur 100 1 101 Filipa Sítio Fechado Aljezur 101 2 101 3 102 António Glorioso Lisboa 102 3 102 4 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] numConta Saldo 1 55€ 2 1000€ 3 5366€ 4 10533€ Bases de Dados 21 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Bases de Dados Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Bases de Dados Hierárquico Em Rede Relacional Grau e Cardinalidade de uma Relação Grau de uma Relação Número de atributos de uma relação. Cardinalidade de uma Relação Número de tuplos de uma relação 4 atributos Grau = 4 Cliente codCliente Nome Rua Cidade 100 Nuno Terlamonte Aljezur 101 Filipa Sítio Fechado Aljezur 102 António Glorioso Lisboa 3 tuplos Cardinalidade = 3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo Relacional Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 22 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Sumário Sumário Modelo Relacional Modelo E-R (nível conceptual); Modelo Relacional (nível lógico); Normalização de uma Base de Dados; Estratégias para a Concepção de uma Base de Dados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Definição do Modelo E-R (Entidade – Relação) O desenvolvimento de uma base de dados passa por representar graficamente a realidade que se quer moldar: O Diagrama de Entidade – Relação é uma técnica de representação gráfica que ilustra conceptualmente as relações entre entidades de bases de dados; Autor M obra © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] N Publicação Bases de Dados 23 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Definição do Modelo E-R (Entidade – Relação) No Access o modelo conceptual não existe. Assim, sempre que se pretende construir uma base de dados, o desenvolvimento da parte conceptual realizase numa folha de papel ☺; Uma vez que o Access apenas conhece o modelo lógico, é necessário aprender os fundamentos teóricos da passagem do modelo conceptual para o modelo lógico, por forma que seja possível construir as tabelas no Access; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Entidade kms Cor Objecto que é distinguível de outros objectos, mas que pode ser agrupado na mesma entidade, pois possuem várias características comuns. Pretende representar a realidade que queremos modelar (exemplo: empresa, empregado, aluno, professor, carro). kms © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Cor Bases de Dados 24 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Dê um exemplo de entidades: Aluno Disciplina © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Atributos Propriedades ou características que permitem descrever as entidades. Os livros por exemplo possuem vários atributos comuns: o título, o número de páginas, o ano de publicação, etc… Número Titulo de Páginas Ano de Publicação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 25 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Dê um exemplo de atributos: n.º aluno código nome Designação morada Aluno Disciplina © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Associação / Relação Estabelecimento de uma relação entre várias entidades; Chave sublinhado Um atributo (chave simples) ou grupo de atributos (chave combinada) que permite identificar univocamente cada entidade; Resumo: A presença de um substantivo usualmente indica uma entidade; A presença de um verbo é uma forte indicação de um relacionamento; Um adjectivo que é uma qualidade é uma forte indicação de um atributo; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 26 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Representação Gráfica Conceito de Chaves Modelo Relacional (Nível Lógico) Tipos de Participação Tipos de Relações Existentes Tipos de Associações Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Entidade, Atributos, Associações e Chaves Dê um exemplo de associação: n.º aluno código nome Designação morada Aluno Disciplina inscrito © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Chaves Primárias Todas as tabelas têm de possuir uma chave primária; Permitem identificar univocamente um registo; Número é chave porque não podem existir dois clientes com o mesmo número; Número Nome Morada 001 João Rua a 013 João Rua b Nome não é chave porque podem existir dois clientes com o mesmo nome; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 27 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Chaves Primárias Apenas os atributos {Fila,Lugar} garante que identificamos um registo; Número Nome Morada BI 001 João NULL 1234567 013 Ana NULL 7654321 Fila Lugar Ocupado? A 1 sim A 2 não B 1 não Número e BI são chaves candidatas. É obrigatório optar por uma única chave; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Chaves Primárias Dê exemplos de registos para as seguintes entidades, não se esquecendo de indicar a chave primária: Aluno (nAluno, nome, morada) (8699, Ricardo, Rua A) (8700, Nuno, Rua José) (8701, Ana, Travessa do Viriato) registo / linha / ocorrência / instância Disciplina (codDisciplina, desDisciplina) (1, TIC) (2, Informática) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] registo / linha / ocorrência / instância Bases de Dados 28 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Chaves Estrangeiras As chaves estrangeiras são conjuntos de uma ou mais colunas que, numa determinada tabela, referenciam a chave primária de outra tabela. As chaves estrangeiras constituem um mecanismo essencial de funcionamento dos sistemas de bases de dados relacionais; Aluno (numAluno, nome, morada,……) Disciplina (codDisciplina, designação,………) Exame (numAluno, codDisciplina, data, nota, ………) Verifica-se que a tabela Exame possui duas chaves estrangeiras; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Chaves Estrangeiras Importa chamar a atenção para o facto de não ser obrigatório que uma chave externa faça parte da chave primária da tabela em que está inserida. Empregado (codEmpregado, nome, codDepartamento,……) Departamento (codDepartamento, designação,………) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 29 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Integridade de Entidade e Integridade Referencial Integridade de Entidade Nenhum componente de chave primária de uma tabela pode conter nulos. Tabela Jogadores Integridade Referencial O valor da chave estrangeira tem de existir na tabela referenciada. Por outras palavras, não pode ser usada como chave estrangeira um valor que não exista como chave na sua tabela de origem IdJogador Nome DataNasc J1 Vaz 08/10/1970 J2 Inácio 20/08/1972 J3 Paulo 20/01/1977 J4 Pinho 15/02/1978 ….. ….. ….. Tabela Participações IdJogador IdJogo Golos J1 1 1 J2 2 0 J3 3 2 J152 1 0 ….. ….. ….. A inscrição do valor J152 na tabela Participações, constituiria uma violação do princípio de integridade referencial, uma vez que este valor não existe na tabela jogadores. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Exercício Do seguinte texto determine o que é Entidade, Associação, Atributos e Chave: Numa universidade existem alunos e professores. Os alunos são identificados por um número, têm um nome e morada. Os professores são identificados por um código, têm um nome e habilitações. Os professores leccionam aula aos alunos. Defina o modelo E-R (nível conceptual): n.º aluno código nome nome morada Aluno leccionar © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Professor habilitações Bases de Dados 30 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Tipos de relações existentes Com base nestes três tipos de relações é possível decompor qualquer relação do mundo real: Relação Unária (reflexiva) Possui apenas uma entidade que se relaciona com ela própria; Relação Binária (as mais comuns) Possui duas entidades que são relacionadas entre si; Relação Ternária (complexas) Possui três entidades que se relacionam entre si; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Tipos de relações existentes Relação Unária (reflexiva) Possui apenas uma entidade que se relaciona com ela própria; Selecção Esquema de uma relação unária, entre elementos da entidade selecção; jogos Selecção jogos Portugal x Espanha Portugal x França Alemanha x França © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 31 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Tipos de relações existentes Relação Binária (as mais comuns) Possui duas entidades que são relacionadas entre si; pertencem Deputados Grupos Parlamentares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Tipos de relações existentes Relação Ternária (complexas) Possui três entidades que se relacionam entre si; Actores Filmes Director © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 32 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações 3 Tipos de Associações Numa associação binária podemos encontrar 3 tipos de associações: Um para Um (1:1) Caso em que a um elemento corresponde um outro elemento; Um para Muitos (1:N) Caso em que a um elemento podem corresponder um ou mais elementos; Muitos para Muitos (M:N) Caso em que vários elementos podem ser origem de vários outros elementos; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações 2 Tipos de Participação Uma entidade pode participar numa relação de duas formas: Participação Obrigatória Não pode existir nenhuma ocorrência dessa entidade que não esteja associada a alguma ocorrência da outra entidade que participa na relação; A Entidade Obrigatória B Entidade Obrigatória Participação Não Obrigatória Podem existir ocorrências dessa entidade que não estejam relacionadas a alguma ocorrência da outra entidade que participa na relação; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 33 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Associação 1:1 – nenhuma Entidade Obrigatória Dê um exemplo para cada um dos seguintes elementos: Um para Um (1:1) Homem 1 Casamento 1 Mulher Um Homem está casado com uma Mulher Uma Mulher está casada com um Homem H M H1 M1 H2 M2 H3 M3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Associação 1:1 – uma Entidade Obrigatória Outro Exemplo de Um para Um (1:1) Empregado 1 Tem 1 Carro Um Carro pertence obrigatoriamente a um Empregado Mas nem todo o Empregado tem um Carro E C E1 C1 E2 C2 E3 E4 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] C3 Bases de Dados 34 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Associação 1:1 – as duas Entidades Obrigatórias Outro Exemplo de Um para Um (1:1) Empregado 1 Tem 1 Carro Um Empregado tem obrigatoriamente um Carro Um Carro pertence obrigatoriamente a um Empregado E C E1 C1 E2 C2 E3 C3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Associação 1:N – nenhuma Entidade Obrigatória Um para Muitos (1:N) Enfermaria 1 Tem N Paciente Uma Enfermaria têm vários Pacientes Um Paciente pertence a uma só Enfermaria E P E1 P1 P2 E2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] P3 Bases de Dados 35 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Associação 1:N – Entidade do lado N Obrigatória Um para Muitos (1:N) Empresa 1 Trabalhar N Empregado Uma Empresa têm vários Empregados a trabalhar Um Empregado trabalha obrigatoriamente numa Empresa A B A1 B1 B2 A2 B3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Representação Gráfica Conceito de Chaves Tipos de Participação Tipos de Relações Existentes Tipos de Associações Associação M:N – nenhuma Entidade Obrigatória Muitos para Muitos (M:N) Autor M Escreveu N Pertence Livro Um Autor escreveu vários Livros Um Livro pertence a vários Autores A L A1 L1 A2 L2 A3 L3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 36 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Contextualização De acordo com os tipos de associações e os tipos de participação: Autor M N obra Publicação é possível definir o modelo relacional (nível lógico); É no entanto necessário aprender os fundamentos teóricos da passagem do modelo E-R (nível conceptual) para o modelo relacional (nível lógico), por forma que seja possível definir as tabelas: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 – nenhuma Entidade Obrigatória Dê um exemplo para cada um dos seguintes elementos: Um para Um (1:1) Homem 1 Casamento 1 Mulher Um Homem está casado com uma Mulher Uma Mulher está casada com um Homem H M H1 M1 H2 M2 H3 M3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 37 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 – nenhuma Entidade Obrigatória Transf. Modelo E-R para modelo relacional Homem (BIHomem, nome, morada,……) Quando se transforma um modelo conceptual (E-R) para um modelo lógico (relacional), é necessário realizar um conjunto de alterações. Mulher (BIMulher, nome, morada,………) Se no relacionamento 1:1 nenhuma entidade é obrigatória são necessárias 3 tabelas (2 para as entidades + 1 para a associação): Homem (BIHomem, nome, morada,……) Mulher (BIMulher, nome, morada,………) A transformação passa por criar uma nova tabela, onde a chave, é a chave primária de uma das entidades (por exemplo Homem). Deve-se também adicionar como atributo a chave da outra entidade (Mulher): Casamento (BIHomem, BIMulher, ……) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 – uma Entidade Obrigatória Outro Exemplo de Um para Um (1:1) Empregado 1 Tem 1 Carro Um Carro pertence obrigatoriamente a um Empregado Mas nem todo o Empregado tem um Carro E C E1 C1 E2 C2 E3 E4 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] C3 Bases de Dados 38 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 – uma Entidade Obrigatória Empregado (codEmpregado, nome, morada,……) Carro (Matricula, marca, modelo,………) Se o relacionamento de 1:1 tem participação obrigatória de apenas uma entidade são necessárias 2 tabelas: A transformação passa por colocar o atributo que é chave primária da relação Empregado (entidade não obrigatória) na relação Carro (entidade obrigatória) : Empregado (codEmpregado, nome, morada,……) Carro (Matricula, marca, modelo, codEmpregado,……) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 – as duas Entidades Obrigatórias Outro Exemplo de Um para Um (1:1) Empregado 1 Tem 1 Carro Um Empregado tem obrigatoriamente um Carro Um Carro pertence obrigatoriamente a um Empregado E C E1 C1 E2 C2 E3 C3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 39 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 – as duas Entidades Obrigatórias Empregado (codEmpregado, nome, morada,……) Carro (Matricula, marca, modelo,………) Se o relacionamento de 1:1 tem participação obrigatória de ambas as entidades é necessária apenas 1 única tabela: A transformação passa por colocar o atributo que é chave primária de uma das entidades (por exemplo de Carro) na outra entidade (por exemplo em Empregado): Empregado (codEmpregado, nome, morada, Matricula, marca, modelo,……) Os atributos do Carro podem ser vistos como atributos adicionais do Empregado © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:N – nenhuma Entidade Obrigatória Um para Muitos (1:N) Enfermaria 1 Tem N Paciente Uma Enfermaria têm vários Pacientes Um Paciente pertence a uma só Enfermaria E P E1 P1 P2 E2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] P3 Bases de Dados 40 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:N – nenhuma Entidade Obrigatória Enfermaria (codEnfermaria, designação,……) Paciente (codPaciente, nome, morada,………) Se no relacionamento 1:N a entidade do lado N não é obrigatória, são necessárias 3 tabelas (2 para as entidades + 1 para a associação): Enfermaria (codEnfermaria, designação,……) Paciente (codPaciente, nome, morada,………) A transformação passa por criar uma nova tabela, onde a chave, é a chave primária da entidade Paciente (lado N da associação). Deve-se também adicionar como atributo a chave da entidade Enfermaria (lado 1 da associação): Enfermaria_Paciente (codPaciente, codEnfermaria, ……) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:N – Entidade do lado N Obrigatória Um para Muitos (1:N) Empresa 1 Trabalhar N Empregado Uma Empresa têm vários Empregados a trabalhar Um Empregado trabalha obrigatoriamente numa Empresa A B A1 B1 B2 A2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] B3 Bases de Dados 41 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:N – Entidade do lado N Obrigatória Empresa (codEmpresa, nome, localização,……) Empregado (BI, nome, morada,……) Se no relacionamento 1:N a entidade do lado N é obrigatória, são necessárias duas tabelas: A transformação passa por colocar o atributo que é chave primária da relação Empresa (lado 1 da associação) na relação Empregado (lado N da associação): Empresa (codEmpresa, nome, localização,……) Empregado (BI, nome, morada, codEmpresa,……) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação M:N – Obrigatoriedade Irrelevante Muitos para Muitos (M:N) Autor M Escreveu N Pertence Livro Um Autor escreveu vários Livros Um Livro pertence a vários Autores A L A1 L1 A2 L2 A3 L3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 42 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação M:N – Obrigatoriedade Irrelevante Autor (codAutor, nome,……) Livro (ISBN, Título, numPag,……) Nas relações M:N são sempre necessárias 3 tabelas, uma para cada entidade e uma terceira para a associação: Autor (codAutor, nome,……) Livro (ISBN, Título, numPag,……) A transformação passa por criar uma nova tabela, onde a chave, é a chave é constituída pela chave de cada um das entidades (chave de Autor + chave de Livro): Autor_Livro (codAutor, ISBN, dataLançamento,……) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Resumo Uma associação dá origem a uma tabela quando: Quando é uma associação 1:N (com entidade do lado N não obrigatória); Quando é uma associação 1:1 (com ambas as entidades não obrigatórias); Quando é uma associação M:N. A existência de uma chave estrangeira (atributo que é chave primária noutra relação) numa relação, prende-se com a necessidade de manter a interligação entre essa relação e a relação onde esse conjunto de atributos é chave primária; Por exemplo dadas duas relações, Departamentos e Funcionários, a única forma de traduzir que um dado funcionário trabalha num dado departamento é incluir na relação Funcionários a identificação do Departamento onde esse Funcionário trabalha; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 43 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Exercício Defina com base no seguinte levantamento de requisitos o modelo de E-R: Um Editor pode editar vários Livros; Um Livro obrigatoriamente só pode ser editado por um Editor; Um Livro pode ser requisitado por vários Utentes; Um Utente pode requisitar vários Livros; Editor 1 N Edição M Livro Requisição © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] N Utente Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Exercício Transformar o modelo E-R (nível conceptual) no modelo relacional (nível lógico): 4 tabelas (3 entidades + 1 associação) Editor (codEditor, nome,……) Livro (ISBN, título, codEditor……) Requisição (ISBN, codLeitor, dataRequisição,……) Utente (codLeitor, nome,……) Editor codEditor nome …….. Requisição Livro 1 ISBN N 1 N ISBN título codLeitor codEditor dataReq. ………. ………. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Utente 1 codLeitor N nome …….. Bases de Dados 44 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Exercício Pretende-se desenvolver uma base de dados para um banco: Cada cliente pode ter várias contas, mas cada conta só tem associado um cliente; Cada conta está fixada numa agência, a qual pode ter várias contas; Cada cliente pode fazer vários empréstimos, mas cada empréstimo só está associado a um cliente; Cada empréstimo está fixado numa agência, a qual pode ter vários empréstimos concedidos; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional Modelo E-R (nível conceptual) Modelo de E-R: Cliente 1 N Conta N 1 Agência 1 N Empréstimo N 1 Modelo de E-R constituído pelo clientes de um banco, assim como as contas e empréstimos desses clientes nas várias agências do banco. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 45 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Modelo Relacional (Nível Lógico) Transformação do modelo E-R (ass. 1:N) para modelo Relacional Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Transformação do modelo E-R (ass. M:N) para modelo Relacional DDL e DML Modelo Relacional (nível lógico) Modelo Relacional: Clientes(codCliente, nome, profissao, localidade); Agencias(codAgencia, designacao, localidade); Contas Contas(numConta, tipoConta, codCliente, codAgencia, saldo); numConta Emprestimos(numEmprestimo, codCliente, codAgencia, valor); N tipoConta codCliente codAgencia N Clientes codClient e Agencia saldo 1 1 codAgencia 1 nome Emprestimos Profissao localidade N designacao localidade numEmprestimo codCliente codAgencia N valor © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Objectivos da Normalização Normalizar para quê? Após o desenvolvimento do modelo E-R dos dados (nível conceptual) é feito o desenvolvimento do modelo relacional (nível lógico); O conjunto de tabelas obtidas representa a estrutura da informação; Assegurar o mínimo de redundância possível; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 46 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Limitações das monotabelas Para registar numa única tabela as encomendas efectuadas pelos clientes, caímos numa redundância desnecessária de informação, quer em relação aos produtos, quer em relação aos clientes; Cliente Endereço Telefone Produto Modelo Preço Data Qtd Silva Lisboa 665544 Alicate A1 400 04/03/06 400 Santos Porto 554433 Martelo M1 250 04/03/06 250 Costa Coimbra 332211 Serra S1 1500 04/03/06 1500 Castro Faro 443322 Tesoura T1 500 04/03/06 500 Silva Lisboa 665544 Martelo M1 250 05/04/06 250 Silva Lisboa 665544 Tesoura T1 500 05/04/06 500 Costa Coimbra 332211 Alicate A1 400 06/04/06 400 Costa Coimbra 332211 Serra S1 1500 06/04/06 1500 Castro Faro 443322 Alicate A1 400 07/04/06 400 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Limitações das monotabelas Outros problemas das monotabelas: Problemas de Actualização Se o endereço do cliente for alterado, essa alteração tem de ser feita em várias linhas da tabela; Problemas de Inserção Não é possível registar informação relativa a um cliente que não tenha feito qualquer encomenda; Problemas de Eliminação Imagine-se que o cliente ainda só fez uma encomenda. Se a encomenda for anulada, perde-se toda a informação relativa ao cliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 47 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Objectivos da Normalização Modificar o conjunto de tabelas obtido do modelo conceptual num outro conjunto de tabelas equivalente, mas menos redundante e mais estável; A existência de redundâncias está associada a um conjunto de anomalias de inserção de dados, anomalias de eliminação de dados e anomalias de alteração de dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica As 3 formas normais 1.ª Forma Normal Uma tabela, está na 1FN quando todos os seus atributos são elementares. Não pode existir um conjunto de valores para um determinado atributo; 2.ª Forma Normal Quando a chave é composta, qualquer atributo que não seja chave deve depender da totalidade da chave, através de uma dependência funcional elementar; 3.ª Forma Normal Nenhum atributo não chave pode depender de um outro atributo não chave, ou seja, cada atributo deve depender apenas da chave primária da relação; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 48 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Esquema Geral da Normalização 1.ª Forma Normal Dados não normalizados. Dispor a informação em tabelas de forma que todas as ocorrências dos atributos sejam elementares: Os dados estão na 1.ª Forma Normal © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Esquema Geral da Normalização 2.ª Forma Normal Identificar as dependências funcionais dos atributos em relação às chaves: Os dados estão na 2.ª Forma Normal © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 49 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Esquema Geral da Normalização 3.ª Forma Normal Identificar as dependências transitivas. Desdobrar a relação de forma que cada atributo depende única e exclusivamente da chave: Os dados estão na 3.ª Forma Normal © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Contextualização Numa escola pretende-se manter informação sobre: - Os alunos da escola (com informação sobre o seu número, nome, morada); - As disciplinas que são ministradas na escola (nome); - Os professores que dão essas disciplinas (nome); - As notas dos alunos nas disciplinas que frequentam; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 50 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Contextualização Actualmente já existe uma base de dados que guarda toda a informação numa tabela: idAluno Nome Morada A1 João Lisboa Disciplinas Professor Nota Matemática, Economia, Direito Prof. Carlos, Prof Paulo, Prof José 14, 19, 9 A2 Ana Algés Matemática, Física Prof. Carlos, Prof.ª Ana 11, 4 A3 Pedro Sintra Matemática, Economia, Física Prof. Carlos, Prof Paulo, Prof.ª Ana 8, 12, 15 A4 Filipa Lisboa Matemática Prof. Carlos, 14 1.ª Forma Normal O passo seguinte é converter os atributos não atómicos, de forma que não seja possível incluir mais do que um valor em cada campo de uma tabela: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 1FN Definição Uma tabela, está na 1FN quando todos os seus atributos são elementares. Não pode existir um conjunto de valores para um determinado atributo; Conjunto de Atributos Atributos Elementares Conjunto de elementos indivisíveis (exemplo: Data de Nascimento, Peso, etc…) Uma lista de valores para um dado atributo © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 51 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 1FN Tabela na 1.ª Forma Normal: Chave idAluno Nome Morada idDisciplina Disciplina idProfessor Professor Nota A1 João Lisboa 1 Matemática 1 Prof. Carlos 14 A1 João Lisboa 2 Economia 2 Prof. Paulo 19 A1 João Lisboa 3 Direito 3 Prof. José 9 A2 Ana Algés 1 Matemática 1 Prof. Carlos 11 4 A2 Ana Algés 4 Física 4 Prof.ª Ana A3 Pedro Sintra 1 Matemática 1 Prof. Carlos 8 A3 Pedro Sintra 2 Economia 2 Prof. Paulo 12 A3 Pedro Sintra 4 Física 4 Prof.ª Ana 15 A4 Filipa Lisboa 1 Matemática 1 Prof. Carlos 14 Alunos (idAluno, Nome, Morada, idDisciplina, id Disciplina, idProfessor, Professor, nota) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 2FN Definição Quando a chave é composta, qualquer atributo que não seja chave deve depender da totalidade da chave, através de uma dependência funcional elementar; Dependências Funcionais (X Y) X e Y são listas de atributos; Se uma instância de valores do atributo X determina univocamente uma instância de Y (X determina Y). Ou seja, diz-se que X determina Y, se para cada valor de X existe um só valor de Y Ou seja, se soubermos X, sabemos automaticamente Y © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 52 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 2FN Exemplo de dependência funcional (X Z) Tome-se como referência a tabela A (x,y,z,w): X Z; Para um dado valor do atributo X, o valor do atributo Z é sempre o mesmo; x y z w 1 3 2 7 2 4 5 8 1 5 2 4 1 3 2 7 2 4 5 8 7 3 4 2 Conhecido o valor de X sabe-se automaticamente o valor de Z; Sempre que o valor da coluna X é 1, o valor do atributo Z é 2; Se estas regras se verificarem sempre, e não apenas para um conjunto concreto de valores (num dado momento), então existe uma dependência funcional; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 2FN Exemplo de dependência funcional elementar {X,Y} W Tome-se como referência a tabela A (x,y,z,w): {X,Y} W; W é funcionalmente dependente do conjunto de atributos {X,Y}, quando estes atributos são tomados como um conjunto; x y z w 1 3 2 7 2 4 5 8 1 5 2 4 1 3 2 7 2 4 5 8 7 3 4 2 Convém, notar que o atributo W não é funcionalmente dependente de nenhum dos atributos X e Y, quando estes são tomados isoladamente (por exemplo x(1) w(7), mas x(1) w(4), logo não é funcionalmente dependente); W é irredutivelmente dependente de {X,Y}, como um todo e não depende de nenhum dos seus subconjuntos tomados isoladamente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 53 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados 2FN idAluno Nome Morada idDisciplina Disciplina idProfessor Professor Nota A1 João Lisboa 1 Matemática 1 Prof. Carlos 14 A1 João Lisboa 2 Economia 2 Prof. Paulo 19 A1 João Lisboa 3 Direito 3 Prof. José 9 A2 Ana Algés 1 Matemática 1 Prof. Carlos 11 4 A2 Ana Algés 4 Física 4 Prof.ª Ana A3 Pedro Sintra 1 Matemática 1 Prof. Carlos 8 A3 Pedro Sintra 2 Economia 2 Prof. Paulo 12 A3 Pedro Sintra 4 Física 4 Prof.ª Ana 15 A4 Filipa Lisboa 1 Matemática 1 Prof. Carlos 14 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 2FN Tabelas na 2.ª Forma Normal: idAluno Nome Morada A1 João Lisboa A2 Ana Algés A3 A4 Chave Chave Chave Pedro Filipa Sintra Lisboa idAluno idDisciplina Nota idDisciplina Disciplina idProfessor Professor A1 1 14 1 Matemática 1 Prof. Carlos A1 2 19 2 Economia 2 Prof. Paulo A1 3 9 3 Direito 3 Prof. José A2 1 11 4 Física 4 Prof.ª Ana A2 4 4 A3 1 8 A3 2 12 A3 4 15 A4 1 14 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 54 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 3FN Definição Nenhum atributo não chave pode depender de um outro atributo não chave, ou seja, cada atributo deve depender apenas da chave primária da relação; idDisciplina Disciplina idProfessor Professor 1 Matemática 1 Prof. Carlos 2 Economia 2 Prof. Paulo 3 Direito 3 Prof. José 4 Física 4 Prof.ª Ana © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 3FN Tabelas na 3.ª Forma Normal: Chave Chave idDisciplina Disciplina idProfessor idProfessor Professor 1 Matemática 1 1 Prof. Carlos 2 Economia 2 2 Prof. Paulo 3 Direito 3 3 Prof. José 4 Física 4 4 Prof.ª Ana © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 55 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Resumo Desta forma obtemos as seguintes tabelas normalizadas (3FN): Aluno (idAluno, nome, morada); Nota (idAluno, idDisciplina, nota); Disciplina (idDisciplina, disciplina, idProfessor); Professor (idProfessor, Professor); Reflexo do modelo lógico de dados (modelo relacional): Aluno idAluno Nota N 1 idAluno 1 N Disciplina Professor idDisciplina 1 idProfessor nome idDisciplina …….. nota idProfessor ………. ………. disciplina N © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Professor …….. Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Contextualização Pretende-se automatizar o registo de compras num hipermercado: - Os clientes fazem encomendas - As encomendas contêm produtos © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 56 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 1FN Definição Uma tabela, está na 1FN quando todos os seus atributos são elementares. Não pode existir um conjunto de valores para um determinado atributo; Actualmente já existe uma base de dados que guarda toda a informação numa tabela: Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc codProduto Produto Qtd 12 2 João Rua A 11-11-2000 1, 2, 3 A, B, C 12, 10, 16 13 3 Ana Rua B 11-11-2000 1, 3 A, C 16, 18 1.ª Forma Normal © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 1FN O passo seguinte é converter os atributos não atómicos, de forma que não seja possível incluir mais do que um valor em cada campo de uma tabela: Tabela na 1.ª Forma Normal: Chave Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc codProduto Produto 12 2 João Rua A 11-11-2000 1 A 12 12 2 João Rua A 11-11-2000 2 B 10 12 2 João Rua A 11-11-2000 3 C 16 13 3 Ana Rua B 11-11-2000 1 A 16 13 3 Ana Rua B 11-11-2000 3 C 18 Qtd Encomenda (numEncomenda, numCliente, Cliente, endCliente, dataEnc, codProduto, cod Produto, Qtd) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 57 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 2FN Definição Quando a chave é composta, qualquer atributo que não seja chave deve depender da totalidade da chave, através de uma dependência funcional elementar; Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc codProduto Produto Qtd 12 2 João Rua A 11-11-2000 1 A 12 12 2 João Rua A 11-11-2000 2 B 10 12 2 João Rua A 11-11-2000 3 C 16 13 3 Ana Rua B 11-11-2000 1 A 16 13 3 Ana Rua B 11-11-2000 3 C 18 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 2FN Chave Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc 12 2 João Rua A 11-11-2000 13 3 Ana Rua B 11-11-2000 Encomenda (numEncomenda, numCliente, Cliente, endCliente, dataEnc) Chave Chave Nº encomenda codProduto Qtd 12 1 12 12 2 10 12 13 3 1 16 16 13 3 18 codProduto Produto 1 2 A B 3 C Produto (codProduto, Produto) Linha_Encomenda (numEncomenda, codProduto, Qtd) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 58 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 3FN Definição Nenhum atributo não chave pode depender de um outro atributo não chave, ou seja, cada atributo deve depender apenas da chave primária da relação; A única relação que pode não estar na 3FN é a Encomendas dado que é a única que possui mais do que um atributo não-chave; Chave Chave Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc Nº encomenda codProduto Qtd 12 2 João Rua A 11-11-2000 12 1 12 13 3 Ana Rua B 11-11-2000 12 2 10 12 3 16 13 1 16 13 3 18 Encomenda Chave © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Produto 1 A 2 B 3 C Produto Linha_Encomenda Modelo Relacional (Nível Lógico) codProduto Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 3FN Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc 12 2 João Rua A 11-11-2000 13 3 Ana Rua B 11-11-2000 A existência desta última dependência, está em claro desacordo com a definição da 3FN. A solução passa por decompor a relação, de acordo com as dependências, nas duas relações seguintes: Chave Chave Nº encomenda Nº cliente DataEnc Nº cliente Cliente Endereço Cliente 12 2 11-11-2000 2 João Rua A 13 3 11-11-2000 3 Ana Rua B Encomenda (numEncomenda, numCliente, dataEnc) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Cliente (numCliente, Cliente, endCliente) Bases de Dados 59 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Resumo Modelo E-R (nível conceptual) Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc codProduto Produto Qtd 12 2 João Rua A 11-11-2000 1 A 12 12 2 João Rua A 11-11-2000 2 B 10 12 2 João Rua A 11-11-2000 3 C 16 13 3 Ana Rua B 11-11-2000 1 A 16 13 3 Ana Rua B 11-11-2000 3 C 18 Para registar numa única tabela as encomendas registadas pelos clientes, caímos numa redundância desnecessária. A solução mais adequada passa pela definição de várias tabelas: Produto M N Linha_Encom Tem endas N Encomendas 1 Pertence © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Cliente Bases de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Resumo Produto M N Linha_Encom Tem endas N Encomendas 1 Pertence Cliente Modelo Relacional (nível lógico) Chave Chave codProduto Produto Nº encomenda Nº cliente DataEnc 1 A 12 2 11-11-2000 13 3 11-11-2000 2 B 3 C Produto Chave Encomenda Nº encomenda codProduto Qtd 12 1 12 12 2 10 12 3 16 Nº cliente Cliente 13 1 16 2 João Rua A 13 3 18 3 Ana Rua B Linha_Encomenda © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Chave Endereço Cliente Cliente Bases de Dados 60 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Resumo Desta forma obtemos as seguintes tabelas normalizadas (3FN): Produto (codProduto, Produto) Linha_Encomenda (numEncomenda, codProduto, Qtd) Encomenda (numEncomenda, numCliente, dataEnc) Cliente (numCliente, Cliente, endCliente) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Top-Down vs Bottom-Up Levantamento de requisitos e Desenho de uma Base de Dados Top-Down vs Bottom-Up Top-Down Parte-se de uma análise das entidades e dos tipos de relacionamentos, segundo o modelo E-R, e, com base numa análise dos diferentes tipos de relacionamentos entre as entidades, determinam-se as tabelas a incluir na BD; Bottom-up Começa-se por considerar uma ou mais tabelas que contenham os atributos ou campos considerados necessários à representação de cada aspecto da situação e, com base num processo de normalização da informação, determinam-se as tabelas necessárias; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 61 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Top-Down vs Bottom-Up Levantamento de requisitos e Desenho de uma Base de Dados Top-Down vs Bottom-Up Estas duas estratégias não são mutuamente exclusivas. Na prática é bastante proveitoso utilizar processos de uma e de outra; Podemos começar por abordar uma situação pela estratégia top-down, procurando captar, numa visão global, as entidades e relacionamentos que nos parecem retratar adequadamente essa situação, e, numa fase posterior, recorrer à estratégia bottom-up, para refinar a estrutura da BD, procurando assegurar que as tabelas fiquem correctamente normalizadas. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Estratégias para a concepção de uma Base de Dados Bases de Dados Top-Down vs Bottom-Up Levantamento de requisitos e Desenho de uma Base de Dados Levantamento de Requisitos e Desenho de uma BD Levantamento de Requisitos Para a construção do modelo E-R, o analista de sistemas necessita recolher dados relevantes junto do utilizador final; Desenho de uma base de dados O desenho de uma base de dados passa pela definição do modelo E-R (captura da realidade): Elaboração no papel de um primeiro esboço da estrutura geral da BD; Definição exacta de cada entidade; Determinação dos relacionamentos; Revisão da estrutura obtida; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 62 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de um esquema de Bases de Dados Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Contextualização A biblioteca do IPT tem por objectivo reorganizar a sua gestão. Em particular, pretende passar de um sistema centralizado para um sistema descentralizado em várias bibliotecas satélites; Os documentos da biblioteca, designados por publicações, têm associado a si, um tipo de publicação: livros, revistas, jornais, e-books, etc…; Enquadram-se numa categoria (exemplo: Informática; Medicina, etc…); E podem ser escritos por vários autores e quando aplicável editados por uma editora; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 63 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Contextualização Cada publicação é identificada por um código da publicação e compreende um conjunto de características: título; idioma; número de páginas; imagem da capa; formato; descrição da obra; ISBN; local de publicação; depósito legal e número total de publicações disponíveis no conjunto de todas as bibliotecas; Nenhuma das características é de preenchimento obrigatório (até porque as revistas não têm por exemplo um autor). Por outro lado, características como o ISBN que dizem respeito a livros, denominam-se por ISBN, mas entendemse por ISSN, quando por exemplo a publicação é uma revista; Em cada uma das bibliotecas satélites, deve existir pelo menos um (podendo existir obviamente mais) exemplar de cada publicação; Cada exemplar de uma publicação tem uma cota única que o identifica de forma inequívoca; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Contextualização Além do mais, cada exemplar tem como características a data de publicação; a data de aquisição; o número de edição; a possibilidade de ser uma publicação passível de ser ou não requisitada; um campo que valide se está ou não requisitado; um campo observações para descrever se a obra está danificada, etc… e um campo CD que indique se o recurso vem acompanhado de cd ou não; Apenas a data de aquisição é de preenchimento obrigatório e o campo cd deve ser entendido como DVD quando for o caso; Cada uma das bibliotecas deve ter conhecimento em tempo real, do número publicações disponíveis; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 64 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Contextualização A inscrição dos leitores é válida em qualquer uma das bibliotecas. São identificados por um código e tem como características o nome, morada, contacto, email, etc…; Pertencem a um tipo de leitor, ao qual está associado um prazo de entrega. Por exemplo Professores tem direito a 5 dias, Alunos de Pós-Graduação 3 dias, etc… A biblioteca deverá guardar informação (ou seja o histórico) relativa à requisição das publicações por parte dos leitores. Assim, necessita registar a data de requisição, a data prevista de entrega e um campo que registe se o recurso já foi devolvido ou não; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Objectivos Gestão dos Recursos Todas as aquisições devem ser registadas no sistema através de um formulário criado para o efeito; Para isso é necessário considerar a criação de novas fichas, a consulta de publicações requisitadas, a consulta de publicações em atraso e a consulta de publicações por tipo de publicação; Devem também ser criados os respectivos formulários que permitam inserir o tipo de publicação, a categoria, a biblioteca onde existe o respectivo exemplar, etc….; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 65 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Objectivos Gestão dos Leitores Todas as novas inscrições devem ser registadas no sistema através de um formulário criado para o efeito; Para isso é necessário considerar a criação de novas fichas, bem como a consulta de fichas existentes; Devem também ser criados os respectivos formulários que permitam inserir o tipo de leitor, etc….; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Objectivos Requisição de Livros Todas as requisições devem ser registadas no sistema através de um formulário criado para o efeito; Para isso é necessário considerar a criação de novas fichas, bem como a consulta de fichas existentes; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 66 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Objectivos Emissão de Relatórios Deve ser construído um relatório com informações relativas às publicações, agrupadas por tipo de publicação; Deve ser construído um relatório com informações relativas ao leitor e respectiva publicação cuja requisição caducou; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Objectivos Menus Deve ser criado um menu para cada um dos pontos anteriores e um menu principal com botões para cada um deles; Macros Deve ser criada uma macro que abra o menu principal, assim que o Access seja executado; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 67 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Publicação vs tipoPublicação tipoPublicação 1 Os documentos da biblioteca, designados por publicações, têm associado a si, um tipo de publicação pertence N Publicação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Categoria tipoPublicação 1 Categoria 1 As publicações enquadram-se numa categoria pertence pertence N Publicação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 68 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Editora tipoPublicação 1 Categoria Editora 1 1 As publicações, quando aplicável, podem ser editadas por uma editora pertence pertence N Publicação N edita © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenho de uma Base de Dados para uma biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Autor N Categoria Editora 1 1 pertence pertence obra tipoPublicação 1 N Autor As publicações podem ser produzidas por um ou mais autores M Publicação N edita © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 69 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Exemplar Autor Uma publicação tem um conjunto de exemplares N Editora N pertence 1 M Publicação N 1 tem Categoria 1 pertence obra tipoPublicação 1 edita N Exemplares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Biblioteca Autor Deve existir pelo menos um exemplar de cada publicação em todas as bibliotecas. N Editora 1 N pertence 1 Biblioteca M Publicação N 1 tem Categoria pertence obra tipoPublicação 1 edita 1 tem N N Exemplares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 70 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Leitor Autor A inscrição dos leitores é válida em qualquer uma das bibliotecas. N Editora N pertence 1 M Publicação N edita 1 Biblioteca 1 tem Categoria 1 pertence obra tipoPublicação 1 N N tem Exemplares M N requisição © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Leitor Bases de Dados Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Leitor vs tipoLeitor Autor Um leitor pertence a um determinado tipo de leitor. N N pertence 1 Biblioteca M Publicação N 1 tipoLeitor 1 edita 1 tem N N Exemplares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] tem Editora 1 tem Categoria pertence obra tipoPublicação 1 M requisição N N Leitor Bases de Dados 71 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Lógico (modelo relacional) Autor Publicacao Categoria codPublicacao Titulo Idioma numPags imagemCapa Formato descricaoObra numPublDisp ISBN depositoLegal localPubl codCategoria codTipoPubl codEditora codCategoria desCategoria tipoPublicacao codTipoPubl desTipoPubl Editora codEditora desEditora Morada Contacto Email Obra codAutor nome Email codAutor tipoLeitor codTipoLeitor desTipoLeitor prazoEntrega codPublicacao Exemplar Leitor Cota Obs dataAquisicao dataPublicacao numEdicao possbRequisitar Cd Requisitado codPublicacao codBiblioteca codLeitor Nome Morada Contacto Email codTipoLeitor Biblioteca Requisicao Cota codLeitor dataRequisicao dataEntrega Devolvido codBiblioteca Morada Contacto Email © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Microsoft SQL Server 2005 Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 72 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Sumário Sumário Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server; Interface; Criar Bases de Dados; Criar Tabelas; Criar Índices; Executar Queries; Executar Store Procedures; Realizar Backups © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups SQL Server 2005 SQL Server é um SGBD assente na arquitectura cliente/servidor, desenvolvido e comercializado pela Microsoft e que corre exclusivamente nos sistemas operativos Windows; É fácil de usar; É escalável, entende-se por isso o facto de poder ser instalado tanto num computador portátil, num computador de secretária com um único processador ou num servidor com vários processadores; Oferece ferramentas de Business Intelligence © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 73 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Versões do Server 2005 Existem 6 versões disponíveis: SQL Server 2005 Express Edition; Excelente forma de começar a trabalhar com o SQL Server. Gratuito (http://msdn.microsoft.com/vstudio/express/sql/download/). Entre as suas limitações encontra-se o facto de só permitir bases de dados até 4 GB e trabalhar com um único processador. SQL Server 2005 Workgroup Edition; Uma óptima solução para pequenas empresas. Não existe limite para o tamanho da base de dados, mas apenas permite trabalhar com dois processadores e tem reduzidas funcionalidades ao nível de BIntelligence SQL Server 2005 Developer Edition; Desenhados especificamente para equipas de desenvolvimento que pretendem desenvolver aplicações SQL Server; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Versões do Server 2005 SQL Server 2005 Standard Edition; Destinado a médias empresas. Inclui funcionalidades relativas a DataWarehouse. Suporte até 4 processadores. Logo abaixo da versão Enterpresi é de todas a versão mais completa; SQL Server 2005 Enterprise Edition; De todas, esta é a solução mais completa, suportando um número ilimitado de CPUs; SQL Server 2005 Mobile Edition; Apropriado para dispositivos móveis. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 74 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Iniciar o Server 2005 O acesso ao SQL Server Management Studio é feito através do menu Start – Programs – Microsoft Sql Server 2005; O SQL Server Management Studio pode ser usado para gerir para lá do SQL Server 2005, as versões mais antigas: SQL Server 2000 e SQL Server 7 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Autenticação de Utilizadores A definição de políticas de segurança são extremamente encorajadas uma vez que evitam acessos indevidos e porque permitem especificar aos utilizadores autorizados os respectivos privilégios. Quando um utilizador tenta aceder um servidor SQL Server, pode ser autenticado de duas maneiras: pela Autenticação do Windows ou pela Autenticação do SQL Server: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 75 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Autenticação de Utilizadores O tipo de autenticação é definido aquando da instalação do SQL Server. Para modificar o tipo de autenticação é necessário seguir os seguintes passos: Botão direito do rato no servidor que se quer modificar e seleccionar propriedades; Seleccionar Security; Modificar a autenticação do servidor; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Autenticação de Utilizadores Quando se selecciona a autenticação de servidor, deverá adicionar-se um SQL Server Login. A adição deste login é independente do sistema operativo e dos seus logins; Se o sistema de autenticação for o do Windows, o SQL Server assume uma relação de confiança com o Windows e assume que se o utilizador pode entrar no sistema operativo também pode entrar na base de dados; É de todo conveniente no entanto, atribuir a cada um dos utilizadores (logins do windows) os respectivos privilégios o que também pode ser feito no SQL Server Management Studio; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 76 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Interface do Microsoft SQL Server © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Registered Servers Para registar servidores SQL Server é necessário ter activa a janela Registered – Servers (Menu View – Registered Servers), menu através do qual é possível por exemplo reiniciar servidor já existente, mandá-lo abaixo, etc… © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 77 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Registered Servers Através do item new é possível registrar um novo servidor: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Registered Servers Também é possível criar um novo grupo de servidores, bem como exportar e importar informações de outros servidores, o que evita o registro manual; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 78 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Object Explorer A janela Object Explorer, permite a conexão a qualquer um dos componentes do servidor de SQL Server e inclusive efectuar operações com o servidor (vistas anteriormente), bastando premir o botão direito do rato em cima do servidor. Para trabalhar com cada um dos componentes do SQL Server basta expandir a árvore. O botão direito do rato oferece opções próprias a cada objecto; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Object Explorer Para trabalharmos com o Object Explorer é necessário ter uma conexão estabelecida com o servidor (se fizemos o login logo no início da sessão essa conexão já existe): © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 79 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Server Objects Refere-se a um conjunto de objectos usados ao nível do servidor Backup Devices Incluem as tapes e os discos usados para fazer backup da base de dados. Quando se procede a um backup deve-se designar o backup device que se quer usar Linked Servers Permite trabalhar com outras bases de dados, sejam SQL Servers ou não Server Triggers Server Triggers são DDL (Data Definition Language) Triggers, executados em resposta a uma modificação na estrutura da base de dados © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Replication e Management Capacidade do sistema em fazer cópias da informação e automaticamente colocá-la numa localização remota O nó management contém ferramentas que ajudam na gestão do SQL Server. Estas ferramentas incluem a capacidade de visualizar os logs no servidor e o Activity Monitor (com informações acerca das conexões, etc…) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 80 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Através do Object Explorer temos acesso ao painel de segurança, onde podemos controlar os logins, adicionar e remover privilégios (server roles) e criar credenciais; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security No Login é possível adicionar/remover utilizadores bem como atribuir server roles: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 81 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Server roles são privilégios predefinidos que não podem ser nem adicionados nem removidos: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Consideremos os seguintes server roles: bulkadmin (Bulk Insert Administrators) Pode executar instruções de Insert; dbcreator (Database Creators) Pode criar e alterar bases de dados; diskadmin (Disk Administrators) Pode gerir os ficheiros gravados no disco; processadmin (Process Administrators) Pode gerir os processos de SQL Server © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 82 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security securityadmin (Security Administrators) Pode gerir os server logins; serveradmin (Server Administrators) Pode definir configurações do servidor; setupadmin (Setup Administrators) Pode gerir propriedades extra; sysadmin (System Administrators) Pode desempenhar qualquer actividade na instância do SQL Server. De facto, se o um utilizador tem este privilégio concedido, tem autorização para efectuar qualquer tarefa © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Os privilégios que acabamos de estudar são designados por Predefined Server Roles (Privilégios do servidor predefinidos) e são de âmbito geral. Existem depois os Predefined Database Roles de âmbito mais específico, ou seja, dizem respeito apenas a uma base de dados em específico: db_accessadmin (Database Access Administrator) Tem a capacidade de definir ID de utilizadores para uma base de dados; db_backupoperator (Database Backup Operator) Podem realizar backups da base de dados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 83 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security db_datareader (Database Data Reader) Tem a capacidade de ver dados de qualquer tabela da base de dados; db_datawriter (Database Data Writer) Tem a capacidade de inserir, modificar ou eliminar dados de qualquer tabela da base de dados; db_ddladmin (Database Data Definition Language Administrator) Podem criar, modificar, ou eliminar quaisquer objectos de uma base de dados db_denydatareader (Database Deny Data Reader) Permite a seus membros mudar o esquema da base de dados, no entanto, sem poder ver os dados da base de dados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security db_denydatawriter (Database Deny Data Writer) Impede que seus membros alterem qualquer dado numa base de dados; db_owner (Database Data Writer) Podem executar qualquer tarefa de configuração ou manutenção em uma base de dados; public Toda a base de dados quando é criada tem este privilégio por definição e todos os utilizadores da base de dados pertencem a esta categoria. Esta categoria é especialmente útil se for necessário atribuir os mesmos privilégios a todos os utilizadores da base de dados, ao mesmo tempo. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 84 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Para atribuir a um utilizador privilégios sobre uma base de dados deve fazer-se botão direito em cima de Database Roles – New Database Role: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Até agora, já vimos como criar e gerir logins que são usados para controlar o acesso ao SQL Server. Vimos também como criar e gerir privilégios para os utilizadores no acesso à base de dados, os quais são usados para controlar o acesso a bases de dados individualmente; Acontece que mesmo que um utilizador tenha um login e um acesso à base de dados, ele pode estar impedido de executar determinadas operações: Para atribuir essas permissões, deve fazer botão direito do rato em cima da base de dados - properties © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 85 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Security Depois seleccionar as respectivas permissões: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Bases de Dados Ao instalar o SQL Server são criadas 4 bases de dados com os seguintes nomes lógicos: Master Database É a base de dados de todas as bases de dados. Contém configurações do sistema, definições de inicialização do SQL Server, das contas de login © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 86 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Bases de Dados Model Database É a base de dados muito especial. Qualquer objecto que for colocado nesta base de dados é automaticamente replicado para todas as bases de dados posteriormente criadas. Com recurso a esta base de dados, torna-se assim bastante fácil propagar tabelas, views, etc… MSDB Database Base de dados usada para manter backups, etc… TempDB Database Guarda objectos temporários, tais como tabelas temporárias e objectos internos usados por exemplo para ordenação de registos; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Criar uma base de dados no SQL Server É possível criar uma base de dados e inclusive especificar o dono da base de dados: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 87 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Criar uma base de dados no SQL Server O utilizador que cria uma base de dados é o dono da base de dados [database owner]. Dentro dela, o dono é conhecido pelo nome especial 'dbo‘; O dono da base de dados pode conceder permissões para outros utilizadores de criar e excluir objectos dentro da base de dados; O utilizador que cria um objecto (tabela, visão, etc.) na base de dados é o dono desse objecto. O dono tem inicialmente todas as permissões no objecto criado e pode também conceder essas permissões a outros utilizadores se o desejar. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Generate Scripts O Object Explorer permite a criação de scripts desde um simples objecto a uma base de dados inteira; Existe a opção de criar o script na: Query Editor Window; Ficheiro Clipboard (funcionamento similar ao do PrintScreen, só temos que abrir, por exemplo o notepad, e colar o conteúdo (CTRL-V) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 88 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Criar tabelas no SQL Server Para criar uma tabela: Botão Direito em cima de Tables; Introduzir o nome da coluna, o tipo, o tamanho e se aceita ou não valores nulos; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Criar tabelas temporárias no SQL Server A criação de tabelas temporárias no SQL Server é feita com recurso à seguinte sintaxe (colocação de # ou ## antes no nome da tabela): SELECT column_name, ..., column_name INTO #tabTemporária FROM tabPermanente WHERE... A tabela fica guardada em: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 89 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Tipos de Dados Tipo Descrição Tamanho Bit pode guardar o valor 1 ou 0 1 byte Char char(n) armazena um número fixo de caracteres. Por exemplo, uma coluna do tipo char(30) tem sempre 30 caracteres. Se forem informados menos, o restante é completado com espaços Depende do tamanho do campo Varchar armazena até 8000 caracteres 2 bytes por caracter NVarchar armazena até 4000 caracteres 2 bytes por caracter Decimal permite armazenar dados exactos, sem perdas devidas a arredondamento. Ao usar este tipo, é possível especificar uma precisão, que indica quantos dígitos podem ser usados no total e uma escala, que indica quantos dígitos podem ser usados à direita do ponto. Por exemplo, decimal(9,2) permite guardar 7 dígitos antes do ponto decimal e 2 após, num total de 9, assim o maior valor possível é 9999999,99; Depende da precisão Numeric semelhante ao anterior Depende da precisão Float armazenam dados numéricos, oferecendo precisão até 15 digitos 8 bytes Real uma versão reduzida de float 4 bytes Image informação binária da imagem e pode conter até 2,147,483,647 bits Depende © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Tipos de Dados Tipo Descrição Int permite armazenar números inteiros entre -2.147.483.647 e +2.147.483.647 4 bytes SmallInt permite armazenar números inteiros entre -32767 e +32767 2 bytes Tinyint permite armazenar números não-negativos de 0 a 255. 1 byte Money usado para valores monetários permite valores entre 922.337.203.685.477,5808 e +922.337.203.685.477,5807 (922 trilhões). 8 bytes Smallmoney permite valores entre - 214.748,3648 e +214.748,3647 (214 mil) 4 bytes Text o tipo text é usado para colunas com dados "memo", ou seja, com texto de tamanho variável e permite armazenar até 2.146.483.647 caracteres 2 bytes NText ma versão reduzida do tipo Text que permite armazenar até 1.073.741.823 caracteres 1 byte DateTime o tipo datetime armazena valores contendo a data e hora, entre 1º de janeiro de 1753 e 31 de dezembro de 9999 4 bytes SmallDateTime o tipo smalldatetime ocupa menos espaço e armazena datas e horas de 1º de janeiro de 1900 até 6 de junho de 2079 4 bytes Timestamp não pode ser alterada pelo utilizador. É definida automaticamente com a data e hora actual quando a linha é inserida ou actualizada; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Tamanho Bases de Dados 90 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Chave-Primária Atribuir chave-primária; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Definir Chaves Possibilidade de atribuir automaticamente (sem intervenção do utilizador) um valor a uma chave, por exemplo um cliente: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 91 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Valores por Defeito Valores que o SQL Server automaticamente coloca num determinado campo. Um valor por defeito pode ser uma constante, uma função ou NULL; Por exemplo definir para que apareça sempre o número 7 ou a string ‘Ola’ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Computed Column É possível criar uma coluna baseada em dados de outras colunas. O SQL Server automaticamente actualiza a Computed Column quando as colunas das quais depende forem actualizadas; Um exemplo é o total, baseado no preço do produto e na quantidade; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 92 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Relações entre as tabelas (Chaves Estrangeiras) Definir as relações (Relationships) entre as tabelas: Por exemplo, se um campo da tabela for uma chave estrangeira deve especificar-se tal situação: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Relações entre as tabelas (Chaves Estrangeiras) Estabelecer a relação: As chaves podem ser visualizadas no object explorer: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 93 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Relações entre as tabelas (Chaves Estrangeiras) Quando estamos a estabelecer a relação, podemos definir de acordo com a Integridade Referencial, a acção “No Action” e “Cascade” para o comando DELETE e UPDATE © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Relações entre as tabelas (Chaves Estrangeiras) Se definirmos NO ACTION na opção DELETE e posteriormente tentarmos apagar uma tabela da qual existem dependências o SQL Server devolve um erro e a tabela não é apagada; Já a definição de CASCADE para a opção DELETE, permitirá a eliminação nas tabelas dependentes, das linhas afectadas pela eliminação da tabela principal © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 94 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Relações entre as tabelas (Chaves Estrangeiras) É possível definir relações entre as tabelas com recurso aos Database Diagrams através de um ambiente gráfico (através dos diagramas é possível testar novas estruturas para as tabelas, sem alterar a base de dados, criar novos índices, tabelas e relacionamentos através deles como referido) Devem adicionar-se as tabelas e estabelecer as relações: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Definição de Regras Limitam a gama de valores que o utilizador pode introduzir na coluna © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 95 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Definição de Regras Outros exemplos: DateEntered <= getDate(), limita o valor introduzido para uma data inferior à actual; LimiteCredito between 0 and 10000; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Modificar uma Tabela e Introduzir Valores Já depois de definida a estrutura da tabela é possível modificá-la: E introduzir valores através do item “Open Table” © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 96 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Definição de Índices Índice [index] é um mecanismo que acelera bastante o acesso aos dados. Consiste de uma estrutura de dados que contém ponteiros ordenados para os dados. O SQL Server usa índices automaticamente em várias situações para acelerar a pesquisa e actualização de dados, como por exemplo na definição de restrições [constraints] PRIMARY KEY; Índices aceleram a recuperação de linhas em consultas, mas também aumentam a velocidade de actualizações e exclusões. Tal ocorre porque o SQL Server deve encontrar uma linha, antes de poder actualizá-la ou eliminá-la; O optimizador é o componente do SQL Server que analisa as consultas SQL e decide quando vale a pena utilizar um índice ou não. Às vezes, mesmo quando um índice é definido, o optimizador resolve não utilizá-lo por determinar que ele não ajudaria no desempenho. Por exemplo, não vale a pena utilizar um índice que retorna uma percentagem muito grande de linhas, pois levaria mais tempo analisando o índice do que o tempo que ele economizaria filtrando os resultados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Definição de Índices O optimizador escolhe uma de duas alternativas ao fazer uma pesquisa: ou varre a tabela ou usa o índice. Decide o que fazer baseado em: Estimativa aproximada de quanto trabalho é necessário para usar o índice ou não. Essa estimativa é baseada em informações estatísticas sobre o índice, que dizem qual a distribuição dos dados. Uma vez que as informações podem ficar desactualizadas, é necessário corrigi-las, através da execução do comando UPDATE STATISTICS nome_da_tabela; Se uma tabela é muito pequena, ou se o optimizador espera que seja retornada uma grande percentagem de linhas, ele faz uma varredura; Se na cláusula WHERE da consulta estão presentes colunas indexadas, é bem provável que o optimizador resolva utilizar o índice. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 97 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Definição de Índices É possível definir um índice quando estamos a criar uma tabela: Carregar no item columns para definir quais as colunas que integram o índice: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Executar uma Query Botão direito do rato em cima da respectiva base de dados: Ou no menu: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 98 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Executar uma Query Depois de especificar a query SQL, resta apenas executá-la Base de Dados seleccionada Fazer um parse da query antes de a executar permite validar se a mesma está bem escrita Guardar resultados num ficheiro Comentários Os resultados na Grid: Query SQL Resultados em formato de texto Visualizar as mensagens © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Executar uma Query Determinadas queries (as mais simples) também podem ser feitas com recurso a um ambiente gráfico © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 99 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Produzir Estatísticas Sempre que se executar uma query é possível incluir estatísticas: Depois de executar a query é produzido conjuntamente com os resultados um painel com informações estatísticas: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Store Procedures Um store procedure é um conjunto de comandos SQL que são compilados e armazenados no servidor; A vantagem de usar procedimentos armazenados é que eles podem encapsular rotinas de uso frequente no próprio servidor, armazenadas na base de dados e disponíveis para todas as aplicações, em vez de codificado várias vezes em cada aplicação; Definir o store procedure: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 100 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Store Procedures Executar o Store Procedure: Preencher o campo value no caso do store procedure solicitar a introdução de valores (variável de entrada): O store procedure vai produzir resultados de acordo com o definido; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Efectuar Backups Um backup de uma base de dados é a operação de copiar os dados para um dispositivo de backup; Um dispositivo de backup pode ser um ficheiro ou por exemplo uma unidade de fita; Este procedimento pode ser feito a qualquer momento, sem ser necessário parar o SQL Server, no entanto deve ser feito num horário de baixa utilização uma vez que a operação provoca uma ligeira quebra de performance perceptível ao utilizador; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 101 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Efectuar Backups Para efectuar um backup é necessário o seguinte: Seleccionar o servidor ao qual pertence a base de dados de que se quer fazer backup; Botão direito do rato em cima de management – backup; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Efectuar Backups Deve-se especificar a localização física do ficheiro (para fitas por exemplo, \\.\TAPE0 e para ficheiros em disco bd.bak), um nome para o backup, um nome para a base de dados e o tipo de backup; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 102 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Efectuar Backups O backup pode ser de 3 tipos: Full Backup da base de dados inteira; Transaction Log Como o log de transações contém apenas as modificações feitas aos dados, se esse backup for restaurado, apenas essas modificações serão aplicadas sobre os dados. Um backup do log de transacções leva muito menos tempo para ser feito do que um backup de toda a base de dados. Assim, numa base de dados que é modificada diariamente, pode-se fazer diversos backups diários do log de transacções; Differential Esse tipo de backup é semelhante ao backup do log de transacções, com a diferença de que só fará backup dos valores modificados desde o último backup completo (de toda a base de dados) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Efectuar Backups Differential - continuação Ou seja, se uma informação foi modificada vinte vezes desde o último backup, um backup do log de transações teria as 20 modificações feitas nessa informação, enquanto que um backup diferencial teria apenas o último valor armazenado; Este tipo de backup gera ficheiros menores, apesar de demorar um pouco mais de tempo para ser realizado que o backup do log de transações. Por outro lado exige bem menos tempo para restauração. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 103 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Efectuar Backups Outra possibilidade é ir directamente pela base de dados em que se quer fazer backup: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Agendar um Backup Para iniciarmos uma execução programada é necessário que o SQL Server Agent esteja a correr. Para confirmarmos o estado do servidor basta ir ao Menu Start – Programs – Microsoft SQL Server 2005 – Configuration Tools – SQL Server Configuration Manager; De volta ao SQL Server Management Studio, deveremos expandir o item Management. Botão direito em cima do item – maintenance plan: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 104 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Agendar um Backup O próximo passo passa por arrastar o item BackUp Database Task para a área de trabalho; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Agendar um Backup Configurar a janela, especificando qual a base de dados que se quer fazer backup, se é para ir adicionando a um ficheiro já existente, etc… © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 105 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Restaurar a Base de Dados Para restaurar a base de dados: Botão direito em cima do item Databases – Restore Database; Especificar qual a base de dados a recuperar bem como o nome do ficheiro de backup: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Microsoft SQL Server 2005 Bases de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Bases de Dados Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Restaurar a Base de Dados Outra possibilidade é ir directamente pela base de dados que ser quer restaurar: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 106 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional e Linguagem SQL © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Sumário Sumário Álgebra Relacional Operações Binárias; Operações Unárias. Linguagem SQL Tipos de Linguagens; SQL Embebido VS APIs Definição de SQL; Comandos DDL e Comandos DML; Comandos SQL para administração de privilégios; Sinónimos; Store Procedures; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 107 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Operações Binárias e Unárias Consultas em bases de dados não são mais do que operações de álgebra relacional; Assim, tal como na álgebra tradicional, os operadores possuem determinadas propriedades; Sabemos que 2 * 3 = 3 * 2. Isto significa, que quando necessitamos utilizar uma expressão de álgebra relacional para chegar a um determinado resultado, podemos fazê-lo através de mais do que uma forma, pois várias expressões levam ao mesmo resultado; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Operações Binárias e Unárias No Modelo Relacional a informação é representada através de relações (ou tabelas). A Álgebra Relacional (concebida também por Codd) é um conjunto de operações formais que operam sobre relações. No essencial a álgebra relacional corresponde à álgebra de conjuntos, ou seja, é definida com base nos operadores: Binárias (operam sobre conjuntos) União Intersecção Diferença Divisão Produto Cartesiano Junção Unárias (operam apenas sobre um conjunto) Projecção Selecção © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 108 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias Divisão União Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção União R S A B C A B C a1 b1 c1 a1 b2 c3 a2 b2 c2 a2 b2 c2 a3 b3 c3 ∪) União (∪ A partir de duas relações iniciais, com esquemas compatíveis, resulta uma relação com o mesmo esquema e sem tuplos duplicados. Relações Compatíveis Mesmo grau (número de atributos) e atributos idênticos (i.e., tipos de dados compatíveis). R∪S= A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 a1 b2 c3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias Divisão União Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção União Cliente Empresa Empresa Morada Cidade Contacto Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda 960000001 Somos Ldª Rua dos Coxos Guarda 960000001 Vanguarda Rua dos Sábios Guarda 960000002 Castelo Rua do Castelo Évora 960000005 Nabeiro SA Rua de Aviz Tomar 960000003 Nabeiro SA Rua de Aviz Tomar 960000003 Serra e Sol Ldª Rua dos Mestres Covilhã 960000004 Empresa ∪ Cliente = SELECT * FROM Empresa UNION SELECT * FROM Cliente; Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda 960000001 960000002 Vanguarda Rua dos Sábios Guarda Nabeiro SA Rua de Aviz Tomar 960000003 Serra e Sol Ldª Rua dos Mestres Covilhã 960000004 Castelo Rua do Castelo Évora 960000005 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 109 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Intersecção R S A B C A B C a1 b1 c1 a1 b2 c3 a2 b2 c2 a2 b2 c2 a3 b3 c3 Intersecção (∩) A partir de duas relações iniciais, com esquemas compatíveis, resulta uma relação com o mesmo esquema e cujos tuplos existem nas relações iniciais. R∩S= A B C a2 b2 c2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Intersecção Cliente Empresa Empresa Morada Cidade Contacto Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda 960000001 Somos Ldª Rua dos Coxos Guarda 960000001 Vanguarda Rua dos Sábios Guarda 960000002 Castelo Rua do Castelo Évora 960000005 Nabeiro SA Rua de Aviz Tomar 960000003 Nabeiro SA Rua de Aviz Tomar 960000003 Serra e Sol Ldª Rua dos Mestres Covilhã 960000004 Empresa ∩ Cliente = SELECT * FROM Empresa INTERSECT SELECT * FROM Cliente; Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda 960000001 Nabeiro SA Rua de Aviz Tomar 960000003 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 110 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Diferença R S A B C A B C a1 b1 c1 a1 b2 c3 a2 b2 c2 a2 b2 c2 a3 b3 c3 Diferença (-) A partir de duas relações iniciais, com esquemas compatíveis, resulta uma relação com o mesmo esquema com os tuplos das primeira relação que não estejam presentes na segunda relação. R-S= A B C a1 b1 c1 a3 b3 c3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Diferença Cliente Empresa Empresa Morada Cidade Contacto Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda 960000001 Somos Ldª Rua dos Coxos Guarda 960000001 Vanguarda Rua dos Sábios Guarda 960000002 Castelo Rua do Castelo Évora 960000005 Nabeiro SA Rua de Aviz Tomar 960000003 Nabeiro SA Rua de Aviz Tomar 960000003 Serra e Sol Ldª Rua dos Mestres Covilhã 960000004 Em ORACLE: SELECT * FROM Empresa MINUS SELECT * FROM Cliente; Em Sql Server: Empresa - Cliente = Empresa Morada Cidade Contacto Vanguarda Rua dos Sábios Guarda 960000002 Serra e Sol Ldª Rua dos Mestres Covilhã 960000004 SELECT * FROM Empresa EXCEPT SELECT * FROM Cliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 111 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Divisão R Divisão (÷) S A B B a1 b1 b1 a2 b2 a3 b1 A divisão de uma relação R por uma relação S produz o quociente das duas relações. O quociente: Só contém os atributos de R que não fazem parte de S; Os atributos que vão ser examinados correspondem à intersecção das duas relações; São procurados os conjuntos de registos em R que tem atributos cujos valores são iguais a todos os que aparecem em S. R÷S A a1 a3 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Divisão A operação de divisão é útil para por exemplo, obter todos os nomes de professores que dão aulas a todas as disciplinas que o Ricardo lecciona Disciplinas Professores Disciplinas Ricardo NomeProf NomeDisciplina NomeDisciplina Ricardo Bases de Dados Bases de Dados Bases de Dados Hugo Bases de Dados Segurança em Redes Informáticas Segurança em Redes Informáticas Ricardo Segurança em Redes Informáticas Matemática e Estatística Paulo Matemática e Estatística Hugo Segurança em Redes Informáticas Célia Bases de Dados Célia Matemática e Estatística NomeDisciplina Nome Professores ÷ Disciplinas Ricardo: Ricardo Hugo select nomeprof from Professores p, Disciplinas Ricardo d where p.NomeDisciplina = d.NomeDisciplina group by nomeprof having count(*) > 1 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 112 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Produto Cartesiano R T A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d2 e2 a3 b3 c3 Produto Cartesiano (-) O esquema resultante é a “soma” das tabelas base, através da combinação das duas relações. RxT= A B C D E a1 b1 c1 d1 e1 a2 b2 c2 d1 e1 a3 b3 c3 d1 e1 a1 b1 c1 d2 e2 a2 b2 c2 d2 e2 a3 b3 c3 d2 e2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Produto Cartesiano Factura Cliente codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1025 Av. De Tóquio 910000001 1025 321 Cliente x Factura = SELECT * FROM Cliente, Factura; codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1022 Dias da Silva 910000000 1025 321 1025 Av. De Tóquio 910000001 1022 101 1025 Av. De Tóquio 910000001 1025 321 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 113 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Álgebra Relacional Linguagem SQL Operações Unárias Projecção Selecção Junção ou Join R T A B C A E a1 b1 c1 a1 e1 a2 b2 c2 a2 e2 a3 b3 c3 a1 e3 a4 b4 c4 ∞) Junção ou Join (∞ Combinação de tuplos de duas relações que partilhem um atributo comum. As combinações de tuplos resultantes partilham os mesmos valores nos atributos de junção. R∞T = A B C A E a1 b1 c1 a1 e1 a1 b1 c1 a1 e3 a2 b2 c2 a2 e2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Junção ou Join Factura Cliente codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1023 Praça da Monarquia 910000002 1023 102 1024 Rua do Sofá 910000004 1022 103 1025 Av. De Tóquio 910000001 Cliente ∞ Factura = SELECT * FROM Cliente, Factura WHERE codCliente = ID_Cliente; codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1022 Dias da Silva 910000000 1022 103 1023 Praça da Monarquia 910000002 1023 102 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 114 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Projecção R A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 Projecção (π) Operador que a partir de uma lista de atributos, cria uma nova relação cujo esquema é um sub-esquema da relação original. Se na relação resultante surgirem tuplos duplicados, estes serão removidos. Projecção B C Nas implementações em SQL, a remoção de tuplos duplicados é feita com recurso ao operador DISTINCT b1 c1 b2 c2 b3 c3 πB,C(R) = © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Projecção Factura codFactura CodCliente Data codEmpregado Valor 112233 1024 05/05/2007 123 135000€ 112234 4319 05/05/2007 451 98000€ 112235 2055 05/07/2007 451 244000€ Projecção 1 CodCliente SELECT codCliente 1024 FROM Factura; 4319 2055 Projecção 2 CodCliente Valor SELECT codCliente, Valor 1024 135000€ FROM Factura; 4319 98000€ 2055 244000€ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 115 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Selecção R A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 Selecção (σ) Operador que actua sobre uma relação e que, através de uma condição lógica, filtra tuplos existentes na relação, mantendo o seu esquema. σA ∈ {a1,a2}(R) = A B C a1 b1 c1 a2 b2 c2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Operações Binárias União Divisão Intersecção Produto Cartesiano Junção Diferença Operações Unárias Projecção Selecção Selecção Factura codFactura CodCliente Data codEmpregado Valor 112233 1024 05/05/2007 123 135000€ 112234 4319 05/05/2007 451 98000€ 112235 2055 05/07/2007 451 244000€ Selecção e Restrição SELECT codCliente CodCliente FROM Factura 1024 WHERE Valor > 100000 2055 Restrição SELECT * codFactura CodCliente Data codEmpregado Valor FROM Factura 112233 1024 05/05/2007 123 135000€ WHERE Valor > 100000 112235 2055 05/07/2007 451 244000€ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 116 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Linguagens Procedimentais vs Declarativas Duas classes de linguagens: Procedimental: o utilizador especifica quais os dados que pretende e como obtê-los; O PL/SQL é a linguagem procedimental mais utilizada e apresenta facilidades acrescidas na manipulação de dados; Declarativa: o utilizador especifica quais os dados que pretende sem especificar a maneira como os vai obter, ou seja, enquanto as linguagens de procedimentos acedem directamente às estruturas de informação armazenadas em discos, as linguagens declarativas limitam-se a comunicar com o SGBD, sendo que este se encarrega então de executar o código necessário para essa tarefa. A SQL (Structured Query Language) é a linguagem de consulta mais utilizada, que especifica a forma do resultado e não o caminho para chegar a ele; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Linguagens Procedimentais vs Declarativas Procedimental "Para cada um dos vendedores, da tabela vendedores, com mais de 10 anos de casa, determine na tabela de vendas todas as vendas destes vendedores. A união de todas estas vendas será o resultado final do problema." Declarativa “Quero saber todas as vendas feitas por vendedores com mais de 10 anos de casa." © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 117 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido vs APIs SQL foi criada em 1986 (revista em 1989 e 1992); Ao contrário das linguagens de procedimentos, a linguagem SQL é uma linguagem declarativa. O programador, em vez de indicar os passos que devem ser executados para realizar uma tarefa, indica o objectivo que pretende atingir. As aplicações geralmente acedem a bases de dados por intermédio de: Extensões às linguagens (Pascal, C, Fortran, Cobol, etc…) permitindo SQL embebido; APIs (explo: ODBC/JDBC) que possibilitam o envio de consultas SQL para a base de dados. As APIs introduzem uma camada de abstracção entre as aplicações e os SGBDs. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL Embebido Um pré-processador converte as declarações SQL em APIs; Depois um compilador é usado para compilar o código. Comandos Conexões à base de dados EXEC SQL CONNECT Declarações de variáveis EXEC SQL BEGIN (END) DECLARE SECTION Declarações EXEC SQL Statement; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 118 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures APIs (Application Program Interface) As APIs são uma alternativa ao SQL embebido; Em vez de modificar o compilador é adicionada uma biblioteca com chamadas à base de dados (API); O Driver aceita as chamadas API e traduze-las para código especifico do SGBD; Tal permite uma abstracção entre as aplicações e os SGBDs (neutrais), ou seja, o driver utilizado varia de acordo com o SGBD definido; ODBC (Open Database Connectivity) DB 2 JDBC ODBC Aplicação JDBC Sybase SQL ORACLE © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures APIs - ODBC ODBC (Open Database Connectivity) É um API standard utilizado para comunicar com o servidor de bases de dados; Abre uma conexão com a base de dados; Envia queries; Devolve resultados. As bases de dados que suportam ODBC disponibilizam um driver para estabelecer comunicação com o programa cliente. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 119 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures APIs - JDBC JDBC: Java API (classes e interfaces em java.sql package). Aplicação (inicia e termina conexões, submete declarações SQL e devolve resultados, tudo através da API JDBC); Driver Manager (carrega o driver JDBC); Driver (conecta à data source, transmite pedidos e devolve os resultados); Data Source (processa, vindas do Driver, as declarações SQL e devolve os resultados). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Duas vertentes da Linguagem SQL Ao contrário das linguagens de procedimentos, a linguagem SQL é uma linguagem declarativa. O programador, em vez de indicar os passos que devem ser executados para realizar uma tarefa, indica o objectivo que pretende atingir. A linguagem SQL tem duas vertentes: DDL (Data Definition Language) O SQL possui um conjunto de comandos para criação e alteração da estrutura da base de dados (tabelas, chaves estrangeiras, regras de integridade referencial e views); A compilação dos comandos em DDL é armazenada no dicionário de dados (que guarda dados sobre dados metadados). O compilador de DDL gera um conjunto de tabelas: create table account( account-number char(10), balance integer); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 120 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Duas vertentes da Linguagem SQL DML (Data Manipulation Language) A vertente DML é uma implementação da Álgebra Relacional que permite aceder (efectuar interrogações) e manipular (alterar, anular ou inserir registos em tabelas) os dados. Explo: encontrar o nome do cliente com codCliente = 7 select cliente.nome from cliente where cliente.codCliente= ‘7’ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Comandos DDL CREATE TABLE DROP TABLE ALTER TABLE © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 121 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE O comando CREATE TABLE permite ao utilizador criar uma nova tabela. Para cada atributo da tabela é definido um nome, um tipo e algumas restrições: CREATE TABLE <nome_tabela> (<nome_coluna1> <tipo_coluna1> <NOT NULL>, <nome_coluna2> <tipo_coluna2> <NOT NULL>, <nome_colunan> <tipo_colunan> <NOT NULL>); CREATE TABLE empregados (nome char(30) NOT NULL, NIF integer NOT NULL, salario decimal(7,2) NOT NULL); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE As constraints (restrições) são regras a que os valores de uma ou mais colunas devem obedecer e que podem ser especificadas conjuntamente como comando create table NOT NULL A constraint NOT NULL é a restrição de uso mais generalizado, pois impede a introdução de valores nulos na coluna; CREATE TABLE teste (Id Integer NOT NULL, Nome char(60) NOT NULL); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 122 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE CHECK A constraint CHECK() permite realizar a validação dos dados introduzidos na coluna, através da especificação de uma condição. CREATE TABLE teste (Id Integer NOT NULL, Nome char(60) NOT NULL CHECK (Nome NOT LIKE ‘%Regina%’), Idade Integer NOT NULL CHECK (Idade BETWEEN 0 and 150), Sexo char NOT NULL CHECK (Sexo IN (‘M’, ‘F’)), Data_nasc Datetime, Data_adm Datetime, CHECK (Data_adm > Data_nasc)); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE UNIQUE A constraint UNIQUE permite indicar que os valores dessa coluna não se podem repetir. Para garantir isso os SGBDs criam sobre cada uma das colunas UNIQUE, um índice único; CREATE TABLE teste (Id Integer PRIMARY KEY, Nome char(60) UNIQUE, Telefone CHAR(15), BI Integer UNIQUE); Ou CREATE TABLE teste (Id Integer PRIMARY KEY, Nome char(60), Telefone CHAR(15), BI Integer, UNIQUE (nome, BI)); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 123 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE PRIMARY KEY A constraint PRIMARY KEY (utilizada para indicar a chave primária de uma tabela) é equivalente às cláusulas NOT NULL + UNIQUE juntas, ie, o conteúdo da(s) colunas(s) não pode ser nulo e não pode admitir repetições; Numa tabela apenas pode existir uma PRIMARY KEY, enquanto podem existir várias ocorrências da cláusula UNIQUE CREATE TABLE teste (Id Integer PRIMARY KEY, Nome char(60) UNIQUE, Telefone CHAR(15), Se a chave primária for constituída por vários campos: CREATE TABLE teste (Id Integer BI Integer UNIQUE); NOT NULL, Nome char(60) NOT NULL, Telefone CHAR(15), BI Integer NULL, PRIMARY KEY (id, nome)); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE REFERENCES A constraint REFERENCES permite fazer a validação das chaves estrangeiras, ie, não se podem introduzir nos campos referenciados como chave estrangeira, valores que não existam na tabela onde os campos são chave primária; CREATE TABLE pessoa ( ID NUMERIC PRIMARY KEY, Nome CHAR(30) NOT NULL, Idade Integer NOT NULL Salario NUMERIC(10,2) CHECK (idade BETWEEN 0 and 150), NOT NULL CHECK (salario > 0), Telefone CHAR(12) NULL, Qualquer valor introduzido na coluna cod_postal da tabela Pessoa será validado na coluna Codigo da tabela Postal cod_postal NUMERIC(4) REFERENCES postal(codigo)); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 124 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE TABLE Criação de uma tabela a partir de outra tabela: SELECT nome, numEleitor into amostra FROM eleitor WHERE numEleitor <= 2000; É possível criar também tabelas temporárias as quais são eliminadas uma vez terminada a sessão onde foram criadas; Existem tabelas temporárias locais e globais. As locais (coloca-se um # antes do nome da tabela) apenas podem ser vistas na sessão onde foram criadas e as globais (coloca-se um ## antes do nome da tabela) podem ser vistas a partir de qualquer sessão: SELECT column_name, ..., column_name INTO #tabTemporária FROM tabPermanente WHERE... SELECT * FROM #tabPermanente © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures DROP TABLE O comando DROP TABLE permite a exclusão de uma tabela DROP TABLE <nome_tabela>; DROP TABLE empregados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 125 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures ALTER TABLE O comando ALTER TABLE permite que o utilizador faça a inclusão de novos atributos numa tabela. A restrição NOT NULL não é permitida. Assim que se insere um novo atributo na tabela, o valor para o mesmo em todas as linhas será NULL ALTER TABLE <nome_tabela> add <nome_coluna> <tipo_coluna> drop column <nome_coluna>; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE INDEX Existem 3 formas possíveis de criar índices: Com a instrução CREATE INDEX; Aquando da criação da tabela através da instrução CREATE TABLE e da cláusula CONSTRAINT; Com a instrução ALTER TABLE usando a cláusula ADD CONSTRAINT; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 126 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE INDEX A sintaxe da instrução CREATE INDEX é a seguinte: CREATE [UNIQUE] INDEX indice On tabela (campo1 [ASC|DESC], campo2 [ASC|DESC]) [WITH {PRIMARY | DISALLOW NULL| IGNORE NULL}] Índice corresponde ao nome do índice a ser criado; Campo1, campo2 representam o nome dos campos sobre os quais vai ser construído o índice; UNIQUE não permite que o índice tenha valores duplicados; DESC ou ASC permitem criar índices por ardem descendente ou ascendente respectivamente; WITH define algumas regras de validação dos dados do índice: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE INDEX Com a opção PRIMARY o campo (ou campos) envolvido é designado como PRIMARY KEY: Considere-se a seguinte tabela: Clientes (codCliente, nome, morada, numContribuinte) CREATE INDEX IndiceChavePrimaria ON CLIENTES ([codCliente]) WITH PRIMARY; Com a opção DISALLOW NULL não é permitido que, na criação de novos registos, o campo (ou campos) indexado contenha valores nulos. CREATE UNIQUE INDEX Contribuinte ON CLIENTES ([numContribuinte]) WITH DISALLOW NULL; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 127 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures VIEWS O que é uma vista? Janela através da qual os dados podem ser vistos ou alterados; Uma vista deriva de outra tabela (ou vista); Uma vista é uma tabela virtual i.e., não tem existência física embora apareça ao utilizador como se o tivesse; Uma vista não é mais do que um comando SELECT Uma vista não possui dados próprios; os dados são manipulados na tabela base subjacente; Note-se que o resultado de uma execução de uma view (os registos que ela devolve) depende dos registos armazenados no momento nas tabelas de suporte à view. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures VIEWS Utilidades Restringir o acesso à base de dados mostrando apenas parte dos dados; Simplificar a consulta dos dados, substituindo consultas complexas envolvendo várias tabelas por consultas simples sobre a vista; Permitir que os mesmos dados sejam visualizados de diferentes maneiras por diferentes utilizadores. Tipos de Vistas Vistas simples Derivam de uma só tabela e não contém funções nem grupos de dados; Vistas complexas Derivam de várias tabelas e contém funções nem grupos de dados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 128 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE VIEW As views não podem conter a cláusula ORDER BY e apenas permitem a inserção, remoção e alteração de registos caso não contenham as cláusulas GROUP BY e UNION. CREATE VIEW Clientes_Lisboa (BI, Nome) AS Select BI, Nome FROM Cliente Where Localidade = 'Lisboa' WITH CHECK OPTION; CREATE VIEW DistNotas (Disciplina, Minimo, Maxima, Media) AS SELECT D.NOME, MIN(NOTA), MAX(NOTA), AVG(NOTA) FROM DISCIPLINA D, AD WHERE D.CODIGO = AD.CODIGO GROUP BY NOME; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE DATABASE LINKS CREATE DATABASE LINKS Ligação remota a uma base de dados. Equivalência ao modelo de base de dados distribuída de forma explícita (links disponíveis em USER_DB_LINKS USER_DB_LINKS). CREATE [PUBLIC] DATABASE LINK <nome> CONNECT TO <utilizador> IDENTIFIED BY <password> USING <servico> create database link lx connect to vendedor_1 identified by vende using oravendas_dblx; desc vendas@lx; select * from vendas@lx; create synomym vendas_lisboa for vendas@lx; drop database link lx; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 129 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures CREATE SNAPSHOT CREATE SNAPSHOT Cópia integral ou parcial de tabela remota; USER_SNAPSHOTS, USER_REGISTED_SNAPSHOTS, USER_SNAPSHOTS_LOGS e USER_SNAPSHOTS_REFRESH_TIME. CREATE SNAPSHOT <nome> [ REFRESH [ FAST | COMPLETE | FORCE ] [ START WITH <data>][ NEXT <expr_data>] [ WIDTH { PRIMARY KEY | ROWID } ] ] as <query>; create snapshot clientes_lx as select * from clientes@lx; create snapshot vendas_lx refresh complete start with to_date(‘2004-01-01’,’YYYY-MM-DD’) next to_date(‘2004-01-01’,’YYYY-MM-DD’) + 15 WITH ROWID as select * from vendas@lx; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Comandos DML SELECT UPDATE DELETE INSERT © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 130 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SELECT Um comando SQL típico para selecção de linhas obedece à seguinte estrutura (em que a cláusula SELECT corresponde à projecção, a cláusula FROM ao produto cartesiano e a cláusula WHERE à selecção): SELECT campos a seleccionar FROM tabelas onde constam os campos indicados em Select WHERE expressão lógica que indica quais as linhas que pretendemos seleccionar ORDER BY campo pelo qual a listagem virá ordenada; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SELECT Lista o nome e morada de uma tabela de clientes, mas apenas os clientes cujo saldo é superior a 2500€ (ordenado por nome): SELECT nome, morada FROM cliente WHERE cliente.saldo > 2500 ORDER BY nome; Order by Caso se indique a ordenação do resultado de um select por mais do que uma coluna, a ordenação é feita pela 1.ª coluna e entre valores iguais é ordenada pela 2.ª coluna Devolve duas colunas em que a segunda corresponde ao produto das colunas quantidade e preço: SELECT Produto, Quantidade * Preço FROM Item; Podem ser atribuídos aliases às colunas. Por exemplo o comando anterior se escrito da seguinte forma, permite dar um nome – Total - à segunda coluna devolvida: SELECT Produto, Quantidade * Preço AS Total FROM Item; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 131 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SELECT Visualizar todos os campos de uma tabela: SELECT * FROM Item; Eliminar duplicados na listagem obtida, utiliza-se a cláusula DISTINCT (elimina linhas duplicadas): SELECT DISTINCT CodPostal FROM Cliente; (devolve os códigos postais existentes) Caso se pretenda listar dois atributos com o mesmo nome (correspondentes a duas tabelas referidas na cláusula FROM) é necessário preceder o nome do campo pelo nome da tabela de onde ele é originário: SELECT cliente.nome, empregado.nome FROM cliente, empregado; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SELECT Visualizar algumas linhas de uma tabela: SELECT TOP 3 * FROM Item; Armazenar o resultado em variáveis (quando o comando devolve apenas uma linha) SELECT Max(Quantidade) AS Maximo FROM ITEM; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 132 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures FROM Na cláusula FROM indicam-se os nomes das tabelas envolvidas na interrogação, separadas por vírgulas. Quando existe mais que uma tabela o SQL executa automaticamente um produto cartesiano entre as tabelas. Por exemplo, o seguinte comando executa um produto cartesiano entre as tabelas Cliente e Localidade, devolvendo todos os campos (das duas tabelas): SELECT * FROM Cliente, Localidade; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures FROM À semelhança dos sinónimos dos atributos, é possível atribuir aliases às tabelas (os sinónimos nas tabelas são relevantes nas subquerys): SELECT * FROM Cliente AS Cliente_Empresa; Existe uma tabela de sistema que apenas contém uma linha denominada DUMMY / DUAL. Ela pode ser utilizada quando pretendemos listar uma expressão que não é obtida a partir de nenhuma tabela. SELECT COS(1) FROM DUMMY; (Devolve o cosseno de 1) SELECT ‘Olá Mundo!!’ FROM dual; SELECT 1+1 FROM dual; SELECT LOWER(‘MaisUsCULAS’) FROM dual; No SQL Server não é necessário especificar o nome da tabela; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 133 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures WHERE WHERE Na cláusula WHERE pode constar qualquer expressão lógica. A expressão é avaliada linha a linha, isto é, para cada linha o SQL avalia o valor da expressão, caso seja verdadeira devolve a linha. Os principais operadores utilizados na cláusula WHERE são: =, <, >, >=, <=, <>, AND, OR, NOT, IN, LIKE, BETWEEN e ISNULL. O operador IN é verdadeiro quando um elemento faz parte de um conjunto. O operador ISNULL permite lidar com valores NULL. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures WHERE Alguns exemplos: SELECT * FROM Cliente WHERE CodPostal > 1000 AND CodPostal < 2000; SELECT * FROM Cliente WHERE (CodPostal > 1000 AND CodPostal < 2000) OR CodPostal = 3000; SELECT * FROM CLIENTE WHERE CodPostal BETWEEN 1000 and 2000; SELECT * FROM CLIENTE WHERE Nome LIKE ‘R%’ (todos os clientes começados por R) SELECT * FROM Cliente WHERE Nacionalidade IN (‘Portuguesa’, ‘Brasileira’); (todos os clientes portugueses ou brasileiros) SELECT * FROM Cliente WHERE Nacionalidade NOT IN (‘Portuguesa’, ‘Brasileira’); (todos os clientes excepto os portugueses e brasileiros) SELECT * FROM Cliente WHERE Nacionalidade IS NOT NULL; (todos os clientes com nacionalidade conhecida) SELECT * FROM Cliente, CódigoPostal WHERE Cliente.CodPostal = CódigoPostal.CodPostal; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 134 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas O Join (ligação) entre Tabelas permite extrair, num único SELECT, informação contida em diferentes tabelas; A junção entre tabelas faz-se colocando na cláusula FROM o conjunto das tabelas que se pretende juntar; Equi-Join; Produto Cartesiano (Cross Join); Left Join; Right Join; Self Join; Union Union ALL; Intersect; Minus / Except; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas Equi-Join Estamos perante um Equi-Join quando todas as colunas das tabelas são apresentadas e a ligação entre as tabelas é feita através de uma igualdade (duas colunas de conteúdos exactamente iguais) Factura Cliente codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1025 Av. De Tóquio 910000001 1025 321 SELECT * FROM Cliente, Factura WHERE codCliente = ID_Cliente; Cliente EquiEqui-Join Factura = codCliente Morada Contacto ID_Cliente 1022 Dias da Silva 910000000 1022 101 1025 Av. De Tóquio 910000001 1025 321 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Factura Bases de Dados 135 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL Junção de tabelas No Equi-Join, o conteúdo das colunas codCliente e ID_Cliente é exactamente igual, devido à condição de junção colocada no SELECT: codCliente = ID_Cliente. Não faz no entanto muito sentido que na junção das tabelas se obtenham duas colunas com a mesma informação Por isso, quando se faz a junção das tabelas, é comum seleccionar as colunas sem que exista repetição de dados: SELECT Cliente.*, Factura FROM Cliente, Factura WHERE codCliente = ID_Cliente; O Inner Join corresponde a uma outra designação para o tipo de Join habitual em que se juntam tabelas, ligando-as através da Chave Primária de uma e da Chave Estrangeira da outra; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL Junção de tabelas Produto Cartesiano A junção de duas ou mais colunas faz-se através das chaves estrangeiras na cláusula Where. Caso não se faça a junção, o resultado é o produto cartesiano das duas tabelas, associando a cada linha da tabela Cliente o conjunto das linhas da tabela Factura; O número total de registos que resulta do SELECT anterior é igual a 2 * 2 = 4 Cliente SELECT * codCliente Morada Contacto 1022 Dias da Silva 910000000 1025 Av. De Tóquio 910000001 Factura ID_Cliente Factura 1022 101 1025 321 FROM Cliente, Factura; Cliente x Factura = codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1022 Dias da Silva 910000000 1025 321 1025 Av. De Tóquio 910000001 1022 101 1025 Av. De Tóquio 910000001 1025 321 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 136 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Tipos de Linguagens Álgebra Relacional Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL Linguagem SQL Junção de tabelas Outer Join Num Inner Join apenas são apresentados os registos em que exista ligação entre as tabelas; O papel do Outer Join é estender este conceito, permitindo que a totalidade das linhas de uma tabela seja obtida, ainda que não exista o correspondente valor na outra tabela a que está ligada pela junção O Outer Join pode ser realizado à esquerda ou à direita; Considerem-se as seguintes tabelas: Factura Cliente codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1025 Av. De Tóquio 910000001 1025 321 2099 Bairro do Amor 910000002 1030 900 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Tipos de Linguagens Álgebra Relacional SQL embebido VS APIs Definição de SQL Comandos DDL Linguagem SQL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas Left Join É seleccionado todo o conteúdo da tabela da esquerda e respectiva ligação à tabela da direita; SELECT * FROM Cliente LEFT JOIN Factura ON codCliente = ID_Cliente; Cliente RIGHT Join Factura = codCliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva 910000000 1022 101 1025 Av. De Tóquio 910000001 1025 321 2099 Bairro do Amor 910000002 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 137 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Tipos de Linguagens Álgebra Relacional Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL Linguagem SQL Junção de tabelas Right Join É seleccionado todo o conteúdo da tabela da direita e respectiva ligação à tabela da esquerda; SELECT * FROM Cliente RIGHT JOIN Factura ON codCliente = ID_Cliente; Cliente Right Join Factura = codCliente Morada Contacto ID_Cliente 1022 Dias da Silva 910000000 1022 Factura 101 1025 Av. De Tóquio 910000001 1025 321 1030 900 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL Junção de tabelas Vivem AS tx x Vivem AS ty = Self Join Variante do Inner Join em que se comparam duas colunas da mesma tabela Determinar pessoas que vivem na mesma cidade: Vivem Nome António Cidade Lisboa João Porto Pedro Coimbra Zé Lisboa Rui Coimbra SELECT tx.nome, ty,nome Tx.Nome Tx.Cidade Ty.nome Ty.cidade António Lisboa António Lisboa António Lisboa João Porto António Lisboa Pedro Coimbra António Lisboa Zé Lisboa António Lisboa Rui Coimbra João Porto António Lisboa João Porto João Porto João Porto Pedro Coimbra João Porto Zé Lisboa João Porto Rui Coimbra …….. …….. …….. …….. Rui Coimbra António Lisboa WHERE Tx.Cidade = Ty.Cidade Rui Coimbra João Porto Group by tx.nome Rui Coimbra Pedro Coimbra Having count(*) > 1 Rui Coimbra Zé Lisboa Rui Coimbra Rui Coimbra FROM Vivem AS Tx, Vivem As Ty © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 138 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL Junção de tabelas Tx.Nome Tx.Cidade Ty.nome Ty.cidade António Lisboa António Lisboa António Lisboa João Porto António Lisboa Pedro Coimbra António Lisboa Zé Lisboa António Lisboa Rui Coimbra João Porto António Lisboa João Porto João Porto Tx.Nome Tx.Cidade Ty.nome João Porto Pedro Coimbra António Lisboa António Lisboa João Porto Zé Lisboa António Lisboa Zé Lisboa SELECT tx.nomea, ty,nome FROM Vivem AS Tx, Vivem As Ty WHERE Tx.Cidade = Ty.Cidade Ty.cidade João Porto Rui Coimbra Pedro Coimbra Pedro Coimbra …….. …….. …….. …….. Pedro Coimbra Rui Coimbra Rui Coimbra António Lisboa Zé Lisboa António Lisboa Rui Coimbra João Porto Zé Lisboa Zé Lisboa Rui Coimbra Pedro Coimbra Rui Coimnra Pedro Coimbra Rui Coimbra Zé Lisboa Rui Coimnra Rui Coimnra Rui Coimbra Rui Coimbra © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas Tx.Nome Tx.Cidade Ty.nome António Lisboa António Ty.cidade Lisboa António Lisboa Zé Lisboa Pedro Coimbra Pedro Coimbra Pedro Coimbra Rui Coimbra Zé Lisboa António Lisboa Zé Lisboa Zé Lisboa Rui Coimnra Pedro Coimbra Rui Coimnra Rui Coimnra SELECT tx.nome, ty,nome FROM Vivem AS Tx, Vivem As Ty WHERE Tx.Cidade = Ty.Cidade Tx.Nome Ty.nome António António António Zé Pedro Pedro Pedro Rui Zé António Zé Zé Rui Pedro Rui Rui Tx.Nome SELECT distinct tx.nome FROM Vivem AS Tx, Vivem As Ty WHERE Tx.Cidade = Ty.Cidade Group by tx.nome António Pedro Zé Rui Having count(*) > 1 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 139 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas UNION A União não é propriamente uma ligação entre tabelas. A Union permite juntar o conteúdo de múltiplos comandos SELECT Numa Union, o nome das colunas apresentado no resultado é o nome das colunas seleccionadas na primeira instrução SELECT; Cada SELECT pode conter a sua própria cláusula WHERE, no entanto só poderá existir uma única cláusula ORDEY BY (no último SELECT), sendo a ordenação aplicada a todo o resultado; Devolve os nomes dos clientes e fornecedores: SELECT Nome FROM Cliente UNION SELECT Nome FROM Fornecedor; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas UNION ALL Por defeito uma UNION remove sempre linhas duplicadas; Se em vez de Union, utilizarmos o operador UNION ALL, os duplicados não são retirados da selecção; Caso não pretendamos eliminar nomes duplicados: SELECT Nome FROM Cliente UNION ALL SELECT Nome FROM Fornecedor; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 140 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Junção de tabelas INTERSECT A intersecção de dois conjuntos é o resultado dos objectos que existem no conjunto A e no conjunto B: Devolve os nomes dos clientes que também são fornecedores: SELECT Nome FROM Cliente INTERSECT SELECT Nome FROM Fornecedor; MINUS / EXCEPT O operador Except (correspondente à operação Diferença da álgebra relacional) devolve os registos que resultam do primeiro SELECT e que não aparecem no segundo; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures GROUP BY e HAVING Recorrendo apenas às cláusulas anteriores não é possível, por exemplo, efectuar certas operações estatísticas (somatórios, médias, etc.). Tal acontece porque as operações de agregação (que envolvem vários registos) não poderem ser calculadas linha a linha. Por exemplo, o comando para listar os códigos postais associados a mais do que dois clientes não pode ser efectuado tal como de seguida se apresenta: SELECT CodPostal FROM Cliente WHERE COUNT(CodPostal) > 2 O comando é incorrecto porque a cláusula WHERE é testada linha a linha e, numa linha não é possível obter o total de códigos postais. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 141 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures GROUP BY e HAVING As cláusulas GROUP BY e HAVING permitem manipular valores agregados. A cláusula GROUP BY permite a definição de grupos que irão ser tratados com as funções de agregação; Group by Se um comando SELECT contiver a cláusula GROUP BY, então todas as colunas seleccionadas no SELECT têm que estar presentes na cláusula Group by A cláusula HAVING é equivalente à cláusula WHERE só que o seu argumento são expressões lógicas relativas aos agrupamentos criados pela cláusula GROUP BY. Utiliza-se a cláusula WHERE sempre que se pretendem restringir os registos a considerar na selecção. A cláusula HAVING serve para restringir os grupos que foram formados depois de aplicada a restrição da cláusula WHERE (na qual não se podem utilizar funções de agregação); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures GROUP BY e HAVING A cláusula GROUP BY agrupa os clientes por código postal e a cláusula HAVING selecciona os grupos cujo número de elementos é superior a dois: SELECT CodPostal FROM Cliente GROUP BY CodPostal HAVING COUNT(CodPostal) > 2; em contraponto com: SELECT CodPostal FROM Cliente WHERE COUNT(CodPostal) > 2 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 142 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures SQL embebido VS APIs Definição de SQL Comandos DDL GROUP BY e HAVING O seguinte comando lista, para cada código postal, o número de clientes que a ele estão associados (desde que exista mais do que um cliente): SELECT CodPostal, COUNT(CodPostal) FROM Cliente GROUP BY CodPostal HAVING COUNT(CodPostal) > 1; CodPostal = 1500 (Total:2) Cliente Número Nome CodPostal 001 João 1500 Número Nome CodPostal Nova tabela temporária 001 João 1500 CodPostal COUNT(CodPostal) 056 Luis 1500 1500 2 2100 2 1300 1 CodPostal = 2100 (Total:2) 013 Ana 2100 Número Nome CodPostal 056 Luis 1500 013 Ana 2100 001 Paula 2100 001 Paula 2100 011 Nuno 1300 CodPostal = 1300 (Total:1) Número Nome CodPostal 011 Nuno 1300 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Resultado Final CodPostal COUNT(CodPostal) 1500 2 2100 2 Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Agregação As funções de agregação retornam resultados (um número) após a efectivação de cálculos baseados em múltiplas linhas. Basicamente combina múltiplas linhas num só número; Nome AVG Count MAX MIN SUM Descrição Média de um grupo de valores Conta o número total de linhas de um dado conjunto Retorna o valor máximo de uma coluna Retorna o valor mínimo de uma coluna Faz a soma dos valores de uma dada coluna © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 143 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Agregação Retorna o total de registos de clientes: SELECT COUNT(*) FROM Cliente; Devolve o total de clientes com o código postal conhecido: SELECT COUNT(CodPostal) FROM Cliente; O segundo comando é equivalente ao seguinte: SELECT COUNT(*) FROM Cliente WHERE CodPostal IS NOT NULL; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Agregação O comando que de seguida se apresenta retorna o maior bilhete de identidade existente: SELECT MAX(Bi) FROM Cliente; Caso pretendêssemos visualizar o nome desse cliente, não poderíamos simplesmente acrescentar o atributo nome à cláusula SELECT. Sempre que existe uma função de agregação na cláusula SELECT, todos os restantes atributos da cláusula têm que estar incluídos na cláusula GROUP BY: SELECT MAX(Bi), NOME FROM Cliente GROUP BY Nome; No entanto, o resultado do comando seria a listagem de todos os nomes com a indicação do BI associado a cada nome. As Subqueries resolvem este problema. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 144 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Row-Level Enquanto as funções de agregação operam em múltiplas linhas retornando um valor, as funções row-level trabalham com linhas (uma a uma); Nome ABS CEILING FLOOR ISNULL NULLIF ROUND Descrição Retorna um valor absoluto Retorna o valor inteiro mais à direita Retorna o valor inteiro mais à esquerda Retorna o valor verdadeiro se o campo contiver o valor nulo Retorna nulo se uma dada condição ocorrer numa expressão Arredonda os números para um número específicado de casas decimais STR Converte um número para um caracter SQRT Retorna a raiz quadrada de valores positivos SQUARE Retorna o quadrado de um número © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Row-Level Uma função row-level pode ser usada para realizar operações aritméticas numa coluna. Por exemplo se quisermos visualizar o código postal e adicionar-lhe o valor de 1000: SELECT codPostal, codPostal + 1000 as CodPostal1000 FROM Cliente; A função round arredonda os números para um dado número de casas decimais: SELECT codPostal, round((codPostal/45),2) AS arred FROM Cliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 145 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Row-Level O NULL presente numa linha, provoca que a devolução de um calculo seja sempre NULL. Para evitar essa situação é possível usar a função ISNULL, determinando que os nulos ajam como zeros ou qualquer outro valor especificado: SELECT nome, ISNULL (codpostal, 0) + 1000 FROM Cliente; A função NULLIF retorna NULL se expressão1 = expressão2. Se as expressões não forem iguais, nesse caso a expressão1 é devolvida. Por exemplo se quisermos ver se o código postal = 6200 SELECT nome, codpostal = NULLIF (codPostal, 6200) FROM Cliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Strings Existem definidas um conjunto de funções que operam sobre strings: Nome Descrição CHARINDEX Retorna a posição inicial de um padrão especificado LEFT Retorna com base numa string o conjunto de caracteres (especificado) mais à esquerda LEN Retorna o tamanho de uma string LIKE Faz uma comparação de acordo com um determinado padrão LOWER Devolve uma string em minúsculas RIGHT Retorna com base numa string o conjunto de caracteres (especificado) mais à direita RTRIM Remove espaços brancos à direita SUBSTRING Retorna parte de uma string UPPER Devolve uma string em maiúsculas © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 146 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Strings A manipulação de strings requere muitas das vezes a concatenação com outras strings. Suponha-se que queremos concatenar cada um dos nomes da tabela clientes com a palavra Esq: SELECT nome + ‘Esq’ FROM Cliente; Suponha-se agora que queremos adicionar à esquerda (ou à direita) de nome um conjunto de pontos SELECT (‘……’ + nome) FROM Cliente; Suponha-se que queremos retornar parte de uma string (as strings em SQL Server são numeradas a partir do 1): SELECT nome, SUBSTRING (nome, 2, 4) FROM Cliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Strings A função Left devolve os valores mais à esquerda da string SELECT nome, LEFT (nome, 3) FROM Cliente; A função LTRIM remove os espaço em branco à esquerda SELECT LTRIM (‘ Ricardo’) /* Note-se que não houve necessidade de utilizar a clausula from */ A função CHARINDEX a posição inicial que cumpra um determinado padrão. Por exemplo, se quisermos encontrar a primeira letra o: SELECT CHARINDEX (‘o‘, nome) FROM cliente © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 147 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Strings Para devolver todos os nomes da tabela cliente em maiúsculas: SELECT UPPER(nome) FROM Cliente; Para devolver o tamanho (em termos de caracteres) de uma dada string SELECT LEN(nome) FROM Cliente; A utilização de caracteres em conjunção com a função like (admite o operador NOT). Por exemplo todos os nomes começados por R SELECT nome FROM Cliente WHERE nome LIKE ‘R%’ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Strings Para encontrar um determinado carácter utiliza-se []. Por exemplo, para encontrar todos os nomes da tabela Cliente que comecem com R ou P e que terminem em icardo SELECT nome FROM Cliente WHERE nome LIKE ‘[RP]icardo’ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 148 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Strings WildCards Pesquisa ‘a%s’ Descrição Qualquer string começada obrigatoriamente por a e terminada por s ‘a_s’ String formada por 3 caracteres, começada por a e terminada por s ‘al%’ String começada obrigatoriamente por al ‘[abc]%’ Qualquer string começada obrigatoriamente por a, b ou c ‘[0-9]%[abc]’ String começada por um dígito e terminada pelo caracter a, b ou c ‘Al[m-r]%’ String começada por Al. O 3.º caracter terá que estar entre m e r (m,n,o,p,q,r). Depois pode aparecer qualquer string Exemplo As, almas, aBs, aas, aAs aBs, aAs, aas, ass Al, all, alface, almodovar Arvore, bola, cão 99778a, 8b Almodovar, Alpendre, alma, © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Data A utilização dos tipos DATETIME e SMALLDATETIME permite a utilização de um conjunto de funções: Nome DATEADD DATEDIFF DATEPART DAY GEtdATE MONTH SET DATEFORMAT YEAR Descrição Adiciona uma parte específica da data Retorna a diferença entre duas datas Retorna uma parte específica da data solicitada Extrai o dia de uma data Retorna a data e a hora do sistema Extrai o mês de uma data Modifica o formato no qual o SQL Server lê as datas. Extrai o ano de uma data © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 149 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Data Vamos primeiro criar uma tabela CREATE TABLE DateTable (aniversario SMALLDATETIME, dataEntradaEscola SMALLDATETIME, nome VARCHAR(20)) Inserir valores na tabela: INSERT INTO DateTable VALUES ('10-oct-01', '12/01/2006', ‘Ricardo') Observe-se a forma como os valores ficam dispostos SELECT * FROM DateTable A função DATEADD adiciona 2 dias ao aniversário (onde dd é dia, mm mês e yy ano: SELECT nome, DATEADD(dd, 2, aniversario) FROM DateTable © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Data A função DATEDIFF devolve a diferença entre duas datas: SELECT nome, DATEDIFF (yy, aniversario, dataentradaescola) FROM DateTable A função DATEPART devolve uma parte específica da data: SELECT nome, DATEPART (mm, aniversario) FROM DateTable A função DAY devolve o dia de um determinado mês SELECT nome, DAY (aniversario) FROM DateTable © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 150 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Funções de Data A função GETDATE devolve a data e a hora actual do sistema: SELECT GETDATE() Inserir valores na tabela com recurso a funções: INSERT INTO DateTable VALUES (GETDATE(), GETDATE( )+1, ‘Ana') © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Outras Funções Este slide fala de outras funções de carácter bastante útil que ajudam a seleccionar linhas a partir de um conjunto grande de resultados: Nome Descrição DISTINCT Omite linhas duplicadas PERCENT Retorna uma determinada percentagem de registros de acordo com um valor especificado TOP Retorna um número específico de registros do início dos resultados © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 151 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Outras Funções Suponhamos que queremos devolver os dois primeiros nomes da tabela clientes: SELECT TOP 2 nome FROM cliente Suponhamos agora que queremos devolver os dois primeiros nomes da tabela clientes que “caiam” dentro da seguinte cláusula: “codpostal ordenado por ordem ascendente”: SELECT TOP 2 nome FROM cliente ORDER BY codPostal ASC Uma vez que não existe o comando BOTTOM podemos simulá-lo: SELECT TOP 2 nome FROM cliente ORDER BY codPostal DESC © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Outras Funções Percent devolve uma determinada percentagem que caiem dentro de uma determinada condição. Por exemplo a próxima query devolve 10% dos nomes da tabela cliente baseada na ordenação dos nomes SELECT TOP 10 PERCENT nome FROM cliente ORDER BY nome ASC Tal como já vimos, a função Distinct omite linhas duplicadas. Assim se não quisermos devolver nomes duplicados (caso eles existam): SELECT DISTINCT nome FROM cliente A função pode funcionar com funções de agregação: SELECT COUNT(DISTINCT nome) FROM cliente © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 152 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Uma das características do comando SELECT reside no facto do comando não devolver dados, linhas ou colunas, mas….uma tabela; Isto é particularmente visível no facto de serem sempre atribuídos nomes às colunas resultantes de um SELECT; Sendo o resultado de qualquer comando SELECT uma tabela, podemos então utilizar os resultados devolvidos nessa tabela e incorporá-los noutro comando SELECT que deles necessite; Em termos práticos, uma subquery é um comando SELECT dentro de um comando SELECT e normalmente liga-se a outro através da cláusula WHERE. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Considere o seguinte modelo relacional: Alunos (numAluno, nome, morada, sexo); Disciplinas (codDisciplinas, designação, créditos); Exames (numAluno, codDisciplinas, data, nota, local). Obter a nota máxima alcançada pelos alunos independentemente da disciplina: SELECT MAX (EXAMES.Nota) AS NOTA_MAXIMA FROM Exames; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 153 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Suponha-se que da execução da tabela anterior obtemos o valor de 16. Admita-se agora que pretendíamos obter uma tabela com os nomes dos alunos que tinham obtido essa nota máxima SELECT ALUNOS.nome, EXAMES.nota FROM ALUNOS, EXAMES WHERE ALUNOS.numAluno = EXAMES.numAluno and EXAMES.nota = 16 O inconveniente da query anterior resulta do facto de ter de se incluir o valor fixo 16, o que provoca grande inflexibilidade. Uma solução mais elegante passa por criar uma subquery, utilizando o resultado da query que retorna o valor da nota máxima como input para a query que selecciona os alunos que obtiveram essa nota máxima: SELECT DISTINCT ALUNOS.nome, EXAMES.nota FROM ALUNOS, EXAMES WHERE ALUNOS.numAluno = EXAMES.numAluno and EXAMES.nota = (SELECT MAX(EXAMES.nota) AS NOTA_MAXIMA FROM EXAMES); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries As subqueries também podem ser colocadas nas cláusula SELECT. Devolve, para cada cliente, o total de facturas associadas: SELECT Nome, (SELECT COUNT(*) FROM Factura WHERE Factura.BI = Cliente.BI) FROM Cliente; As subqueries também podem ser colocadas nas cláusula FROM. SELECT DISTINCT Nome FROM (Select * From Cliente) as Cliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 154 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Ao utilizar os operadores, o resultado do SELECT interior deverá devolver apenas uma única linha, de tal forma que a comparação possa ser realizada. Caso contrário obtém-se um erro; A forma como os sistemas executam as Queries depende do tipo de Query em que se está em presença. Estas podem classificar-se como Correlacionadas ou Não-Correlacionadas; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Não-Correlacionadas Numa query não-correlacionada o SELECT interior não depende do SELECT exterior: SELECT Nome FROM pessoa WHERE salario = (SELECT min(salario) FROM pessoa) Neste caso, como o SELECT interior não depende do SELECT exterior, é executado em 1.º lugar e apenas uma única vez; Assim, o SELECT exterior depende do resultado devolvido pelo SELECT interior. O sentido da execução é de dentro para fora, ou seja, em primeiro lugar é executada a query interior; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 155 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Correlacionadas Numa query correlacionada o SELECT interior depende dos dados que lhe são fornecidos pelo SELECT exterior, o qual reduz o conjunto de registos considerados no SELECT interno: SELECT Nome, salario FROM pessoa P WHERE salario < (SELECT sum(valor) FROM comissao C WHERE C.id = P.id) * 15 Neste caso, para cada Pessoa estudada no SELECT exterior, é executado o SELECT interior calculando o total das comissões que estão associadas ao Id a que pertence o salário; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Subqueries Correlacionadas e Não-Correlacionadas Resumo: Sentido da Execução Dependência da Query Interior Execução da Query Interior Query Não-Correlacionada Do Interior para o Exterior Não depende da query exterior Uma única vez © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Query Correlacionada Do Exterior para o Interior Depende da query exterior Tantas vezes quantas as executadas pela query exterior Bases de Dados 156 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures IN O operador IN (que pode incluir o operador NOT) é normalmente utilizado nas subqueries. Devolve verdade quando um elemento pertence a um conjunto. Obter a lista dos alunos que fizeram exame à disciplina 1. Existem pelo menos duas formas de executar esta query: SELECT ALUNOS.numAluno FROM ALUNOS, EXAMES, DISCIPLINAS WHERE ALUNOS.numAluno = EXAMES.numAluno and EXAMES.codDisciplinas = Disciplinas.codDisciplinas and Disicplinas.codDisciplinas = ‘1’; A alternativa consiste em criar uma subquery utilizando o predicado IN. Cria-se uma query destinada a retornar uma tabela com o número dos alunos que tenham feito exame à disciplina 1: SELECT EXAMES.numAluno FROM EXAMES, DISCIPLINAS WHERE EXAMES.codDisciplinas = DISCIPLINAS.codDisciplinas and DISCIPLINAS.codDisciplinas = ‘1’; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures IN A lista retornada por esta query pode ser utilizada como input para uma query que seleccione o nome dos alunos da tabela ALUNOS com base no seguinte: só serão seleccionados os alunos que façam parte da lista (IN) da query anterior: SELECT ALUNOS.nome FROM ALUNOS WHERE ALUNOS.numAluno IN (SELECT EXAMES.numAluno FROM EXAMES, DISCIPLINAS WHERE EXAMES.codDisciplinas = DISCIPLINAS.codDisciplinas and DISCIPLINAS.codDisciplinas = ‘1’); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 157 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures NOT IN Pretende-se obter a lista com o nome dos alunos que tenham realizado exame a pelo menos uma disciplina: SELECT ALUNOS.nome FROM ALUNOS WHERE ALUNOS.numAluno IN (SELECT EXAMES.numAluno FROM EXAMES); Para obter a lista com o nome dos alunos que não fizeram exame a nenhuma disciplina: SELECT ALUNOS.nome FROM ALUNOS WHERE ALUNOS.numAluno NOT IN (SELECT EXAMES.numAluno FROM EXAMES); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures EXISTS O operador EXISTS (que pode incluir a palavra NOT) devolve verdade caso a subquery retorne pelo menos uma linha e falso se a subquery é vazia. Quando se utiliza o operador EXISTS os nulos contam, porque os nulos existem embora não correspondam a nenhum dado concreto. Considere-se que se pretendia obter uma listagem com os nomes dos alunos que realizaram exame no local UBI SELECT DISTINCT ALUNOS.nome FROM ALUNOS, EXAMES WHERE EXAMES.numAluno = ALUNOS.numAluno and EXAMES.local = ‘UBI’; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 158 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures EXISTS Uma alternativa é utilizar o operador EXISTS (para toda a linha retornada na subquery, portanto retorna True, Alunos.nome vai ser impresso) SELECT ALUNOS.nome FROM ALUNOS WHERE EXISTS (SELECT * FROM EXAMES WHERE EXAMES.numAluno = ALUNOS.numAluno and EXAMES.local = ‘UBI’); O operador EXISTS apenas selecciona as linhas da tabela que fazem com que a sub-query correspondente retorne linhas, ou seja, SELECT…EXISTS corresponde a SELECT….WHERE TRUE © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados SQL embebido VS APIs Definição de SQL Comandos DDL Comandos SQL para Privilégios Sinónimos Store Procedures EXISTS Quando se usa este operador a query interna costuma referir-se à query externa. Deste modo, é um operador muito lento pois para cada linha da query externa tem de calcular o resultado da query interna. Por exemplo para a quey anterior: SELECT ALUNOS.nome FROM ALUNOS WHERE EXISTS (SELECT * FROM EXAMES WHERE EXAMES.numAluno = ALUNOS.numAluno and EXAMES.local = ‘UBI’); Teriamos o seguinte loop: LOOP1: For each row in Alunos A DO LOOP2: For each row in EXAMES E DO IF (E.numAluno = A.numAluno) THEN IF (E.local = ‘UBI') THEN TRUE END LOOP2; IF TRUE, THEN student row is SELECTed END LOOP1; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 159 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures ALL e ANY Os operadores ALL (todos) e ANY (pelo menos um) também são frequentes nas subqueries. Admita-se que se pretende obter uma listagem com o nome dos alunos que tenham obtido alguma nota superior a 12. SELECT ALUNOS.nome FROM ALUNOS WHERE ALUNOS.numAluno = ANY (SELECT EXAMES.numAluno FROM EXAMES WHERE EXAMES.nota > 12); A query seguinte vai retornar o número e o nome do aluno que obteve a classificação mais elevada, utilizando o predicado ALL: SELECT ALUNOS.numAluno, ALUNOS.nome FROM ALUNOS WHERE ALUNOS.numAluno = ALL (SELECT EXAMES.numAluno FROM EXAMES WHERE EXAMES.nota = (SELECT MAX (EXAMES.nota) FROM EXAMES)); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures UPDATE Um comando UPDATE para alteração de linhas obedece à seguinte estrutura: UPDATE tabela a alterar SET coluna a alterar = expressão WHERE expressão lógica que indica quais as linhas que pretendemos alterar Transforma a designação da disciplina de Informática para Inf: UPDATE Disciplinas SET designação = ‘INF’ WHERE designação = ‘Informática’; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 160 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures DELETE Um comando DELETE para anulação de linhas obedece à seguinte estrutura: DELETE FROM tabela a anular WHERE expressão lógica que indica quais as linhas que pretendemos alterar Apaga os códigos postais 1200: DELETE FROM CódigoPostal WHERE CodPostal = ‘2300’; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures TRUNCATE Para eliminar todas as linhas de uma dada tabela (mantendo a sua estrutura), utiliza-se o comando TRUNCATE em vez do DELETE, uma vez que o primeiro é bastante mais rápido: TRUNCATE TABLE CódigoPostal; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 161 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures INSERT Através do comando INSERT podem-se inserir uma ou várias linhas em simultâneo. Para inserir uma linha um comando INSERT obedece à seguinte estrutura: INSERT INTO tabela a inserir (colunas onde vão ser inseridos os valores) VALUES (valores a inserir) Para inserir um conjunto de linhas, um comando INSERT obedece à seguinte estrutura: INSERT INTO tabela a inserir (colunas onde vão ser inseridos os valores) SELECT valores a inserir FROM ... INSERT INTO ALUNOS (numAluno, nome, morada, sexo) VALUES (9809, ‘Paula’, ‘Rua E’, ‘F’); INSERT INTO Alunos (numAluno, nome, morada, sexo) SELECT 4398, nome, morada, NULL FROM Cliente where nome = ‘Isabel’; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures INSERT Suponha-se que temos um ficheiro de texto preenchido com um conjunto de valores que queremos inserir numa tabela: 3422, 3, 6/10/2007, 9€ 3423, 8, 6/10/2007, 3,5€ 3424, 1, 6/10/2007, 12,25€ Essa situação é por exemplo possível no SQL Server com recurso ao comando Bulk Insert: BULK Insert Vendas FROM ‘C:\ficheiro.txt’ WITH (DATAFILETYPE = ‘char’, FIELDTERMINATOR = ‘,’) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 162 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Comandos SQL para administração de privilégios O acesso aos objectos é controlado através de privilégios: -Direito a ligar-se à base de dados; -Direito a criar tabelas; -Direito a visualizar tabelas de outros utilizadores…… Privilégios de sistema (administrador e aos programadores) Privilégio para executar determinada acção ou para aceder/manipular determinado tipo de objecto (direito a criar tabelas, apagar linhas de qualquer tabela, etc…) Privilégios de objecto (utilizadores finais) Privilégio para executar determinada acção sobre um objecto específico (apagar linhas da tabela Eleitor, inserir registos na tabela Sócio, etc…) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures GRANT (concede privilégios) GRANT privilégios ON objecto TO utilizador Privilégios Objecto SELECT Dados numa tabela ou vista INSERT Registos numa tabela ou vista UPDATE Registos ou colunas numa tabela ou vista DELETE Registos numa tabela ou vista ALTER Definição de colunas numa tabela INDEX Índice para uma tabela REFERENCES Referências a uma tabela ALL Todos os privilégios © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 163 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures GRANT (concede privilégios) Conceder a Filipe o privilégio de executar SELECT na tabela Eleitor: GRANT SELECT ON ELEITOR TO FILIPE; Conceder a Filipe o privilégio de executar colunas específicas: GRANT UPDATE (NOME, MORADA) ON ELEITOR TO FILIPE; Conceder privilégios de INSERT e UPDATE a dois utilizadores: GRANT INSERT, UPDATE ON ELEITOR TO FILIPE, SOUSA; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures GRANT (concede privilégios) Quando um utilizador recebe um privilégio não recebe, autorização para passar esse privilégio a outros. A cláusula WITH GRANT OPTION confere autorização para passar o privilégio recebido: GRANT SELECT ON ELEITOR TO FILIPE WITH GRANT OPTION; Permite ao dono de uma tabela conceder acesso a todos os utilizadores com um único comando: GRANT SELECT ON ELEITOR TO PUBLICO; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 164 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures REVOKE (retira privilégios) REVOKE privilégios ON tabela/vista FROM utilizadores Retira a Filipe todos os privilégios sobre a tabela Eleitor: REVOKE ALL ON ELEITOR FROM FILIPE; Retira a todos os utilizadores o privilégio Insert na tabela Eleitor: REVOKE INSERT ON ELEITOR FROM PUPLIC; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Utilização de Sinónimos Uma possibilidade de nos referirmos a uma tabela, é através de aliases com já vimos anteriormente: SELECT c.dname FROM cliente c Acontece que os aliases não são permanentes uma vez que não existem após a execução da query; Assim, uma forma alternativa de nos referirmos a uma tabela é através da utilização de sinónimos os quais estão disponíveis até serem apagados; Sinónimos são normalmente nomes pequenos que podem ser usados em vez do nome da tabela: CREATE SYNONYM synonym_name FOR Table_name © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 165 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Utilização de Sinónimos Por exemplo, para criar um sinónimo para a tabela cliente com o nome C: CREATE SYNONYM c FOR Cliente Para seleccionar os valores da tabela Cliente: SELECT * FROM c Para eliminar um sinónimo: DROP SYNONYM c © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Definição de Store Procedures Os Stored Procedures (SP) são procedimentos SQL compilados e armazenados junto da base de dados. Trata-se da forma mais eficiente de executar comandos SQL; Para além dos comandos SQL é possível utilizar as habituais primitivas de controlo (If, While), os habituais operadores lógicos e variáveis. Trata-se no entanto de uma linguagem simples que não substitui as linguagens procedimentais (C, Java, etc.); É possível passar parâmetros para um SP, assim como um SP retornar valores (nomeadamente o resultado de comandos SELECT). Os SP podem ser chamados dentro de um comando SELECT ou a partir de uma linguagem procedimental (através da primitiva CALL). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 166 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Definição de Store Procedures create procedure dba.getPubAno(in Par_Ano integer) result(ISBN integer,Titulo long varchar) begin select ISBN,Titulo from Pub where Data = Par_Ano end O seguinte comando retorna as publicações de 2000: CALL getPubAno(2000); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures PL/SQL Linguagem procedimental proprietária da oracle, com facilidades acrescidas na manipulação de dados. Compilado e executado local ou remotamente Estrutura base de um bloco PL/SQL: Secção declarativa. Secção de execução. Secção de tratamento de excepções. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 167 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures T_SQL (Transact SQL) A ANSI (American National Standards Institute) é a organização que define e mantém o SQL como uma linguagem standard. Existem no entanto algumas diferenças entre o standard e as reais necessidades, razão pela qual a maioria dos fornecedores de SGBDs incluiu extensões proprietárias ao standard; O Transact-SQL é linguagem específica do SQL Server usada para estender as funcionalidades do SQL, e possui, para lá dos comandos de manipulações de dados, tais como Select, Insert e Update, os comandos que lhe permitem construir store procedures Vamos acrescentar à base de dados onde se encontra a tabela Alunos o seguinte store procedure: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados T_SQL (Transact SQL) IF @contagem != 0 begin CREATE PROCEDURE BuscaPessoa @nome varchar(50) AS declare @pesquisa varchar(50) select @mensagem = convert(varchar,@contagem) + ' pessoas encontradas' print @mensagem declare @contagem int select nome, morada, sexo select @pesquisa = '%' + @nome + '%' from Alunos select @contagem = count(*) where Nome LIKE @pesquisa from Alunos where Nome like @pesquisa order by Nome end ELSE declare @mensagem varchar(100) begin select @mensagem = 'Não foi encontrado "'+@nome+'"' print @mensagem end © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 168 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. T_SQL (Transact SQL) A execução do store procedure vai solicitar um nome para pesquisa. É produzido um resultado e uma mensagem de acordo com o valor introduzido: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Triggers Os triggers são procedimentos armazenados junto da base de dados que são associados a eventos que ocorrem nas tabelas; Através dos triggers o motor de base de dados reage automaticamente quando esses eventos (alterações dos dados nas tabelas) ocorrem; A forma como reagem é definida pelo procedimento associado ao trigger (um trigger apenas pode estar associado a um evento de uma tabela); Os eventos aos quais podem se associar os triggers: Insert, Update, Delete e Update Of (para cada um deles é necessário discriminar se o evento ocorre antes ou depois da operação terminar); Os triggers podem ainda ser row-level ou statement-level. Os triggers rowlevel ocorrem após cada linha da tabela ser alterada (anulada ou inserida). Os triggers statement-level ocorrem após uma operação sobre a tabela ser concluída (por exemplo, após um conjunto de registos ser inserido). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 169 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Triggers O procedimento associado ao trigger obedece no essencial à mesma sintaxe que os SP. Vamos primeiro criar as tabelas para o exemplo: create table factura (NumFactura numeric(10) primary key, ValorTotal numeric(10,2) default (0) ) create table produto (codProduto int primary key, preco real default (0) ) create table ItemFactura (NumFactura numeric(10) foreign key references factura, CodProduto int foreign key references produto, Qtd int not null check (Qtd > 0), primary key (NumFactura,CodProduto) ) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Álgebra Relacional Linguagem SQL Bases de Dados Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Triggers Exemplo: Quando for excluída uma factura (tabela factura) todos os seus itens (tabela ItemFactura) serão excluídos: create trigger ExclusaoFactura on Factura for delete as delete from ItemFactura where NumFactura in (select NumFactura from deleted) Na exclusão, as linhas da tabela são removidas e colocadas na tabela virtual deleted, que tem a mesma estrutura da tabela principal. Um gatilho para exclusão pode consultar deleted para saber quais as linhas excluídas. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 170 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Álgebra Relacional Linguagem SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Triggers Exemplo: Sempre que for incluído um item (tabela ItemFactura) a coluna valorTotal da factura (tabela factura) deverá ser actualizada: create trigger InclusaoItemFactura on ItemFactura for insert as if not exists (select * from inserted, Factura where inserted.NumFactura = Factura.NumFactura) update Factura set ValorTotal = ValorTotal + (select i.Qtd * p.Preco from produto p, inserted i where p.CodProduto = i.CodProduto) where NumFactura = (select NumFactura from inserted) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Transacções, Recuperação e Optimização Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 171 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Sumário Sumário Transacções, Recuperação e Optimização Definição de Transacção; Tipos de Transacção; Concorrência de Transacções; Definição de Recuperação e Tolerância a Falhas; Mecanismos de Recuperação; Tipos de Falhas; Definição de Índices; Considerações sobre os índices; Estrutura Interna de um Índice; Monitorização; Hashing; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Definição de Transacção Uma transacção consiste num conjunto de acções originadas por um utilizador ou aplicação que, como um todo, acedem a uma base de dados para consultar ou modificar o seu conteúdo; Trata-se de uma unidade de trabalho que só pode ser executada na totalidade; A componente de gestão de transacções garante que a base de dados se mantém num estado consistente (correcto) apesar de falhas no sistema (explo: falta de energia eléctrica, problemas com o sistema operativo) e de transacções falhadas; CONTA A CONTA B Débito 100 Crédito 100 BD Inconsistente Falha no sistema © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 172 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Características da Transacção A transacção exibe as seguintes características: Atomicidade Grupo indivisível (todas ou nenhuma). Integridade Passar de um estado de integridade para outro. Isolamento Uma transacção deve ser executada como se fosse única. Ou seja, num ambiente concorrente não pode haver interferências entre as transacções. O resultado final deve ser equivalente a uma execução em série (não concorrente). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Comandos de Transacção COMMIT – actualização permanente na BD das alterações efectuadas desde o ultimo commit ou início de transacção. O COMMIT torna definitivas as transacções efectuadas durante a transacção. ROLLBACK – desfaz todas as alterações desde o último commit ou início de transacção. ROLLFORWARD – refaz tudo como estava anteriormente © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 173 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Flat Transactions Existe apenas um nível de controlo: BEGIN TRANSACTION ………… <operações sobre bases de dados> ………… END TRANSACTION /* faz o COMMIT da transacção */ O End Transaction faz automaticamente o COMMIT. Caso a transacção termine abruptamente antes do End Transaction é feito automaticamente o ROLLBACK, o que nem sempre é adequado. Por exemplo, se estiver a ser feito o Update a milhares de registos, caso a transacção falhe a meio, o ROLLBACK desfaz tudo desde o início. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Save Points (rollback / rollforward) Existem pontos temporários (save points) até onde uma transacção poderá desfazer (rollback)/ refazer(rollforward) em casos de falha. Os savepoints guardam as alterações efectuadas até esse ponto da execução da transacção. Usado para dividir uma transacção em partes mais pequenas. BEGIN TRANSACTION …. <operações sobre a base de dados> …. SAVE POINT <x> …. <operações sobre a base de dados> …. SAVE POINT <y> …. <operações sobre a base de dados> …. END TRANSACTION /* Faz o COMMIT da transacção */ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 174 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Save Points (rollback / rollforward) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Save Points (rollback / rollforward) Os savepoints não terminam a transacção, apenas guardam as alterações efectuadas. Desta forma, antes do commit, é possível recuar até qualquer ponto da transacção (savepoint) e reiniciar a partir daí. Em relação às Flat Transactions, o ROLLBACK desfaz menos, mas a transacção exige mais recursos (memória e processamento). Úteis em transacções muito longas. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 175 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Save Points (rollback / rollforward) INSERT INTO ELEITOR (BI, NOME, MORADA, NumELEITOR) VALUES (4537687, Ricardo, RuaA, 123); SAVEPOINT INSERÇÃO_CONCLUIDA; UPDATE ELEITOR SET NOME = “Ricardo Nuno”, BI=4537688; ROLLBACK TO INSERÇÃO_CONCLUIDA (anula comando da actualização) UPDATE ELEITOR SET NOME = “Ricardo Nuno”, BI=4537688 WHERE NumELEITOR = 123); COMMIT; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Chained Transactions (commit point) As chained transactions são similares às transacções com savepoints. No entanto, enquanto um savepoint marca apenas um ponto intermédio, a partir da qual é possível refazer a transacção ou até onde a transacção pode ser desfeita, nas chained transactions estes pontos correspondem a commits, formando uma só transacção com vários commits intermédios. BEGIN TRANSACTION …. <operações sobre a base de dados> …. COMMIT POINT …. <operações sobre a base de dados> …. COMMIT POINT …. <operações sobre a base de dados> …. END TRANSACTION /* Faz o COMMIT final */ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 176 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Chained Transactions (commit point) Apesar das transacções com savepoints permitirem um maior controlo e uma maior flexibilidade sobre a amplitude dos processos de rollback e rollforward, uma falha na transacção significa sempre o desfazer de toda a transacção. Pelo contrário as chained transactions, apesar de não serem tão flexíveis nos processos de rollback e rollforward, em situações de falha evitam perder toda a transacção, mantendo todo o trabalho realizado até ao último ponto de commit. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Nested Transactions É o tipo de transacção mais flexível. Nested transaction é uma hierarquia de transacções. As subtransacções ou são flat transactions ou nested transactions. Cada uma destas subtransacções passa a ser uma transacção por si só, podendo ser finalizada ou desfeita autonomamente em relação às outras transacções. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 177 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Execução em Série e Execução Concorrente de Transacções As transacções podem se executadas de duas formas: Execução em Série; As várias transacções submetidas ao sistema são executadas sequencialmente, só se iniciando uma quando a anterior tiver finalizado. Execução Concorrente A execução de uma transacção é constituída por vários acessos de leitura e escrita à base de dados; Pode-se pensar em executar as várias transacções concorrentemente, combinando e intercalando, quando possível, as suas operações de leitura e escrita na base de dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Execução em Série e Execução Concorrente de Transacções T1, T2, T3 e T4 são 4 transacções submetidas ao sistema Ts – tempo total de execução Tc – tempo total de execução em concorrência Ta – instante de tempo intermédio para comparação Execução Série de Transacções Execução Concorrente de Transacções © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 178 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Definição de Concorrência Relaciona-se com a coordenação da partilha de dados por várias aplicações e utilizadores; Garante que cada utilizador ou aplicação interage com a base de dados como se fosse o único a utilizar os seus serviços; A unidade base de controlo da concorrência é a transacção; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Definição de Concorrência Quando duas ou mais transacções são executadas concorrentemente (por oposição a acederem em série) podem surgir problemas decorrentes de interferências entre si, com consequências ao nível da integridade da base de dados: Se todas as aplicações e utilizadores estão apenas a realizar operações de consulta (leitura), os problemas da concorrência não se põem; Só acontecem quando duas ou mais transacções acedem aos mesmos dados envolvendo, pelo menos uma delas, a execução de modificações; É necessário definir procedimentos e utilizar mecanismos que impeçam duas transacções concorrentes de acederem simultaneamente, ao mesmo conjunto de dados, envolvendo actualização dos mesmos. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 179 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Concorrência Índices Definição de Concorrência Exemplos de execuções Transacção T1 Transacção T2 Ler saldo Ler saldo Saldo = Saldo - 100 Saldo = Saldo - 400 Escrever Saldo Escrever Saldo Execução em série Execução concorrente Tempo Operação Saldo Tempo Operação Saldo 1 T1 Ler saldo 1000 1 T1 Ler saldo 1000 2 T1 Escrever Saldo 900 2 T2 Ler Saldo 1000 3 T2 Ler Saldo 900 3 T2 Escrever Saldo 600 4 T2 Escrever Saldo 500 4 T1 Escrever Saldo 900 Estado da base de dados consistente Estado da base de dados inconsistente © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Escalonamentos Serializados Dado que os escalonamentos em série não tiram partido das potencialidades multi utilizador, a solução é encontrar um escalonamento serializado, isto é, um escalonamento concorrente que, após o seu término, a base de dados fique num estado idêntico ao que teria ficado caso o escalonamento fosse em série. Existem 3 métodos de controlo de concorrência que automaticamente asseguram escalonamentos serializados: Optimistas; Mecanismos de Etiquetagem (preventivo); Mecanismos de locking (preventivo). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 180 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Escalonamentos Serializados Optimistas Parte do pressuposto que as interferências são raras. Deixa ocorrer as transacções até ao fim, e depois verifica se o commit não traz problemas de serialização. Caso existam problemas, faz o rollback de tudo. Mecanismos de Etiquetagem (preventivo) Utilizam-se etiquetas que indicam a ordem de chegada das transacções. Os dados acedidos (para leitura ou escrita) ficam com ID da etiqueta que lhe acede. Existe um conflito quando uma transacção tenta aceder a um elemento de dados cujo valor de etiqueta é superior ao seu. Nesse caso é necessário desfazer e reiniciar a transacção. Existem abordagens mais elaboradas com etiquetas de leitura e escrita. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Escalonamentos Serializados Mecanismos de locking (preventivo) Mecanismo utilizado para controlar o acesso concorrente aos mesmos dados; Impede a actualização simultânea dos mesmos dados por dois ou mais utilizadores; Impede alterações na definição de uma tabela ou de uma coluna enquanto estiverem a decorrer transacções que actualizem os dados da tabela ou coluna; Um lock (semáforo) é uma variável associada a um elemento da base de dados que, de acordo com o seu valor em cada momento, vai permitir ou impedir ser acedido. Antes de aceder a um elemento da base de dados, tanto para leitura como para actualização, é necessário obter o lock desse elemento. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 181 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Escalonamentos Serializados Um elemento da base de dados pode ter um de três estados: lock para leitura; lock para escrita; unlocked. A cada lock de leitura é necessário associar um valor que traduza o número de transacções que, em cada momento, mantêm esse tipo de lock. O valor vai sendo decrementado à medida que as transacções vão libertando o elemento de dados. Problemas de locks: deadlock. Quando transacções concorrentes lutam por recursos na posse da sua concorrente, entrando-se num ciclo infinito de espera. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Tipos de Transacção Concorrência Escalonamentos Serializados Podem gerar-se impasses quando dois ou mais utilizadores tentam aceder aos mesmos dados e cada utilizador fica à espera dos objectos detidos pelo outro utilizador: Transacção A Transacção B UPDATE FUNCIONARIOS SET NOME = “Tiago” WHERE NUM = 986; UPDATE FUNCIONARIOS SET SAL = SAL * 2 WHERE NUM = 1002; UPDATE FUNCIONARIOS SET NOME = “Raul” WHERE NUM = 1002; UPDATE FUNCIONARIOS SET SAL = SAL * 2 WHERE NUM = 986; Não se pode continuar porque o registo do funcionario NUM = 1002 está bloqueado pela Transacção B © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Não se pode continuar porque o registo do funcionario NUM = 986 está bloqueado pela Transacção A Bases de Dados 182 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência Escalonamentos Serializados Como lidar com impasses? Prevenir os impasses Usa-se em sistemas em que a probabilidade de surgirem impasses é elevada; Detectar os impasses e recuperar dessa situação Usa-se em sistemas em que a probabilidade de surgirem impasses é é baixa; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Mecanismos Tipos de Falhas Definição de Tolerância a Falhas Um sistema de bases de dados, como qualquer outro sistema, está sujeito à ocorrência de falhas que podem por em causa a integridade da base de dados; A recuperação / tolerância de falhas é a actividade que tem por objectivo o restaurar da base dados, após a ocorrência de uma qualquer falha, para um estado de integridade garantido; Os mecanismos de recuperação dos sistemas de bases de dados baseiam-se, fundamentalmente, na utilização de formas de redundância que, na prática, quase duplicam a própria base de dados © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 183 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Mecanismos Tipos de Falhas Mecanismos de Recuperação Backups: São cópias de segurança executadas periodicamente abrangendo toda a base de dados Transaction Logging É o registo das operações efectuadas à base de dados por todas as transacções posteriores ao último backup. Enquanto o backup é um mecanismo de recuperação que permite actuar ao nível de toda a base de dados, repondo-a por completo num estado passado, o transaction log permite refazer as transacções ocorridas desde esse último backup (rollforward). © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Mecanismos Tipos de Falhas Tipos de Falhas Falha de disco Falha mais grave; Necessário reconstruir a base de dados através do backup e do transaction log (rollforward); Falha de sistema Necessário fazer rollback até um estado válido; Falha de transacção Falha menos grave; Recupera-se o estado anterior à transacção através do transaction log. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 184 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Porquê Índices? Quando fazemos consultas numa tabela, seleccionamos registros com determinadas propriedades. Dentro do conceito de álgebra relacional, estamos a realizar uma simples operação de determinar um subconjunto de um conjunto; A forma trivial de realizar esta operação é avaliar cada um dos elementos do conjunto para determinar se ele possui ou não as propriedades desejadas. Ou seja, avaliar, um a um, todos os seus registros; Em tabelas grandes, a operação descrita acima pode ser muito custosa. Imaginemos que a tabela do serviço telefónico 118 contém 10 milhões de registos e que queremos fazer uma pesquisa por nome. Se a lista não estiver ordenada teremos que a percorrer na sua totalidade, processo que certamente levará muito tempo; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Porquê Índices? Fisicamente, a tabela não está organizada em nenhuma ordem. Os registros são colocados na tabela pela ordem cronológica de inserção e as eliminações ainda causam mudanças nesta ordem; Tal ordem pode não ter nada a ver com a ordem de processamento que mais tarde vamos efectuar; Suponhamos que queremos processar a tabela de clientes ordenada por nome; Nome Morada Morada1 Cidade Ricardo Rua A Quinta Covilhã Nuno Rua B Covilhã Ana Rua C Tomar Carla Rua D Lisboa A ordenação é um processo que consome imenso tempo. E se a tabela tiver 100.000 linhas? Ou 1.000.000? Mesmo o melhor algoritmo de ordenação levará imenso tempo; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 185 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Acesso Aleatório VS Sequencial No acesso aleatório a um ficheiro sequencial, caso a chave de acesso não coincida com a chave de ordenação, só existem duas opções: Ou se ordena o ficheiro segundo a chave de acesso que se pretende para posteriormente executar a pesquisa, o que se torna inviável dado que cada acesso ao ficheiro poderá ter de ser precedido por uma operação de ordenação; Ou se faz uma pesquisa sequencial ao ficheiro, o que, por princípio, não parece ser muito razoável. A solução será associar ao ficheiro de dados uma estrutura de acessos que traduza eficientemente uma condição de pesquisa. Essa estrutura é designada por ficheiro de índices e o seu objectivo é acelerar o acesso a uma tabela através de um campo, ou seja, facilitar a procura de linhas dentro de uma tabela, bem como garantir a unicidade dos dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Criação de Índices Índices são o equivalente a um índice remissivo de um livro, pois permitem localizar rapidamente a informação pretendida. Os índices são: Uma estrutura onde todos os elementos de uma tabela estão organizados, numa estrutura de dados eficiente, ordenados segundo algum critério; Compostos pelo conjunto de valores dos campos que compõem o índice e pelo endereço físico do registro na tabela; Lógica e fisicamente independentes dos dados das tabelas a que estão associados (a criação/eliminação) de índices não interfere com os dados da tabela nem com a estrutura da base de dados; Criados pelo utilizador através de comandos SQL CREATE INDEX nomeIndice ON Empegados (nome); Geridos automaticamente pelo sistema (em cada consulta (SELECT) numa tabela com índices associados o sistema decide se usa ou não o índice para aceder aos dados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 186 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Criação de Índices A Indexação é pois a estrutura que permite simular a ordenação dos dados. Na realidade consiste normalmente numa árvore de termos que revertem para uma determinada posição no ficheiro ou tabela; Uma Árvore Binária é uma estrutura em que, para cada um dos nós da árvore, todos os nós à esquerda são menores ou iguais à chave de indexação e todos os nós à direita são superiores à chave de indexação; Em cada um dos nós vamos guardar a chave de indexação e a posição (registo) da tabela © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Criação de Índices Suponha-se o seguinte conjunto de dados, sobre o qual vamos criar um índice por nome: Célia António Ana Beatriz Id Nome Apelido 2456 Célia Gertrudes 4561 José Lopes 6452 Florinda Simões 1289 António Dias 4978 Beatriz Costa 3254 Ana Rita 5698 Paulo Viegas José Florinda Paulo © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 187 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Definição Recuperação / Tolerância a Falhas Monitorização Considerações Estrutura Interna de um Índice Índices Hashing Índices Únicos e de Performance Índice Único Índice criado a partir da chave primária, não permitindo a inclusão de linhas duplicadas, ou seja, ao definir uma chave primária a coluna (ou colunas) que constituem essa chave são automaticamente indexadas; Índice de Performance Facilita a procura de linhas na tabela. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Ficheiros de Índices Um ficheiro de índices é um ficheiro em que cada registo é constituído por 2 campos: Um dos campos é a chave (correspondente à condição de pesquisa); E o outro é um apontador correspondente ao endereço em disco onde se encontra o registo de dados que satisfaz a pesquisa. Ficheiro de Índice Nome Ana Carla Nuno Ricardo Ficheiro de Dados Nome Morada Morada1 Cidade Ricardo Rua A Quinta Covilhã Nuno Rua B Ana Rua C Tomar Carla Rua D Lisboa © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Covilhã Bases de Dados 188 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Ficheiros de Índices A criação da tabela de índices permite percorrer sequencialmente o ficheiro de índice, o qual através de um ponteiro aponta para a linha correspondente, factor que permite uma performance quase tão rápida como se a operação fosse realizada no ficheiro de dados; A utilização de índices permite um tempo de processamento da tabela proporcional a N, com N sendo o número de registos; Sem a utilização de índices, o tempo de processamento para a mesma operação é proporcional a N * log2 N. Para tabelas pequenas a diferença é insignificante, mas para tabelas grandes é muito significativo; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Ficheiros de Índices Suponha-se que o processamento de cada linha consome 1 milisegundo. Suponha-se que temos uma tabela com 1.000.000 registos (N = 1.000.000) Se tivermos uma tabela de índice o processamento da tabela na sua totalidade consome 1,000 segundos, menos de 17 minutos; Sem um índice é necessário, aproximadamente, ir à tabela 1.000.000 * 20 (o 20 advêm de log2 1.000.000), o que representa 20,000 segundos (mais do que 5h30m) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 189 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Ficheiros de Índices O exemplo seguinte apresenta um ficheiro indexado constituído por um ficheiro de dados de funcionários e dois ficheiros de índices, que optimizam o acesso aleatório aos dados desses ficheiros segundo duas chaves de indexação (pelo número de funcionário e pelo nome do funcionário). Ficheiro de Índice Func Ficheiro de Índice Ficheiro de Dados Nome Func Nome 0001 0005 Xavier Alberto 0005 0015 Carlos Carlos 0010 0001 Alberto Manuel 0015 0010 Manuel Xavier O acesso quer por número de funcionário quer por nome, envolve uma pesquisa sobre os respectivos ficheiros de índice, a que se seguirá, em caso de sucesso, um acesso ao ficheiro de dados. Se não existissem índices teria que ser feito um acesso sequencial ao ficheiro de dados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Ficheiros de Índices É frequente consultar as publicações por assunto: Ficheiro de Índice (ordenado por assunto) Tabela de Publicação ISBM Título Data Assunto Direito 1 A 1998 História História 2 D 1997 Informática Informática 3 C 1994 Sociologia Informática 4 Z 2000 Informática Sociologia 5 F 1986 Direito Assunto Índice Exemplos de interrogações que beneficiam do índice: Quais os títulos das publicações de História ? Mesmo que a maioria das publicações sejam de história, é mais rápido percorrer sequencialmente um ficheiro mais pequeno; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 190 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Definição Recuperação / Tolerância a Falhas Monitorização Considerações Estrutura Interna de um Índice Índices Hashing Ficheiros de Índices Quantas publicações de informática existem? Apenas necessita abrir o ficheiro de índice; Suponha-se agora que se indexa o campo data. Quais os títulos entre 1990 e 1998 ? A ordenação do índice acelera muito a procura por intervalos. Pode ser criado um índice para dois ou mais atributos (útil para quando duas colunas são sempre pesquisadas em conjunto): CREATE INDEX nomeIndice ON Publicacao (assunto,data); Ficheiro de Índice Tabela de Publicação ISBN Título Data Assunto Direito+1986 1 A 1998 História Informática+1997 2 D 1997 Informática 3 C 1994 Sociologia 4 Z 2000 Informática 5 F 1986 Direito Assunto/Data Índice © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Que tabelas se devem indexar? Tabelas grandes (com muitos registos); Tabelas em que as pesquisas sejam muito específicas (devolvam uma percentagem pequena de registos, por exemplo <10%); Tabelas relativamente estáticas em que a principal operação é a pesquisa e as operações escritas são pouco frequentes. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 191 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Que colunas se devem indexar? Colunas sobre as quais as aplicações fazem muitas pesquisa; Chaves estrangeiras para acelerar as junções (notar que as chaves primárias já estão indexadas); Colunas em que a maioria dos valores são distintos (não faz muito sentido indexar a coluna relativa ao sexo numa tabela de funcionarios); Colunas com uma vasta gama de valores; Colunas com muitos valores nulos, mas em que a maioria das pesquisas procura apenas entre os valores não-nulos. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Que colunas se devem indexar? Se uma coluna está presente na cláusula WHERE, num comando SELECT, UPDATE ou DELETE, o SQL Server consegue verificar as condições mais rapidamente se houver um índice. Caso contrário, ele faz uma varredura sequencial da tabela [table scan]. Se uma coluna é muito usada para ordenar valores (com ORDER BY), essa ordenação é muito mais eficiente se ela tiver um índice. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 192 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Quando é que se deve indexar uma tabela? Pode-se criar um índice em qualquer altura da existência de uma tabela, mas a melhor altura é depois de a tabela já conter muitos dados; Note-se que criar o índice quando a tabela está vazia, provoca que a inserção de dados fica mais lenta, pois o sistema tem de rearranjar a estrutura de índice com relativa frequência. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Quantos índices pode haver por cada tabela? Pode haver qualquer número de índices por tabela, mas quantos mais índices houver, mais lentas ficarão as operações de INSERT, UPDATE, DELETE. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 193 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Qual o Melhor Índice? O critério básico para escolha de índices é a selectividade. Quando a base de dados resolve uma consulta, frequentemente precisa percorrer mais registros do que os devolvidos pela consulta. Os registros percorridos que forem rejeitados representam trabalho perdido; Quanto menor for o trabalho perdido, mais perto estaremos da performance óptima para resolver a consulta. Portanto, o melhor índice para uma consulta é aquele que apresenta a maior selectividade. tabela possui os índices: select campo1 from tabela índice 1: campo2, where campo2 = 2 and campo3 = 1 and campo4 = 3; índice 2: campo1 índice 3: campo3, índice 4: campo4 índice 5: campo5, O índice mais selectivo será aquele que recuperar o mínimo número de registros. campo5 campo1 campo4 © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Qual o Melhor Índice? Se houver 10 registros com campo2 = 2, 2000 registros com campo3 = 1 e 50 registros com campo4 = 3, o índice 1 será o mais selectivo. Vale a pena tomar nota que o facto do índice 1 possuir também a coluna campo5 prejudica um pouco a consulta, razão pela qual, seria melhor para esta consulta, que o índice 1 possuísse apenas o campo2; select campo1 tabela possui os índices: from tabela índice 1: campo2, where campo2 = 2 and campo3 = 1 and campo4 = 3; índice 2: campo1 índice 3: campo3, índice 4: campo4 índice 5: campo5, campo5 campo1 campo4 Para resolver a consulta, a base de dados fará o acesso ao índice, onde irá recuperar o endereço físico dos registros candidatos a compor o resultado. Com este endereço, verifica cada registro quanto às outras condições. Os que satisfizerem as outras condições farão parte do resultado. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 194 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Monitorização Considerações Estrutura Interna de um Índice Hashing A Ordem das Colunas na criação de Índices é importante? Suponha-se a seguinte tabela: Prod_Lojas (IDProd, IDLoja, Preço, Qtd) Suponha-se que a tabela pode ter algumas dezenas de lojas, mas que cada loja (IDLoja) pode ter milhares de produtos (IDProd); Há consultas frequentes do tipo: SELECT * FROM Prod_Lojas WHERE IDProd = 1243 and IDLoja = 8; Neste caso o índice a criar deveria indicar primeiro a coluna com mais valores distintos (IDProd): CREATE INDEX Prod_id ON Prod_Lojas (IDProd, IDLoja); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Monitorização Considerações Estrutura Interna de um Índice Hashing A Ordem das Colunas na criação de Índices é importante? Select campo1 from tabela where campo2 = 2; Tabela possui os índices: índice 1: campo1 , campo3 índice2: campo2, campo1, campo3 índice3: campo1, campo2 Neste caso, a base de dados apenas pode usar o índice 2. A consulta pode ser resolvida sem acesso à tabela, usando apenas o índice, uma vez que o índice também possui os valores para campo1 de cada registro, não há necessidade de se recuperar este valor da tabela. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 195 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Monitorização Considerações Hashing Estrutura Interna de um Índice Porque é que se eliminam índices? O índice não levou à melhoria da velocidade que se esperava; As aplicações não contém pesquisas que permitam ao sistema usar o índice; A tabela vai passar por uma fase de inserção/actualização intensiva, pelo que é melhor eliminar o índice para o voltar a reconstruir mais tarde; Eliminar índices? DROP INDEX Prod_Loja; A eliminação de um índice não altera a base de dados, só afecta a velocidade a que as operações passam a ser realizadas; Quando se elimina uma tabela todos os índices a ela associados também são eliminados. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Monitorização Considerações Hashing Estrutura Interna de um Índice Estrutura Interna de um Índice B-Tree Martins Bento Álvares ROWID Bento ROWID Justino ROWID Antunes ROWID Canelas ROWID Lemos ROWID Ferreira ROWID SELECT * FROM Empregados WHERE nome = “Lemos” Matos Justino Martins ROWID Tavares Matos ROWID Tavares ROWID Soares ROWID Teixeira ROWID O sistema começa por usar o índice para determinar o ROWID (cadeia de caracteres em hexadecimal que representa o endereço do registo) do registo pretendido. Depois usa o ROWID para encontrar o registo. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 196 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Gestão dos Índices Apesar de acelerarem a consulta de informação, os índices penalizam a introdução e alteração de informação; A inserção de um registo obriga à introdução de um registo (ordenado) na tabela de índices; A alteração de um valor num atributo indexado obriga ao reordenamento do ficheiro de índices; A gestão de índices é fundamental mas perigosa (uma má gestão pode degradar muito o desempenho da base de dados) e nunca é definitiva. Depende do número de registos existentes e no tipo de acessos (consultas) mais frequentes. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Transacções Recuperação / Tolerância a Falhas Índices Bases de Dados Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Gestão dos Índices A construção de índices exige portanto: Constante monitorização Reconstrução de índices quando: - Índice apresenta estado inválido; - Após um número significativo de operações de DML. Actualização de informação estatística do índice (USER_INDEXES) analyze index <idx> compute statistics; Validação da estrutura do índice (INDEX_STATS) analyze index <idx> validate structure; Reconstrução de um índice por decisão do utilizador alter index <idx> rebuild; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 197 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Transacções Recuperação / Tolerância a Falhas Índices Definição Monitorização Considerações Estrutura Interna de um Índice Hashing Definição de Hashing Armazenar uma tabela num hash cluster é uma alternativa a armazenar a mesma tabela com um índice; A utilização do hashing tem também por objectivo melhorar a velocidade a que os dados são encontrados e armazenados; Tabela + Índice Tabela em Hash Cluster Objectivo do hash cluster: encontrar o registo pretendido num único acesso ao disco. A tabela e o índice estão guardados em segmentos diferentes, pelo que qualquer pesquisa necessita de pelo menos 2 acessos ao disco. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Desenho de um Esquema de Bases de Dados em SQL Server Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 198 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Sumário Sumário Desenho de um esquema de Bases de Dados em SQL Server Desenho de uma base de dados para um banco; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Contextualização Pretende-se desenvolver uma base de dados para um banco: Cada cliente pode ter várias contas, mas cada conta só tem associado um cliente; Cada conta está fixada numa agência, a qual pode ter várias contas; Cada cliente pode fazer vários empréstimos, mas cada empréstimo só está associado a um cliente; Cada empréstimo está fixado numa agência, a qual pode ter vários empréstimos concedidos; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 199 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML Contextualização Considere-se ainda o seguinte: Só existem 2 tipos de conta (ordem e prazo) O saldo de qualquer conta terá de ser sempre superior a 50€ O banco só aceita empréstimos superiores a 500.000€ mas inferiores a 5.000.000€ © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Modelo de E-R: Cliente 1 N Conta N 1 Agência 1 N Empréstimo N 1 Modelo de E-R constituído pelo clientes de um banco, assim como as contas e empréstimos desses clientes nas várias agências do banco. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 200 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo Relacional (nível lógico) Modelo Relacional: Clientes(codCliente, nome, profissao, localidade); Agencias(codAgencia, designacao, localidade); Contas Contas(numConta, tipoConta, codCliente, codAgencia, saldo); numConta Emprestimos(numEmprestimo, codCliente, codAgencia, valor); N tipoConta codCliente codAgencia N Clientes codClient e Agencia saldo 1 1 codAgencia 1 nome Emprestimos Profissao localidade N designacao localidade numEmprestimo codCliente codAgencia N valor © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML CREATE TABLE CREATE TABLE Contas ( numConta CHAR(10), tipoConta CHAR(5), codAgencia CHAR(3), codCliente CHAR(4) NOT NULL, saldo DECIMAL (10,2) NOT NULL, CONSTRAINT tipo_de_contas CHECK (tipoConta IN (‘ordem’, ‘prazo’)), CONSTRAINT valor_saldo CHECK (saldo >= 50), CONSTRAINT ch_prim_contas PRIMARY KEY (numConta), CONSTRAINT ch_estr_Agencias_Contas FOREIGN KEY (codAgencia) REFERENCES Agencias (codAgencia) ON UPDATE CASCADE ON DELETE SET NULL, CONSTRAINT ch_estr_Clientes_Contas FOREIGN KEY (cod_cliente) REFERENCES Clientes (cod_cliente) ON UPDATE CASCADE ON DELETE CASCADE ) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 201 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML CREATE TABLE CREATE TABLE Emprestimos ( numEmprestimo CHAR(5), codAgencia CHAR(3), codCliente CHAR(4) NOT NULL, valor INTEGER NOT NULL, CONSTRAINT valor_emprestimo CHECK (valor BETWEEN 500.000 and 5.000.000), CONSTRAINT ch_prim_emprestimos PRIMARY KEY (numEmprestimos) CONSTRAINT ch_estr_agencias_emprestimos FOREIGN KEY (codAgencia) REFERENCES Agencias (codAgencia) ON UPDATE CASCADE ON DELETE SET NULL, CONSTRAINT ch_estr_Clientes_emprestimos FOREIGN KEY (codCliente) REFERENCES Clientes (codCliente) ON UPDATE CASCADE ON DELETE CASCADE ) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML CREATE TABLE CREATE TABLE Agencias ( codAgencia CHAR(3), agencia VARCHAR(20) NOT NULL, localidade VARCHAR(10) NOT NULL, CONSTRAINT ch_prim_agencias PRIMARY KEY (codAgencia) ) CREATE TABLE Clientes ( codCliente CHAR(4), nome VARCHAR(30) profissao VARCHAR(10), localidade VARCHAR(10) NOT NULL, NOT NULL, CONSTRAINT ch_prim_clientes PRIMARY KEY (codCliente) ) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 202 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML INSERT, UPDATE, DELETE Inserir valores na tabela Clientes INSERT INTO CLIENTES VALUES (‘1’, ‘Ricardo Nuno’, ‘ Estudante’, ‘ Covilhã’) Inserir valores na tabela Clientes sem conhecer alguns dados: INSERT INTO CLIENTES (codCliente, nome, localidade) VALUES (‘2’, ‘Ana Marques’, ‘ Covilhã’); Actualizar a profissão do cliente anterior: UPDATE CLIENTES SET profissao = ‘Estudante’ WHERE numConta = ‘2’; Eliminar o registo anterior: DELETE FROM CLIENTES WHERE numConta = ‘2’; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML CREAT VIEW Definir uma view (GrandesContas) representando as linhas da tabela Contas cujo saldo é superior a, por exemplo, 500.000.00€ CREATE VIEW GrandesContas AS (SELECT * FROM Contas WHERE saldo > 50000000) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 203 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes (codCliente, nome) do banco? SELECT codCliente, nome FROM CLIENTES; Quais os clientes que residem na Covilhã? SELECT * FROM CLIENTES WHERE localidade = ‘Covilhã’; Quais os clientes (codCliente) com contas na agência 3? SELECT DISTINCT codCliente FROM CONTAS WHERE codAgencia = ‘3’; Dado que na agência podem existir clientes com várias contas, a forma de evitar a repetição do mesmo codCliente é a utilização da clausula DISTINCT; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes que residem na mesma localidade das agências onde possuem contas? SELECT CLIENTES.* FROM CLIENTES, CONTAS, AGENCIAS WHERE CLIENTES.codCliente = CONTAS.codCliente and Contas.codAgencia = Agencias.codAgencia and CLIENTES.localidade = AGENCIAS.localidade; Note-se a necessidade de evitar ambiguidades quando colunas de diferentes tabelas possuem identificadores iguais. Associamos por isso a esses atributos a identificação da respectiva tabela; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 204 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes com empréstimos de valor superior a 700.000€? SELECT CLIENTES.* FROM CLIENTES, EMPRESTIMOS WHERE (CLIENTES.codCliente = EMPRESTIMOS.codCliente) AND (EMPRESTIMOS.valor > 700000); Uma versão simplificada recorre a sinónimos (aliases) das duas tabelas: SELECT C.* FROM CLIENTES C, EMPRESTIMOS E WHERE (C.codCliente = E.codCliente) AND (E.valor > 700000); © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os nomes dos clientes com a mesma profissão que o cliente com codCliente = 4? SELECT C1.nome FROM CLIENTES C1, CLIENTES C2 WHERE (C1.profissao = C2.profissao) AND (C2.codCliente = ‘4’); Esta resolução necessita da utilização de sinónimos, não com o objectivo de simplificar, mas sim para distinguir entre diferentes instâncias da mesma tabela. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 205 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Listar as contas (numConta e saldo) da agência cujo codAgencia = ‘3’, por ordem decrescente do seu valor de saldo: SELECT numConta, Saldo FROM CONTAS WHERE codAgencia = ‘3’ ORDER BY saldo DESC A clausula ORDER BY permite ordenar o resultado por um, ou mais, dos seus atributos. Por predefinição, a ordenação é ascendente (ASC), a menos que seja indicado o contrário. Quantas contas existem em todas as agências do banco? SELECT COUNT(*) FROM CONTAS; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quantos clientes possuem contas na agência cujo codAgencia é 3? SELECT COUNT (DISTINCT codCliente) FROM CONTAS WHERE codAgencia = ‘3’; Desta forma, apesar de vários clientes poderem ter mais do que uma conta nesta filial, apenas são contabilizados uma vez; Listar o número de contas existentes em cada agência: SELECT codAgencia, COUNT (*) FROM CONTAS GROUP BY codAgencia; A tabela Contas é dividida em vários grupos, tantos quantas as diferentes agências, actuando a função Count isoladamente, sobre cada um destes grupos; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 206 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Para cada agência (codAgencia) com menos de 1000 contas, listar os valores máximo e mínimo dos saldos dessas contas, assim como o valor médio SELECT codAgencia, MAX(saldo), MIN(saldo), AVG(saldo) FROM CONTAS GROUP BY codAgencia HAVING COUNT(*) < 1000; A cláusula HAVING está associada à cláusula GROUP BY, sendo como que um filtro sobre esta última, ou seja, dos vários agrupamentos produzidos pela cláusula GROUP BY, apenas são processados pela função de agregação os que verificam a condição presente na cláusula HAVING; Quais os clientes cuja profissão é desconhecida? SELECT * FROM CLIENTES WHERE profissao IS NULL; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes (codCliente e nome) da agência codAgencia = 3? SELECT C.codCliente, C.nome FROM Contas CT, Clientes C WHERE (CT.codAgencia = ‘3’) AND (CT.codCliente = C.codCliente) UNION SELECT C.codCliente, C.nome FROM Emprestimos E, Clientes C WHERE (E.codAgencia = ‘3’) AND (E.codCliente = C.codCliente) A operação UNION elimina do final qualquer resultado duplicado. De notar que a operação UNION pode ser sempre substituída pela utilização de um OR entre as duas condições: © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 207 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes (codCliente e nome) que são simultaneamente depositantes e devedores da agência com codAgencia = 3? SELECT C.codCliente, C.nome FROM Contas CT, Clientes C WHERE (CT.codAgencia = ‘3’) AND (CT.codCliente = C.codCliente) INTERSECT SELECT C.codCliente, C.nome FROM Emprestimos E, Clientes C WHERE (E.codAgencia = ‘3’) AND (E.codCliente = C.codCliente) A operação INTERSECT também pode ser substituída pela utilização do AND © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes (codCliente e nome) da agência codAgencia = 3 que apenas são depositantes? SELECT C.codCliente, C.nome FROM Contas CT, Clientes C WHERE (CT.codAgencia = ‘3’) AND (CT.codCliente = C.codCliente) EXCEPT SELECT C.codCliente, C.nome FROM Emprestimos E, Clientes C WHERE (E.codAgencia = ‘3’) AND (E.codCliente = C.codCliente) EXCEPT corresponde à operação de diferença. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 208 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes (codCliente e nome) com pelo menos um empréstimo no banco? SELECT C.codCliente, C.nome FROM Clientes C WHERE EXISTS (SELECT * FROM Emprestimo E WHERE C.codCliente = E.codCliente) O operador EXISTS permite verificar se o resultado de uma subquestão é, ou não, o conjunto vazio. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais as agências (codAgencia, agencia) com depositantes residentes em Lisboa? SELECT A.codAgencia, A.designacao FROM Agencias A, Contas C WHERE (C.codAgencia = A.codAgencia) and C.codCliente IN (SELECT codCliente FROM Clientes WHERE localidade = ‘Lisboa’) O operador IN permite verificar se um elemento está contido num conjunto. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 209 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Quais os clientes cujo saldo total das suas contas é superior ao valor de qualquer empréstimo contraído neste banco? SELECT C.* FROM Clientes C WHERE (SELECT SUM(CT.saldo) FROM Contas CT WHERE CT.codCliente = C.codCliente) > ALL (SELECT valor FROM Emprestimos); O operador ALL permite verificar se uma condição é satisfeita para todos os elementos de um conjunto; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML SELECT Outra forma de resolver a mesma questão seria recorrendo à função de agregação MAX, para calcular o valor do maior empréstimo contraído no banco: SELECT C.* FROM Clientes C WHERE (SELECT SUM(CT.saldo) FROM Contas CT WHERE CT.codCliente = C.codCliente) > (SELECT MAX (valor) FROM Emprestimos); Para cada cliente (codCliente) apresentar o seu saldo total SELECT codCliente, SUM(saldo) FROM Contas GROUP BY codCliente; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 210 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML Contextualização A biblioteca da UBI tem por objectivo reorganizar a sua gestão. Em particular, pretende passar de um sistema centralizado para um sistema descentralizado em várias bibliotecas satélites; Os documentos da biblioteca, designados por publicações, têm associado a si, um tipo de publicação: livros, revistas, jornais, e-books, etc…; Enquadram-se numa categoria (exemplo: Informática; Medicina, etc…); E podem ser escritos por vários autores e quando aplicável editados por uma editora; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Contextualização Cada publicação é identificada por um código da publicação e compreende um conjunto de características: título; idioma; número de páginas; imagem da capa; formato; descrição da obra; ISBN; local de publicação; depósito legal e número total de publicações disponíveis no conjunto de todas as bibliotecas; Nenhuma das características é de preenchimento obrigatório (até porque as revistas não têm por exemplo um autor). Por outro lado, características como o ISBN que dizem respeito a livros, denominam-se por ISBN, mas entendemse por ISSN, quando por exemplo a publicação é uma revista; Em cada uma das bibliotecas satélites, deve existir pelo menos um (podendo existir obviamente mais) exemplar de cada publicação; Cada exemplar de uma publicação tem uma cota única que o identifica de forma unívoca; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 211 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML Contextualização Além do mais, cada exemplar tem como características a data de publicação; a data de aquisição; o número de edição; a possibilidade de ser uma publicação passível de ser ou não requisitada; um campo que valide se está ou não requisitado; um campo observações para descrever se a obra está danificada, etc… e um campo CD que indique se o recurso vem acompanhado de cd ou não; Apenas a data de aquisição é de preenchimento obrigatório e o campo cd deve ser entendido como DVD quando for o caso; Cada uma das bibliotecas deve ter conhecimento em tempo real, do número de publicações disponíveis; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Contextualização A inscrição dos leitores é válida em qualquer uma das bibliotecas. São identificados por um código e tem como características o nome, morada, contacto, email, etc…; Pertencem a um tipo de leitor, ao qual está associado um prazo de entrega. Por exemplo Professores tem direito a 5 dias, Alunos de Pós-Graduação 3 dias, etc… A biblioteca deverá guardar informação (ou seja o histórico) relativa à requisição das publicações por parte dos leitores. Assim, necessita registar a data de requisição, a data prevista de entrega e um campo que registe se o recurso já foi devolvido ou não; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 212 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Publicação vs tipoPublicação tipoPublicação 1 Os documentos da biblioteca, designados por publicações, têm associado a si, um tipo de publicação pertence N Publicação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Categoria tipoPublicação 1 Categoria 1 As publicações enquadram-se numa categoria pertence pertence N Publicação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 213 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Editora tipoPublicação 1 Categoria Editora 1 1 As publicações, quando aplicável, podem ser editadas por uma editora pertence pertence N Publicação N edita © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Autor N Categoria Editora 1 1 pertence pertence obra tipoPublicação 1 N Autor As publicações podem ser produzidas por um ou mais autores M Publicação N edita © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 214 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Levantamento de requisitos Desenvolvimento de uma Base de Dados para um Banco Desenho da Base de Dados Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo E-R (nível conceptual) Exemplar Autor Uma publicação tem um conjunto de exemplares N Editora N pertence 1 M Publicação N 1 tem Categoria 1 pertence obra tipoPublicação 1 edita N Exemplares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Levantamento de requisitos Desenvolvimento de uma Base de Dados para um Banco Desenho da Base de Dados Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo E-R (nível conceptual) Biblioteca Autor Deve existir pelo menos um exemplar de cada publicação em todas as bibliotecas. N Editora 1 N pertence 1 Biblioteca M Publicação N 1 tem Categoria pertence obra tipoPublicação 1 edita 1 tem N N Exemplares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 215 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Levantamento de requisitos Desenvolvimento de uma Base de Dados para um Banco Desenho da Base de Dados Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo E-R (nível conceptual) Leitor Autor A inscrição dos leitores é válida em qualquer uma das bibliotecas. N Editora N pertence 1 M Publicação N edita 1 Biblioteca 1 tem Categoria 1 pertence obra tipoPublicação 1 N N tem Exemplares N 1 requisição © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Leitor Bases de Dados Levantamento de requisitos Desenvolvimento de uma Base de Dados para um Banco Desenho da Base de Dados Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo E-R (nível conceptual) Leitor vs tipoLeitor Autor Um leitor pertence a um determinado tipo de leitor. N N pertence 1 Biblioteca M Publicação N 1 tipoLeitor 1 edita 1 tem N N Exemplares © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] tem Editora 1 tem Categoria pertence obra tipoPublicação 1 M requisição N N Leitor Bases de Dados 216 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Levantamento de requisitos Desenvolvimento de uma Base de Dados para um Banco Desenho da Base de Dados Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo E-R (nível conceptual) Autor N Editora pertence 1 M 1 Publicação N 1 edita Biblioteca tipoLeitor 1 tem N N Exemplares tem Categoria N tem 1 pertence obra tipoPublicação 1 M requisição © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca N N Leitor Bases de Dados Levantamento de requisitos Desenho da Base de Dados DDL e DML Modelo Relacional (nível lógico) Autor Publicacao Categoria codPublicacao Titulo Idioma numPags imagemCapa Formato descricaoObra numPublDisp ISBN depositoLegal localPubl codCategoria codTipoPubl codCategoria desCategoria tipoPublicacao codTipoPubl desTipoPubl Editora codEditora desEditora Morada Contacto Email Edita codPublicacao codEditora Obra codAutor nome Email codAutor tipoLeitor codTipoLeitor desTipoLeitor prazoEntrega codPublicacao Exemplar Leitor Cota Obs dataAquisicao dataPublicacao numEdicao possbRequisitar Cd Requisitado codPublicacao codBiblioteca codLeitor Nome Morada Contacto Email codTipoLeitor Biblioteca Requisicao Cota codLeitor dataRequisicao dataEntrega Devolvido codBiblioteca Morada Contacto Email © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 217 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Reporting Ricardo Campos ([email protected]) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados SQL Server BI Development Studio O SQL Server, é um sistema completo de business intelligence, que oferece as funcionalidades, as ferramentas, e a capacidade para criar aplicações de análise quer clássicas, quer inovadoras. Integração e transformação dos dados; Análise, armazenamento e pesquisa dos dados; Report; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 218 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. SQL Server BI Development Studio O acesso ao SQL Server Business Intelligence Development Studio é feito através do menu Start – Programs – Microsoft Sql Server 2005; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Criação de um report Criação de um report baseado na base de dados AdventureWorks Criação de um Report Criar um Report Server Project; Criar um Report; Definir a conexão; Definir uma query para o report; Adicionar uma tabela; Prever o report; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 219 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Criação de um report Criar um Report Server Project; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Criação de um report Criar um report; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 220 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Criação de um report Definir a conexão; Esta conexão assume que o BI Development Studio, o report server, e a base de dados adventure works estão todas instaladas no seu pc e que tem permissões para aceder à base de dados; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Criação de um report Definir uma query para o report; Adicionar uma tabela Depois da definição da query é possível definir o layout, o qual consiste de tabelas, imagens e outros itens © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 221 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Criação de um report Depois de seleccionar table, clique na área de desenho (automaticamente é criada uma tabela com 3 colunas) © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Criação de um report Arraste para a linha do meio (2.ª linha) os campos Order Date, SalesOrderNumber, TotalDue Define-se desta forma o layout do report © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 222 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Criação de um report Prever o report; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Grupos, Ordenação e Formatação Grupos, Ordenação e Formatação Adicionar um grupo; Adicionar uma nova coluna; Ordenar os dados; Adicionar um subtotal; Aplicação de formatos; Prever o report; Publicar o report; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 223 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Grupos, Ordenação e Formatação Adicionar um grupo; Adicionar um grupo à tabela que agrupa e ordena os dados por vendedor. Adicionar um grupo organiza informação sobre as vendas em unidades lógicas mostrando informação sobre as vendas para cada vendedor; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Grupos, Ordenação e Formatação Adicionar um grupo que arranja os dados das vendas pelo nome do vendedor; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 224 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Grupos, Ordenação e Formatação Adicionar uma nova coluna; Adicionámos uma nova coluna que mostra o nome do vendedor; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Grupos, Ordenação e Formatação Ordenar os dados; No canto superior esquerdo seleccionar propriedades; © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 225 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Grupos, Ordenação e Formatação Adicionar um subtotal Adicionámos uma expressão que calcula a soma total das vendas efectuada por cada vendedor © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Grupos, Ordenação e Formatação Aplicação de formatos © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 226 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Grupos, Ordenação e Formatação Clique em ….. © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Grupos, Ordenação e Formatação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 227 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Grupos, Ordenação e Formatação © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Bases de Dados Grupos, Ordenação e Formatação Seleccione as seguintes linhas e carregue em Bold © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 228 Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides. Grupos, Ordenação e Formatação Prever o report © Ricardo Campos [ h t t p : / / w w w . c c c . i p t . p t / ~ r i c a r d o ] Ricardo Campos [http://www.ccc.ipt.pt/~ricardo/] Bases de Dados 229