Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server Linguagem SQL. Sql Server BI Development Studio. 457 slides.

Tamanho: px
Começar a partir da página:

Download "Campos, Ricardo. (2007). Apresentação de Bases de Dados. Microsoft SQL Server 2005. Linguagem SQL. Sql Server BI Development Studio. 457 slides."

Transcrição

1 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Ricardo Campos 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: O seu uso, de parte ou da totalidade, pressupõe a utilização da seguinte referência: Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Server Sql Server BI Development Studio. 457 slides. A sua disponibilização em formato PPT pode ser feita mediante solicitação ( ricardo.campos@ipt.pt) 1

2 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 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 Bibliografia Recursos on-line ( e SQL): Tutoriais, Noções da, Linha de Código SQL, SQL Course Interactive, SQL for Web Nerds, 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. 2

3 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Bibliografia Recursos on-line (SQL Server ): Sql Server Developer Center, Newsgroups, SQL Server Magazine, SQL Server Database Help, Data Generation Tool, SQL Server Central, SQL Server 2005 Books, B133-29C1E0B6585F&displaylang=en 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. Sumário Objectivos Parte Teórica Parte Prática Programa Bibliografia 3

4 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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. 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; 4

5 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Programa Conceitos de ; Níveis de Análise do Sistema de Informação; Ficheiros vs SGBDs; Tipos de. 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. Programa Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server; Interface; Criar ; Criar Tabelas; Criar Índices; Executar Queries; Executar Store Procedures; Realizar Backups. 5

6 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Programa Operações Binárias; Operações Unárias. 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. 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. 6

7 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Programa Desenho de um esquema de em SQL Server Desenho de uma base de dados para um banco; Conceitos de Bases de Dados Ricardo Campos 7

8 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Sumário Sumário Conceitos de ; Níveis de Análise do Sistema de Informação; Ficheiros vs SGBDs; Tipos de. Motivação Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Motivação Definição Aplicações 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. 8

9 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de O que é uma Base de Dados? Motivação Definição Aplicações 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. Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Aplicações de Motivação Definição Aplicações 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. 9

10 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Nível Conceptual, Lógico e Físico Nível Conceptual (Modelo E-R) Nível Lógico (Modelo Relacional) Nível Físico Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Gestão de Ficheiros vs SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de 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 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 Bases de Dados 10

11 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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. Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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; 11

12 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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. Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de Definição de Sistemas de Gestão de (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 Bases de Dados 12

13 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Características dos SGBDs Sistema de Gestão de Ficheiros Sistema de Gestão de 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. Vantagens dos SGBDs Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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. 13

14 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Vantagens dos SGBDs Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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. Exemplos de SGBDs Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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. 14

15 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Utilizadores de um SGBD Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de Utilizadores Nível Básico Programadores de Aplicações Utilizadores Nível Avançado Administradores da Base de Dados usam escrevem usam usam Programas de Interface Programas Ferramentas de Análise Ferramentas de Administração Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Utilizadores de um SGBD Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de 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. 15

16 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de Funções do Administrador de 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). Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Arquitectura de um SGBD Tipos de Sistema de Gestão de Ficheiros Sistema de Gestão de utilizadores nível básico programadores de aplicações Utilizadores Utilizadores nível avançado DBA programas de interface chamadas de rotina consultas esquema de bases de dados pré-compilador da linguagem de manipulação de dados processador de consultas compilador da linguagem de definiçã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 16

17 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Arquitectura Cliente/Servidor Sistema de Gestão de Ficheiros Sistema de Gestão de Servidor BD Servidor BD Servidor Rede Rede Aplicação Cliente Aplicação Cliente Aplicação Aplicação Arquitectura de três camadas Aplicações web recorrendo a software intermediário. Arquitectura de duas camadas Programas clientes que comunicam com a base de dados. Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Vantagens Arquitectura Cliente/Servidor Sistema de Gestão de Ficheiros Sistema de Gestão de 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. 17

18 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Distribuídas Sistema de Gestão de Ficheiros Sistema de Gestão de Servidor Servidor BD Servidor 1 BD 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. Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Contextualização Histórica Hierárquico Em Rede Relacional 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). 18

19 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de 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 ; Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de 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 Filipa Sítio Fechado Aljezur António Glorioso Lisboa António Glorioso Lisboa

20 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Modelo Hierárquico Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Hierárquico Em Rede Relacional 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 Aljezur António Glorioso Lisboa Filipa Sítio Fechado Aljezur Modelo Hierárquico Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Hierárquico Em Rede Relacional Cliente Modelo Hierárquico 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 20

21 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Modelo em Rede Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Hierárquico Em Rede Relacional Os dados são representados por colecções de registos e os relacionamentos por ligações: Nuno Terlamonte Aljezur 1 55 Filipa Sítio Fechado Aljezur António Glorioso Lisboa Modelo Relacional Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de Hierárquico Em Rede 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 cidade número saldo nome Cliente M possui N Conta Modelo Relacional (Nível Lógico): codcliente Nome Rua Cidade 100 Nuno Terlamonte Aljezur 101 Filipa Sítio Fechado Aljezur 102 António Glorioso Lisboa codcliente numconta numconta Saldo

22 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Níveis de Análise do Sistema de Informação Ficheiros vs SGBDs Tipos de 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 Modelo Relacional Ricardo Campos (ricardo.campos@ipt.pt) 22

23 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; 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 Relações Existentes Tipos de Associações Definição do Modelo E-R (Entidade Relação) Tipos de Participaçã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 N obra Publicação 23

24 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Definição do Modelo E-R (Entidade Relação) Tipos de Participaçã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; 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 Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Tipos de Participação 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 Cor 24

25 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Tipos de Participação Dê um exemplo de entidades: Aluno Disciplina 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 Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Tipos de Participação 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 Titulo Número de Páginas Ano de Publicação 25

26 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Tipos de Participação Dê um exemplo de atributos: n.º aluno nome código Designação morada Aluno Disciplina 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 Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Tipos de Participação 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; 26

27 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Entidade, Atributos, Associações e Chaves Tipos de Participação Dê um exemplo de associação: n.º aluno nome código Designação morada Aluno inscrito Disciplina Chaves Primárias 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 Relações Existentes Tipos de Associações Tipos de Participação 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; Nome não é chave porque podem existir dois clientes com o mesmo nome; Número Nome Morada 001 João Rua a 013 João Rua b 27

28 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Chaves Primárias Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação Fila Lugar Ocupado? Apenas os atributos {Fila,Lugar} garante que identificamos um registo; A 1 sim A 2 não B 1 não Número Nome Morada BI 001 João NULL Ana NULL Número e BI são chaves candidatas. É obrigatório optar por uma única chave; Chaves Primárias 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 Relações Existentes Tipos de Associações Tipos de Participação 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) registo / linha / ocorrência / instância 28

29 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Chaves Estrangeiras Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação 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; Chaves Estrangeiras 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 Relações Existentes Tipos de Associações Tipos de Participação 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, ) 29

30 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Integridade de Entidade e Integridade Referencial Tipos de Participação Integridade de Entidade Nenhum componente de chave primária de uma tabela pode conter nulos. 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 Tabela Jogadores IdJogador Nome DataNasc J1 Vaz 08/10/1970 J2 Inácio 20/08/1972 J3 Paulo 20/01/1977 J4 Pinho 15/02/ Tabela Participações IdJogador IdJogo Golos J1 1 1 J2 2 0 J3 3 2 J 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. Exercício 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 Relações Existentes Tipos de Associações Tipos de Participação 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 nome código nome morada Aluno leccionar Professor habilitações 30

31 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Tipos de relações existentes Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação 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; 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 Tipos de relações existentes Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação 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 31

32 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Tipos de relações existentes Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação Relação Binária (as mais comuns) Possui duas entidades que são relacionadas entre si; Deputados pertencem Grupos Parlamentares 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 Tipos de relações existentes Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação Relação Ternária (complexas) Possui três entidades que se relacionam entre si; Actores Filmes Director 32

33 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 3 Tipos de Associações Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações Tipos de Participação 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; 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 2 Tipos de Participação Representação Gráfica Conceito de Chaves Tipos de Relações Existentes Tipos de Associações 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 B Entidade Obrigatória 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; 33

34 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Associação 1:1 nenhuma Entidade Obrigatória Tipos de Participação Dê um exemplo para cada um dos seguintes elementos: Um para Um (1:1) Homem 1 1 Casamento Mulher Um Homem está casado com uma Mulher Uma Mulher está casada com um Homem H M H1 M1 H2 M2 H3 M3 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 Relações Existentes Tipos de Associações Associação 1:1 uma Entidade Obrigatória Tipos de Participação Outro Exemplo de Um para Um (1:1) Empregado 1 1 Tem Carro Um Carro pertence obrigatoriamente a um Empregado Mas nem todo o Empregado tem um Carro E E1 C C1 E2 C2 E3 E4 C3 34

35 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Associação 1:1 as duas Entidades Obrigatórias Tipos de Participação Outro Exemplo de Um para Um (1:1) Empregado 1 1 Tem Carro Um Empregado tem obrigatoriamente um Carro Um Carro pertence obrigatoriamente a um Empregado E C E1 C1 E2 C2 E3 C3 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 Relações Existentes Tipos de Associações Associação 1:N nenhuma Entidade Obrigatória Tipos de Participação Um para Muitos (1:N) Enfermaria 1 N Tem Paciente Uma Enfermaria têm vários Pacientes Um Paciente pertence a uma só Enfermaria E P E1 P1 P2 E2 P3 35

36 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relações Existentes Tipos de Associações Associação 1:N Entidade do lado N Obrigatória Tipos de Participação Um para Muitos (1:N) Empresa 1 N Trabalhar Empregado Uma Empresa têm vários Empregados a trabalhar Um Empregado trabalha obrigatoriamente numa Empresa A B A1 B1 B2 A2 B3 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 Relações Existentes Tipos de Associações Associação M:N nenhuma Entidade Obrigatória Tipos de Participação Muitos para Muitos (M:N) Autor M Escreveu Pertence N Livro Um Autor escreveu vários Livros Um Livro pertence a vários Autores A L A1 L1 A2 L2 A3 L3 36

37 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Contextualização Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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: 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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 1 Casamento Mulher Um Homem está casado com uma Mulher Uma Mulher está casada com um Homem H M H1 M1 H2 M2 H3 M3 37

38 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional Relação 1:1 nenhuma Entidade Obrigatória Homem (BIHomem, nome, morada, ) 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, ) Transf. Modelo E-R para modelo relacional Quando se transforma um modelo conceptual (E-R) para um modelo lógico (relacional), é necessário realizar um conjunto de alterações. 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, ) 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 Relação 1:1 uma Entidade Obrigatória Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional Outro Exemplo de Um para Um (1:1) Empregado 1 1 Tem Carro Um Carro pertence obrigatoriamente a um Empregado Mas nem todo o Empregado tem um Carro E E1 C C1 E2 C2 E3 E4 C3 38

39 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relação 1:1 uma Entidade Obrigatória Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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, ) 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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 1 Tem Carro Um Empregado tem obrigatoriamente um Carro Um Carro pertence obrigatoriamente a um Empregado E C E1 C1 E2 C2 E3 C3 39

40 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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 N Tem Paciente Uma Enfermaria têm vários Pacientes Um Paciente pertence a uma só Enfermaria E P E1 P1 P2 E2 P3 40

41 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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, ) 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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 N Trabalhar Empregado Uma Empresa têm vários Empregados a trabalhar Um Empregado trabalha obrigatoriamente numa Empresa A B A1 B1 B2 A2 B3 41

42 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional 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, ) 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 Relação M:N Obrigatoriedade Irrelevante Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional Muitos para Muitos (M:N) Autor M Escreveu Pertence N Livro Um Autor escreveu vários Livros Um Livro pertence a vários Autores A L A1 L1 A2 L2 A3 L3 42

43 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Relação M:N Obrigatoriedade Irrelevante Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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, ) Resumo 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 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. Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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; 43

44 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Exercício 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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 Livro M Requisição N Utente Exercício 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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.. 1 N Livro ISBN título codeditor 1 N Requisição ISBN codleitor datareq. N 1 Utente codleitor nome

45 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Exercício 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 Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional 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; 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 Modelo E-R (nível conceptual) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional Modelo de E-R: Cliente 1 N Conta N 1 1 N Empréstimo N Agência 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. 45

46 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 DDL e DML Modelo Relacional (nível lógico) Transformação do modelo E-R (ass. 1:1) para modelo Relacional Transformação do modelo E-R (ass. 1:N) para modelo Relacional Transformação do modelo E-R (ass. M:N) para modelo Relacional Modelo Relacional: Clientes(codCliente, nome, profissao, localidade); Agencias(codAgencia, designacao, localidade); Contas(numConta, tipoconta, codcliente, codagencia, saldo); Emprestimos(numEmprestimo, codcliente, codagencia, valor); Clientes codclient e nome Profissao localidade 1 N N Contas numconta tipoconta codcliente codagencia N saldo Emprestimos numemprestimo codcliente codagencia valor N 1 1 Agencia codagencia designacao localidade 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 da Normalização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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; 46

47 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Limitações das monotabelas Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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 Alicate A /03/ Santos Porto Martelo M /03/ Costa Coimbra Serra S /03/ Castro Faro Tesoura T /03/ Silva Lisboa Martelo M /04/ Silva Lisboa Tesoura T /04/ Costa Coimbra Alicate A /04/ Costa Coimbra Serra S /04/ Castro Faro Alicate A /04/ 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 Limitações das monotabelas Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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; 47

48 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 da Normalização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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. 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 As 3 formas normais Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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; 48

49 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Esquema Geral da Normalização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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 Modelo E-R (Nível Conceptual) Objectivos Modelo Relacional (Nível Lógico) 1FN, 2FN, 3FN Normalização de uma Base de Dados Projecto Normalização de Escola Estratégias para a concepção de uma Base de Dados 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 49

50 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Esquema Geral da Normalização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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 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 Contextualização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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; 50

51 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Contextualização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Actualmente já existe uma base de dados que guarda toda a informação numa tabela: idaluno Nome Morada Disciplinas Professor Nota A1 João Lisboa 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: 1FN 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 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; Atributos Elementares Conjunto de elementos indivisíveis (exemplo: Data de Nascimento, Peso, etc ) Conjunto de Atributos Uma lista de valores para um dado atributo 51

52 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 1FN 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 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 A2 Ana Algés 4 Física 4 Prof.ª Ana 4 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, Disciplina, idprofessor, Professor, nota) 2FN 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 Definição Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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 52

53 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 2FN 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 Exemplo de dependência funcional (X Z) Tome-se como referência a tabela A (x,y,z,w): x y z w X Z; Para um dado valor do atributo X, o valor do atributo Z é sempre o mesmo; 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; 2FN 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 Exemplo de dependência funcional elementar {X,Y} W Tome-se como referência a tabela A (x,y,z,w): 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; 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; 53

54 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 2FN 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 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 A2 Ana Algés 4 Física 4 Prof.ª Ana 4 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 2FN 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 Tabelas na 2.ª Forma Normal: Chave Chave Chave idaluno Nome Morada idaluno iddisciplina Nota iddisciplina Disciplina idprofessor Professor A1 João Lisboa A Matemática 1 Prof. Carlos A2 Ana Algés A Economia 2 Prof. Paulo A3 Pedro Sintra A Direito 3 Prof. José A4 Filipa Lisboa A Física 4 Prof.ª Ana A2 4 4 A3 1 8 A A A

55 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 3FN 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 Definição Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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 3FN 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 Tabelas na 3.ª Forma Normal: Chave Chave iddisciplina Disciplina idprofessor idprofessor Professor 1 Matemática 1 2 Economia 2 3 Direito 3 4 Física 4 1 Prof. Carlos 2 Prof. Paulo 3 Prof. José 4 Prof.ª Ana 55

56 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Resumo 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 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 nome.. 1 N Nota idaluno iddisciplina nota N 1 Disciplina iddisciplina disciplina idprofessor N 1 Professor idprofessor Professor.... 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 Contextualização Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica Pretende-se automatizar o registo de compras num hipermercado: - Os clientes fazem encomendas - As encomendas contêm produtos 56

57 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 1FN 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 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 , 2, 3 A, B, C 12, 10, Ana Rua B , 3 A, C 16, 18 1.ª Forma Normal 1FN 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 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 Qtd 12 2 João Rua A A João Rua A B João Rua A C Ana Rua B A Ana Rua B C 18 Encomenda (numencomenda, numcliente, Cliente, endcliente, dataenc, codproduto, Produto, Qtd) 57

58 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 2FN 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 Definição Objectivos 1FN, 2FN, 3FN Projecto Normalização de Escola Projecto Normalização de Factura Electrónica 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 A João Rua A B João Rua A C Ana Rua B A Ana Rua B C 18 2FN 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 Chave Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc 12 2 João Rua A Ana Rua B Encomenda (numencomenda, numcliente, Cliente, endcliente, dataenc) Chave Chave Nº encomenda codproduto Qtd Linha_Encomenda (numencomenda, codproduto, Qtd) codproduto Produto 1 A 2 B 3 C Produto (codproduto, Produto) 58

59 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 3FN 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 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 12 2 João Rua A Ana Rua B Encomenda Nº encomenda codproduto Qtd Linha_Encomenda Chave codproduto Produto 1 A 2 B 3 C Produto 3FN 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 Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc 12 2 João Rua A Ana Rua B 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 Nº encomenda Nº cliente DataEnc Encomenda (numencomenda, numcliente, dataenc) Chave Nº cliente Cliente Endereço Cliente 2 João Rua A 3 Ana Rua B Cliente (numcliente, Cliente, endcliente) 59

60 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Resumo 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 Modelo E-R (nível conceptual) Nº encomenda Nº cliente Cliente Endereço Cliente DataEnc codproduto Produto Qtd 12 2 João Rua A A João Rua A B João Rua A C Ana Rua B A Ana Rua B 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 Linha_Encom Tem endas N Encomendas N Pertence 1 Cliente Resumo 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 Produto M Linha_Encom Tem endas N Encomendas N Pertence 1 Cliente Modelo Relacional (nível lógico) Chave codproduto Produto 1 A 2 B 3 C Produto Chave Nº encomenda codproduto Qtd Linha_Encomenda Chave Nº encomenda Nº cliente DataEnc Encomenda Chave Nº cliente Cliente Endereço Cliente 2 João Rua A 3 Ana Rua B Cliente 60

61 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Resumo 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 Desta forma obtemos as seguintes tabelas normalizadas (3FN): Produto (codproduto, Produto) Linha_Encomenda (numencomenda, codproduto, Qtd) Encomenda (numencomenda, numcliente, dataenc) Cliente (numcliente, Cliente, endcliente) 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 Top-Down vs Bottom-Up Levantamento de requisitos e Desenho de uma Base de Dados 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; 61

62 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Top-Down vs Bottom-Up Levantamento de requisitos e Desenho de uma Base de Dados 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. Modelo E-R (Nível Conceptual) Modelo Relacional (Nível Lógico) Normalização de uma Base de Dados Top-Down vs Bottom-Up Levantamento de requisitos e Desenho de uma Base de Dados Estratégias para a concepção 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; 62

63 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenho de um esquema de Bases de Dados Ricardo Campos Desenho de uma Base de Dados para uma biblioteca 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; 63

64 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; Desenho de uma Base de Dados para uma biblioteca 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; 64

65 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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, , 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; Desenho de uma Base de Dados para uma biblioteca 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.; 65

66 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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.; Desenho de uma Base de Dados para uma biblioteca 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; 66

67 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; Desenho de uma Base de Dados para uma biblioteca 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; 67

68 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 pertence Os documentos da biblioteca, designados por publicações, têm associado a si, um tipo de publicação N Publicação Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Categoria tipopublicação 1 pertence As publicações enquadram-se numa categoria Categoria 1 pertence N Publicação 68

69 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 pertence As publicações, quando aplicável, podem ser editadas por uma editora Categoria 1 pertence N Publicação N Editora 1 edita Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) tipopublicação 1 pertence Autor obra N Autor As publicações podem ser produzidas por um ou mais autores Categoria 1 pertence N M Publicação N Editora 1 edita 69

70 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) Autor Exemplar tipopublicação 1 pertence obra N Uma publicação tem um conjunto de exemplares Categoria 1 pertence N M Publicação 1 N Editora 1 edita tem N Exemplares Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) tipopublicação 1 pertence Autor obra N Biblioteca Deve existir pelo menos um exemplar de cada publicação em todas as bibliotecas. Categoria 1 pertence N M Publicação 1 N Editora 1 edita tem Biblioteca 1 N tem N Exemplares 70

71 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) tipopublicação 1 pertence Autor obra N Leitor A inscrição dos leitores é válida em qualquer uma das bibliotecas. Categoria 1 pertence N M Publicação 1 N Editora 1 edita tem Biblioteca 1 N tem N Exemplares M requisição N Leitor Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Conceptual (modelo E-R) tipopublicação 1 pertence Autor obra N Leitor vs tipoleitor Um leitor pertence a um determinado tipo de leitor. Categoria 1 pertence M N Publicação N 1 tipoleitor 1 Editora 1 edita tem tem Biblioteca 1 N tem N Exemplares M requisição N N Leitor 71

72 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenho de uma Base de Dados para uma biblioteca Levantamento de requisitos Desenho da Base de Dados Modelo Lógico (modelo relacional) Categoria codcategoria descategoria tipopublicacao codtipopubl destipopubl Editora codeditora deseditora Morada Contacto Publicacao codpublicacao Titulo Idioma numpags imagemcapa Formato descricaoobra numpubldisp ISBN depositolegal localpubl codcategoria codtipopubl codeditora Biblioteca codbiblioteca Morada Contacto Obra codautor codpublicacao Exemplar Cota Obs dataaquisicao datapublicacao numedicao possbrequisitar Cd Requisitado codpublicacao codbiblioteca Autor codautor nome Requisicao Cota codleitor datarequisicao dataentrega Devolvido tipoleitor codtipoleitor destipoleitor prazoentrega Leitor codleitor Nome Morada Contacto codtipoleitor Microsoft SQL Server 2005 Ricardo Campos 72

73 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Sumário Sumário Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server; Interface; Criar ; Criar Tabelas; Criar Índices; Executar Queries; Executar Store Procedures; Realizar Backups SQL Server 2005 Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 73

74 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Existem 6 versões disponíveis: Microsoft SQL Server 2005 Versões do Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups SQL Server 2005 Express Edition; Excelente forma de começar a trabalhar com o SQL Server. Gratuito ( 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; Microsoft SQL Server 2005 Versões do Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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. 74

75 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Iniciar o Server 2005 Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Autenticação de Utilizadores Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: 75

76 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 Autenticação de Utilizadores O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Autenticação de Utilizadores Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; 76

77 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Interface do Microsoft SQL Server Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Registered Servers O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 77

78 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Registered Servers Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Através do item new é possível registrar um novo servidor: Registered Servers O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; 78

79 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Object Explorer Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; Object Explorer O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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): 79

80 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Server Objects Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 Replication e Management O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 ) 80

81 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Security Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; Security O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups No Login é possível adicionar/remover utilizadores bem como atribuir server roles: 81

82 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Security Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Server roles são privilégios predefinidos que não podem ser nem adicionados nem removidos: Security O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 82

83 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Security Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 Security O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; 83

84 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Security Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; Security O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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. 84

85 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Security Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: Security O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 85

86 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Security Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Depois seleccionar as respectivas permissões: O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 86

87 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar uma base de dados no SQL Server Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups É possível criar uma base de dados e inclusive especificar o dono da base de dados: 87

88 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar uma base de dados no SQL Server Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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. Generate Scripts O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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) 88

89 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 Criar tabelas no SQL Server O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar tabelas temporárias no SQL Server Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: 89

90 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Tipos de Dados Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 é ,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 Tipos de Dados O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Tipo Descrição Tamanho Int permite armazenar números inteiros entre e bytes SmallInt permite armazenar números inteiros entre e bytes Tinyint permite armazenar números não-negativos de 0 a byte Money usado para valores monetários permite valores entre ,5808 e ,5807 (922 trilhões). 8 bytes Smallmoney permite valores entre ,3648 e ,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é caracteres 2 bytes NText DateTime SmallDateTime Timestamp ma versão reduzida do tipo Text que permite armazenar até caracteres 1 byte o tipo datetime armazena valores contendo a data e hora, entre 1º de janeiro de 1753 e 31 de dezembro de bytes o tipo smalldatetime ocupa menos espaço e armazena datas e horas de 1º de janeiro de 1900 até 6 de junho de bytes não pode ser alterada pelo utilizador. É definida automaticamente com a data e hora actual quando a linha é inserida ou actualizada; 90

91 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Chave-Primária Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Atribuir chave-primária; Definir Chaves Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Possibilidade de atribuir automaticamente (sem intervenção do utilizador) um valor a uma chave, por exemplo um cliente: 91

92 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Valores por Defeito Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 Computed Column O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups É 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; 92

93 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Relações entre as tabelas (Chaves Estrangeiras) Backups 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: O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Relações entre as tabelas (Chaves Estrangeiras) Backups Estabelecer a relação: As chaves podem ser visualizadas no object explorer: 93

94 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Relações entre as tabelas (Chaves Estrangeiras) Backups 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 O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Relações entre as tabelas (Chaves Estrangeiras) Backups 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 94

95 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Relações entre as tabelas (Chaves Estrangeiras) Backups É 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: Definição de Regras O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Limitam a gama de valores que o utilizador pode introduzir na coluna 95

96 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Definição de Regras Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Outros exemplos: DateEntered <= getdate(), limita o valor introduzido para uma data inferior à actual; LimiteCredito between 0 and 10000; O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Modificar uma Tabela e Introduzir Valores Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Já depois de definida a estrutura da tabela é possível modificá-la: E introduzir valores através do item Open Table 96

97 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Definição de Índices Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Í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; Definição de Índices O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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. 97

98 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Definição de Índices Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups É possível definir um índice quando estamos a criar uma tabela: Carregar no item columns para definir quais as colunas que integram o índice: Executar uma Query O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Botão direito do rato em cima da respectiva base de dados: Ou no menu: 98

99 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Executar uma Query Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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 Query SQL Os resultados na Grid: Resultados em formato de texto Visualizar as mensagens Executar uma Query O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Determinadas queries (as mais simples) também podem ser feitas com recurso a um ambiente gráfico 99

100 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Produzir Estatísticas Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: Store Procedures O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: 100

101 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Store Procedures Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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; Efectuar Backups O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures 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; 101

102 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Efectuar Backups Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures 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; Efectuar Backups O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures 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; 102

103 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Efectuar Backups Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures 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) Efectuar Backups O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures 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. 103

104 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Efectuar Backups Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Outra possibilidade é ir directamente pela base de dados em que se quer fazer backup: Agendar um Backup O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: 104

105 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Agendar um Backup Microsoft SQL Server 2005 O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups O próximo passo passa por arrastar o item BackUp Database Task para a área de trabalho; Agendar um Backup O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Configurar a janela, especificando qual a base de dados que se quer fazer backup, se é para ir adicionando a um ficheiro já existente, etc 105

106 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Microsoft SQL Server 2005 Restaurar a Base de Dados O que é o SQL Server? Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups 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: Restaurar a Base de Dados O que é o SQL Server? Microsoft SQL Server 2005 Iniciar o SQL Server Interface Criar Criar Tabelas Criar Índices Executar Queries Executar Store Procedures Backups Outra possibilidade é ir directamente pela base de dados que ser quer restaurar: 106

107 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL e Sumário Sumário Operações Binárias; Operações Unárias. 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; 107

108 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Operações Binárias e Unárias Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção 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; Operações Binárias e Unárias Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção No Modelo Relacional a informação é representada através de relações (ou tabelas). A (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 108

109 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL União Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção R S União ( ) A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 A B C a1 b2 c3 a2 b2 c2 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 União Empresa Operações Binárias União Divisão Intersecção Diferença Produto Cartesiano Junção Cliente Operações Unárias Projecção Selecção Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Vanguarda Rua dos Sábios Guarda Nabeiro SA Rua de Aviz Tomar Serra e Sol Ldª Rua dos Mestres Covilhã Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Castelo Rua do Castelo Évora Nabeiro SA Rua de Aviz Tomar Empresa Cliente = SELECT * FROM Empresa UNION SELECT * FROM Cliente; Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Vanguarda Rua dos Sábios Guarda Nabeiro SA Rua de Aviz Tomar Serra e Sol Ldª Rua dos Mestres Covilhã Castelo Rua do Castelo Évora

110 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Intersecção Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecçã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 Intersecção Operações Binárias União Divisão Intersecção Diferença Produto Cartesiano Junção Operações Unárias Projecção Selecção Empresa Cliente Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Vanguarda Rua dos Sábios Guarda Nabeiro SA Rua de Aviz Tomar Serra e Sol Ldª Rua dos Mestres Covilhã Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Castelo Rua do Castelo Évora Nabeiro SA Rua de Aviz Tomar SELECT * FROM Empresa INTERSECT SELECT * FROM Cliente; Empresa Cliente = Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Nabeiro SA Rua de Aviz Tomar

111 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Diferença Operações Binárias União Intersecção Diferença Divisão Produto Cartesiano Junção Operações Unárias Projecção Selecção 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 Diferença Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção Empresa Cliente Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Vanguarda Rua dos Sábios Guarda Nabeiro SA Rua de Aviz Tomar Serra e Sol Ldª Rua dos Mestres Covilhã Empresa Morada Cidade Contacto Somos Ldª Rua dos Coxos Guarda Castelo Rua do Castelo Évora Nabeiro SA Rua de Aviz Tomar Em ORACLE: SELECT * FROM Empresa MINUS SELECT * FROM Cliente; Em Sql Server: SELECT * FROM Empresa EXCEPT SELECT * FROM Cliente; Empresa - Cliente = Empresa Morada Cidade Contacto Vanguarda Rua dos Sábios Guarda Serra e Sol Ldª Rua dos Mestres Covilhã

112 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Divisão R Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção S Operações Unárias Projecção Selecção Divisão ( ) A a1 a2 a3 A divisão de uma relação R por uma relação S produz o quociente das duas relações. O quociente: B b1 b2 b1 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 B b1 A a1 a3 Divisão Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecçã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 Professores NomeProf Ricardo Hugo Ricardo Paulo Hugo Célia Célia NomeDisciplina Segurança em Redes Informáticas Matemática e Estatística Segurança em Redes Informáticas Matemática e Estatística Disciplinas NomeDisciplina Segurança em Redes Informáticas Matemática e Estatística Professores Disciplinas Ricardo: select nomeprof from Professores p, Disciplinas Ricardo d where p.nomedisciplina = d.nomedisciplina group by nomeprof having count(*) > 1 Disciplinas Ricardo NomeDisciplina Segurança em Redes Informáticas Nome Ricardo Hugo 112

113 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Produto Cartesiano Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção R T A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 D d1 d2 E e1 e2 Produto Cartesiano (-) O esquema resultante é a soma das tabelas base, através da combinação das duas relações. A B C D E R x T = 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 Produto Cartesiano Operações Binárias União Divisão Intersecção Diferença Produto Cartesiano Junção Operações Unárias Projecção Selecção Cliente Factura codcliente Morada Contacto 1022 Dias da Silva Av. De Tóquio ID_Cliente Factura Cliente x Factura = SELECT * FROM Cliente, Factura; codcliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva Dias da Silva Av. De Tóquio Av. De Tóquio

114 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção ou Join Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção R T A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 A a1 a2 a1 E e1 e2 e3 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 Junção ou Join Operações Binárias União Divisão Intersecção Diferença Produto Cartesiano Junção Operações Unárias Projecção Selecção Cliente Factura codcliente Morada Contacto 1022 Dias da Silva Praça da Monarquia Rua do Sofá Av. De Tóquio ID_Cliente Factura Cliente Factura = SELECT * FROM Cliente, Factura WHERE codcliente = ID_Cliente; codcliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva Dias da Silva Praça da Monarquia

115 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Projecção Operações Binárias União Divisão Intersecção Produto Cartesiano Diferença Junção Operações Unárias Projecção Selecção R Projecção (π) A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 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 π B,C (R) = b1 b2 b3 c1 c2 c3 Projecção Factura Operações Binárias União Divisão Intersecção Diferença Produto Cartesiano Junção Operações Unárias Projecção Selecção codfactura CodCliente Data codempregado Valor /05/ /05/ /07/ Projecção 2 SELECT codcliente FROM Factura; Projecção 1 CodCliente SELECT codcliente, Valor FROM Factura; CodCliente Valor

116 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Selecção Operações Binárias União Intersecção Diferença Divisão Produto Cartesiano Junção Operações Unárias Projecçã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 B C σ A {a1,a2}(r) = a1 b1 c1 a2 b2 c2 Selecção Factura Operações Binárias União Divisão Intersecção Diferença Produto Cartesiano Junção Operações Unárias Projecção Selecção codfactura CodCliente Data codempregado Valor /05/ /05/ /07/ SELECT codcliente FROM Factura WHERE Valor > Selecção e Restrição CodCliente SELECT * FROM Factura WHERE Valor > Restrição codfactura CodCliente Data codempregado Valor /05/ /07/

117 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Linguagens Procedimentais vs Declarativas Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Linguagens Procedimentais vs Declarativas Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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." 117

118 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SQL embebido vs APIs 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 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. SQL Embebido Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 118

119 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL APIs (Application Program Interface) Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Aplicação ODBC JDBC Sybase SQL ORACLE APIs - ODBC Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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. 119

120 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL APIs - JDBC Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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). Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Duas vertentes da Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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); 120

121 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Duas vertentes da Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures DML (Data Manipulation Language) A vertente DML é uma implementação da 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 Comandos DDL 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 DROP TABLE ALTER TABLE 121

122 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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_coluna 1 > <tipo_coluna 1 > <NOT NULL>, <nome_coluna 2 > <tipo_coluna 2 > <NOT NULL>, <nome_coluna n > <tipo_coluna n > <NOT NULL>); CREATE TABLE empregados (nome char(30) NOT NULL, NIF integer NOT NULL, salario decimal(7,2) NOT NULL); CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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); 122

123 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Data_nasc Data_adm NOT NULL CHECK (Sexo IN ( M, F )), Datetime, Datetime, CHECK (Data_adm > Data_nasc)); CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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)); 123

124 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Se a chave primária for constituída por vários campos: CREATE TABLE teste (Id Integer NOT NULL, Nome char(60) NOT NULL, Telefone CHAR(15), BI Integer NULL, PRIMARY KEY (id, nome)); CREATE TABLE teste (Id Integer PRIMARY KEY, Nome char(60) UNIQUE, Telefone CHAR(15), BI Integer UNIQUE); CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 CHECK (idade BETWEEN 0 and 150), Salario NUMERIC(10,2) NOT NULL CHECK (salario > 0), Telefone CHAR(12) NULL, cod_postal NUMERIC(4) REFERENCES postal(codigo)); Qualquer valor introduzido na coluna cod_postal da tabela Pessoa será validado na coluna Codigo da tabela Postal 124

125 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 DROP TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures O comando DROP TABLE permite a exclusão de uma tabela DROP TABLE <nome_tabela>; DROP TABLE empregados; 125

126 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL ALTER TABLE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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>; CREATE INDEX Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 126

127 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE INDEX Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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: CREATE INDEX Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 127

128 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL VIEWS Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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. VIEWS Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 128

129 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE VIEW Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; CREATE DATABASE LINKS CREATE DATABASE LINKS Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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). 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; 129

130 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL CREATE SNAPSHOT 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 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( , YYYY-MM-DD ) next to_date( , YYYY-MM-DD ) + 15 WITH ROWID as select * from vendas@lx; Comandos DML 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 UPDATE DELETE INSERT 130

131 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; SELECT Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 131

132 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; SELECT Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 132

133 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL FROM Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; FROM Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures À 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; 133

134 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL WHERE 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 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. WHERE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 134

135 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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) Cliente codcliente Morada Contacto 1022 Dias da Silva Av. De Tóquio Factura ID_Cliente Factura SELECT * FROM Cliente, Factura WHERE codcliente = ID_Cliente; Cliente Equi-Join Factura = codcliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva Av. De Tóquio

136 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 codcliente Morada Contacto 1022 Dias da Silva Av. De Tóquio Factura ID_Cliente Factura SELECT * FROM Cliente, Factura; Cliente x Factura = codcliente Morada Contacto ID_Cliente Factura 1022 Dias da Silva Dias da Silva Av. De Tóquio Av. De Tóquio

137 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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: Cliente codcliente Morada Contacto 1022 Dias da Silva Av. De Tóquio Bairro do Amor Factura ID_Cliente Factura Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Av. De Tóquio Bairro do Amor

138 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Factura 1022 Dias da Silva Av. De Tóquio Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Self Join Variante do Inner Join em que se comparam duas colunas da mesma tabela Vivem AS tx x Vivem AS ty = 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 Determinar pessoas que vivem na mesma cidade: Vivem Nome António João Pedro Zé Rui Cidade Lisboa Porto Coimbra Lisboa Coimbra SELECT tx.nome, ty,nome FROM Vivem AS Tx, Vivem As Ty WHERE Tx.Cidade = Ty.Cidade Group by tx.nome Having count(*) > 1 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 Rui Coimbra João Porto Rui Coimbra Pedro Coimbra Rui Coimbra Zé Lisboa Rui Coimbra Rui Coimbra 138

139 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 SELECT tx.nomea, ty,nome FROM Vivem AS Tx, Vivem As Ty WHERE Tx.Cidade = Ty.Cidade 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 Rui Coimbra João Porto Rui Coimbra Pedro Coimbra Rui Coimbra Zé Lisboa Tx.Nome Tx.Cidade Ty.nome Ty.cidade António Lisboa António 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 Rui Coimbra Rui Coimbra Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Tx.Nome Tx.Cidade Ty.nome Ty.cidade António Lisboa António 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 António António Pedro Pedro Zé Zé Rui Ty.nome António Zé Pedro Rui António Zé Pedro Rui Rui SELECT distinct tx.nome FROM Vivem AS Tx, Vivem As Ty WHERE Tx.Cidade = Ty.Cidade Group by tx.nome Tx.Nome António Pedro Zé Rui Having count(*) > 1 139

140 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 140

141 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Junção de tabelas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; GROUP BY e HAVING Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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. 141

142 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL GROUP BY e HAVING Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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); GROUP BY e HAVING Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 142

143 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL GROUP BY e HAVING Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Cliente Número Nome CodPostal 001 João Ana Luis Paula Nuno 1300 CodPostal = 1500 (Total:2) Número Nome CodPostal 001 João Luis 1500 CodPostal = 2100 (Total:2) Número Nome CodPostal 013 Ana Paula 2100 CodPostal = 1300 (Total:1) Número Nome CodPostal 011 Nuno 1300 Nova tabela temporária CodPostal COUNT(CodPostal) Resultado Final CodPostal COUNT(CodPostal) Funções de Agregação Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 143

144 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Agregação Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Funções de Agregação Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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. 144

145 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Row-Level Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 STR SQRT SQUARE 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 Converte um número para um caracter Retorna a raiz quadrada de valores positivos Retorna o quadrado de um número Funções de Row-Level Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 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; 145

146 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Row-Level Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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) 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; Funções de Strings Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Existem definidas um conjunto de funções que operam sobre strings: Nome CHARINDEX LEFT LEN LIKE LOWER RIGHT RTRIM SUBSTRING UPPER Descrição Retorna a posição inicial de um padrão especificado Retorna com base numa string o conjunto de caracteres (especificado) mais à esquerda Retorna o tamanho de uma string Faz uma comparação de acordo com um determinado padrão Devolve uma string em minúsculas Retorna com base numa string o conjunto de caracteres (especificado) mais à direita Remove espaços brancos à direita Retorna parte de uma string Devolve uma string em maiúsculas 146

147 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Strings Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Funções de Strings Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 147

148 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Strings Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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% Funções de Strings Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 148

149 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Strings Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures WildCards Pesquisa Descrição Exemplo a%s Qualquer string começada As, almas, abs, aas, obrigatoriamente por a e aas terminada por s a_s String formada por 3 caracteres, começada por a e terminada por s abs, aas, aas, ass al% String começada obrigatoriamente por al Al, all, alface, almodovar [abc]% Qualquer string começada obrigatoriamente por a, b ou c Arvore, bola, cão [0-9]%[abc] String começada por um dígito e terminada pelo caracter a, b ou c 99778a, 8b 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 Almodovar, Alpendre, alma, Funções de Data Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 149

150 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Data Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Funções de Data Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 150

151 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Funções de Data Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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') Outras Funções Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 DISTINCT PERCENT TOP Descrição Omite linhas duplicadas Retorna uma determinada percentagem de registros de acordo com um valor especificado Retorna um número específico de registros do início dos resultados 151

152 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Outras Funções Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Outras Funções Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 152

153 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Subqueries Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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. Subqueries Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 153

154 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Subqueries Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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); Subqueries Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 FROM Cliente; WHERE Factura.BI = Cliente.BI) As subqueries também podem ser colocadas nas cláusula FROM. SELECT DISTINCT Nome FROM (Select * From Cliente) as Cliente; 154

155 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Subqueries Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; Subqueries Não-Correlacionadas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 155

156 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Subqueries Correlacionadas Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 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: Query Não-Correlacionada Query Correlacionada Sentido da Execução Do Interior para o Exterior Do Exterior para o Interior Dependência da Query Interior Não depende da query exterior Depende da query exterior Execução da Query Uma única vez Tantas vezes quantas as Interior executadas pela query exterior 156

157 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL IN Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ; IN Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ); 157

158 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL NOT IN Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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); EXISTS Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ; 158

159 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL EXISTS Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 EXISTS SQL embebido VS APIs Definição de SQL Comandos DDL Comandos SQL para Privilégios Sinónimos Store Procedures 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; 159

160 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL ALL e ANY Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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)); UPDATE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ; 160

161 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL DELETE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ; TRUNCATE Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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; 161

162 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL INSERT Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ; INSERT Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Suponha-se que temos um ficheiro de texto preenchido com um conjunto de valores que queremos inserir numa tabela: 3422, 3, 6/10/2007, , 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 =, ) 162

163 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL -Direito a visualizar tabelas de outros utilizadores Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ) GRANT (concede privilégios) 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 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 163

164 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL GRANT (concede privilégios) Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures Conceder a Filipe o privilégio de executar SELECT na tabela Eleitor: GRANT ON TO SELECT ELEITOR FILIPE; Conceder a Filipe o privilégio de executar colunas específicas: GRANT ON TO UPDATE (NOME, MORADA) ELEITOR FILIPE; Conceder privilégios de INSERT e UPDATE a dois utilizadores: GRANT ON TO INSERT, UPDATE ELEITOR FILIPE, SOUSA; GRANT (concede privilégios) Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 ON TO WITH SELECT ELEITOR FILIPE GRANT OPTION; Permite ao dono de uma tabela conceder acesso a todos os utilizadores com um único comando: GRANT ON TO SELECT ELEITOR PUBLICO; 164

165 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL REVOKE (retira privilégios) 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 privilégios ON tabela/vista FROM utilizadores Retira a Filipe todos os privilégios sobre a tabela Eleitor: REVOKE ON FROM ALL ELEITOR FILIPE; Retira a todos os utilizadores o privilégio Insert na tabela Eleitor: REVOKE ON FROM INSERT ELEITOR PUPLIC; Utilização de Sinónimos Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 165

166 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Utilização de Sinónimos Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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 Definição de Store Procedures Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos 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). 166

167 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Definição de Store Procedures 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 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); PL/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 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. 167

168 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL T_SQL (Transact 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 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: T_SQL (Transact SQL) 0 begin CREATE PROCEDURE varchar(50) AS varchar(50) = convert(varchar,@contagem) + ' pessoas encontradas' int select nome, morada, sexo = '%' + '%' = count(*) from Alunos where Nome from Alunos where Nome order by Nome end ELSE varchar(100) begin = 'Não foi encontrado "'+@nome+'"' end 168

169 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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: Triggers Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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). 169

170 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Triggers Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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) ) Triggers Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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. 170

171 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Triggers Tipos de Linguagens SQL embebido VS APIs Definição de SQL Comandos DDL Comandos DML Comandos SQL para Privilégios Sinónimos Store Procedures 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) Transacções, Recuperação e Optimização Ricardo Campos (ricardo.campos@ipt.pt) 171

172 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; Transacções Recuperação / Tolerância a Falhas Índices Definição de Transacção Definição Tipos de Transacção Concorrência 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 172

173 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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). Transacções Recuperação / Tolerância a Falhas Índices Comandos de Transacção Definição Tipos de Transacção Concorrência 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 173

174 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Flat Transactions Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência 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. Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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 */ 174

175 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices Concorrência Save Points (rollback / rollforward) Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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. 175

176 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices Concorrência Save Points (rollback / rollforward) INSERT INTO ELEITOR (BI, NOME, MORADA, NumELEITOR) VALUES ( , Ricardo, RuaA, 123); SAVEPOINT INSERÇÃO_CONCLUIDA; UPDATE ELEITOR SET NOME = Ricardo Nuno, BI= ; ROLLBACK TO INSERÇÃO_CONCLUIDA (anula comando da actualização) UPDATE ELEITOR SET NOME = Ricardo Nuno, BI= WHERE NumELEITOR = 123); COMMIT; Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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 */ 176

177 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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. Nested Transactions Transacções Recuperação / Tolerância a Falhas Índices Definição Tipos de Transacção Concorrência É 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. 177

178 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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. Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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 178

179 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Recuperação / Tolerância a Falhas Índices Definição de Concorrência Definição Tipos de Transacção 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; Transacções Recuperação / Tolerância a Falhas Índices Definição de Concorrência Definição Tipos de Transacção 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. 179

180 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Recuperação / Tolerância a Falhas Índices Definição de Concorrência Definição Tipos de Transacção Concorrência Exemplos de execuções Transacção T1 Ler saldo Transacção T2 Ler saldo Saldo = Saldo Saldo = Saldo Escrever Saldo Escrever Saldo Execução em série Tempo Operação Saldo 1 T1 Ler saldo T1 Escrever Saldo T2 Ler Saldo T2 Escrever Saldo 500 Execução concorrente Tempo Operação Saldo 1 T1 Ler saldo T2 Ler Saldo T2 Escrever Saldo T1 Escrever Saldo 900 Estado da base de dados consistente Estado da base de dados inconsistente Transacções Recuperação / Tolerância a Falhas Índices Escalonamentos Serializados Definição Tipos de Transacção Concorrência 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). 180

181 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Optimistas Transacções Recuperação / Tolerância a Falhas Índices Escalonamentos Serializados Definição Tipos de Transacção Concorrência 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. Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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. 181

182 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Tipos de Transacção Índices 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. Transacções Recuperação / Tolerância a Falhas Índices Escalonamentos Serializados Definição Tipos de Transacção Concorrência 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 UPDATE FUNCIONARIOS SET NOME = Tiago WHERE NUM = 986; UPDATE FUNCIONARIOS SET NOME = Raul WHERE NUM = 1002; Transacção B UPDATE FUNCIONARIOS SET SAL = SAL * 2 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 Não se pode continuar porque o registo do funcionario NUM = 986 está bloqueado pela Transacção A 182

183 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Como lidar com impasses? Prevenir os impasses Transacções Recuperação / Tolerância a Falhas Índices Escalonamentos Serializados Definição Tipos de Transacção Concorrência 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; Transacções Definição Recuperação / Tolerância a Falhas Mecanismos Índices 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 183

184 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Mecanismos Índices 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). Tipos de Falhas Transacções Recuperação / Tolerância a Falhas Índices Definição Mecanismos 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. 184

185 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Porquê Índices? Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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; Porquê Índices? Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 linhas? Ou ? Mesmo o melhor algoritmo de ordenação levará imenso tempo; 185

186 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Acesso Aleatório VS Sequencial Monitorização Hashing 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. Criação de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Í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; 186

187 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Criação de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 Criação de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Suponha-se o seguinte conjunto de dados, sobre o qual vamos criar um índice por nome: Célia 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 António José Ana Beatriz Florinda Paulo 187

188 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Índices Únicos e de Performance Monitorização Hashing Í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. Ficheiros de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 Covilhã Ana Rua C Tomar Carla Rua D Lisboa 188

189 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Ficheiros de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 * log 2 N. Para tabelas pequenas a diferença é insignificante, mas para tabelas grandes é muito significativo; Ficheiros de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing Suponha-se que o processamento de cada linha consome 1 milisegundo. Suponha-se que temos uma tabela com registos (N = ) 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 * 20 (o 20 advêm de log ), o que representa 20,000 segundos (mais do que 5h30m) 189

190 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Ficheiros de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 Dados Func Nome 0005 Xavier 0015 Carlos 0001 Alberto 0010 Manuel Ficheiro de Índice Nome Alberto Carlos 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. Ficheiros de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing É frequente consultar as publicações por assunto: Ficheiro de Índice (ordenado por assunto) Tabela de Publicação Assunto Direito História Informática Informática Sociologia Índice ISBM Título Data Assunto 1 A 1998 História 2 D 1997 Informática 3 C 1994 Sociologia 4 Z 2000 Informática 5 F 1986 Direito 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; 190

191 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Ficheiros de Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 Assunto/Data Direito+1986 Informática+1997 Índice Tabela de Publicação ISBN Título Data Assunto 1 A 1998 História 2 D 1997 Informática 3 C 1994 Sociologia 4 Z 2000 Informática 5 F 1986 Direito Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Que tabelas se devem indexar? Monitorização Hashing 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. 191

192 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Que colunas se devem indexar? Monitorização Hashing 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. Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Que colunas se devem indexar? Monitorização Hashing 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. 192

193 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Índices 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. Transacções Definição Recuperação / Tolerância a Falhas Índices 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. 193

194 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Qual o Melhor Índice? Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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. select campo1 from tabela where campo2 = 2 and campo3 = 1 and campo4 = 3; O índice mais selectivo será aquele que recuperar o mínimo número de registros. tabela possui os índices: índice 1: campo2, campo5 índice 2: campo1 índice 3: campo3, campo1 índice 4: campo4 índice 5: campo5, campo4 Qual o Melhor Índice? Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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 from tabela where campo2 = 2 and campo3 = 1 and campo4 = 3; tabela possui os índices: índice 1: campo2, campo5 índice 2: campo1 índice 3: campo3, campo1 índice 4: campo4 índice 5: campo5, 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. 194

195 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Índices Considerações Estrutura Interna de um Índice Monitorização 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); Transacções Definição Recuperação / Tolerância a Falhas Índices Considerações Estrutura Interna de um Índice Monitorização 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. 195

196 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Porque é que se eliminam índices? Monitorização Hashing 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. Transacções Definição Recuperação / Tolerância a Falhas Considerações Índices Estrutura Interna de um Índice Estrutura Interna de um Índice B-Tree Monitorização Hashing Martins Bento Justino Matos Tavares Álvares ROWID Bento ROWID Justino ROWID Martins ROWID Matos ROWID Tavares ROWID Antunes ROWID Canelas ROWID Lemos ROWID Soares ROWID Teixeira ROWID Ferreira ROWID SELECT * FROM Empregados WHERE nome = Lemos 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. 196

197 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Gestão dos Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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. Gestão dos Índices Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização Hashing 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; 197

198 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Definição de Hashing Transacções Recuperação / Tolerância a Falhas Índices Definição Considerações Estrutura Interna de um Índice Monitorização 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 em Hash Cluster Tabela + Índice 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. Desenho de um Esquema de Bases de Dados em SQL Server Ricardo Campos (ricardo.campos@ipt.pt) 198

199 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Sumário Sumário Desenho de um esquema de em SQL Server Desenho de uma base de dados para um banco; Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Contextualização Levantamento de requisitos Desenho da Base de Dados DDL e DML 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; 199

200 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Contextualização Levantamento de requisitos Desenho da Base de Dados DDL e DML 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 mas inferiores a Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo E-R (nível conceptual) Levantamento de requisitos Desenho da Base de Dados Modelo de E-R: Cliente 1 N Conta N 1 1 Agência 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. 200

201 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca DDL e DML Modelo Relacional (nível lógico) Levantamento de requisitos Desenho da Base de Dados Modelo Relacional: Clientes(codCliente, nome, profissao, localidade); Agencias(codAgencia, designacao, localidade); Contas(numConta, tipoconta, codcliente, codagencia, saldo); Emprestimos(numEmprestimo, codcliente, codagencia, valor); Clientes codclient e nome Profissao localidade 1 N N Contas numconta tipoconta codcliente codagencia N saldo Emprestimos numemprestimo codcliente codagencia valor N 1 1 Agencia codagencia designacao localidade Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca CREATE TABLE Levantamento de requisitos Desenho da Base de Dados DDL e DML 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 ) 201

202 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca CREATE TABLE Levantamento de requisitos Desenho da Base de Dados DDL e DML CREATE TABLE Emprestimos ( numemprestimo CHAR(5), codagencia CHAR(3), codcliente CHAR(4) NOT NULL, valor INTEGER NOT NULL, CONSTRAINT valor_emprestimo CHECK (valor BETWEEN and ), 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 ) Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca CREATE TABLE Levantamento de requisitos Desenho da Base de Dados DDL e DML 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) NOT NULL, profissao VARCHAR(10), localidade VARCHAR(10) NOT NULL, CONSTRAINT ch_prim_clientes PRIMARY KEY (codcliente) ) 202

203 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca 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 ; Desenvolvimento de uma Base de Dados para uma Biblioteca CREAT VIEW Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenho da Base de Dados DDL e DML Definir uma view (GrandesContas) representando as linhas da tabela Contas cujo saldo é superior a, por exemplo, CREATE VIEW GrandesContas AS (SELECT * FROM Contas WHERE saldo > ) 203

204 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 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; SELECT 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 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; 204

205 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 Quais os clientes com empréstimos de valor superior a ? SELECT CLIENTES.* FROM CLIENTES, EMPRESTIMOS WHERE (CLIENTES.codCliente = EMPRESTIMOS.codCliente) AND (EMPRESTIMOS.valor > ); 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 > ); SELECT 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 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. 205

206 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 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; SELECT 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 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; 206

207 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 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; SELECT 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 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: 207

208 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 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 SELECT 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 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. 208

209 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 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. SELECT 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 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. 209

210 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL SELECT 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 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; SELECT 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 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; 210

211 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Contextualização Levantamento de requisitos Desenho da Base de Dados DDL e DML 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; Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Contextualização Levantamento de requisitos Desenho da Base de Dados DDL e DML 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; 211

212 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Contextualização Levantamento de requisitos Desenho da Base de Dados DDL e DML 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; Desenvolvimento de uma Base de Dados para um Banco Desenvolvimento de uma Base de Dados para uma Biblioteca Contextualização Levantamento de requisitos Desenho da Base de Dados DDL e DML 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, , 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; 212

213 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Publicação vs tipopublicação tipopublicação 1 pertence Os documentos da biblioteca, designados por publicações, têm associado a si, um tipo de publicação N Publicação Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Categoria tipopublicação 1 pertence As publicações enquadram-se numa categoria Categoria 1 pertence N Publicação 213

214 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Editora tipopublicação 1 pertence As publicações, quando aplicável, podem ser editadas por uma editora Categoria 1 pertence N Publicação N Editora 1 edita Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) tipopublicação 1 pertence Autor obra N Autor As publicações podem ser produzidas por um ou mais autores Categoria 1 pertence M N Publicação N Editora 1 edita 214

215 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) tipopublicação 1 pertence Autor obra N Exemplar Uma publicação tem um conjunto de exemplares Categoria 1 pertence M N Publicação N 1 Editora 1 edita tem N Exemplares Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) tipopublicação 1 pertence Autor obra N Biblioteca Deve existir pelo menos um exemplar de cada publicação em todas as bibliotecas. Categoria 1 pertence M N Publicação N 1 Editora 1 edita tem Biblioteca 1 N tem N Exemplares 215

216 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) tipopublicação 1 pertence Autor obra N Leitor A inscrição dos leitores é válida em qualquer uma das bibliotecas. Categoria 1 pertence M N Publicação N 1 Editora 1 edita tem Biblioteca 1 N tem N Exemplares N requisição 1 Leitor Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) tipopublicação 1 pertence Autor obra N Leitor vs tipoleitor Um leitor pertence a um determinado tipo de leitor. Categoria 1 pertence M N Publicação N 1 tipoleitor 1 Editora 1 edita tem tem Biblioteca 1 N tem N Exemplares M requisição N N Leitor 216

217 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo E-R (nível conceptual) Autor tipopublicação 1 pertence obra N Categoria 1 pertence M N Publicação N 1 tipoleitor 1 Editora 1 edita tem tem Biblioteca 1 N tem N Exemplares M requisição N N Leitor Desenvolvimento de uma Base de Dados para um Banco Levantamento de requisitos Desenvolvimento de uma Base de Dados para uma Biblioteca Desenho da Base de Dados DDL e DML Modelo Relacional (nível lógico) Categoria codcategoria descategoria tipopublicacao codtipopubl destipopubl Editora codeditora deseditora Morada Contacto Edita codpublicacao codeditora Publicacao codpublicacao Titulo Idioma numpags imagemcapa Formato descricaoobra numpubldisp ISBN depositolegal localpubl codcategoria codtipopubl Biblioteca codbiblioteca Morada Contacto Obra codautor codpublicacao Exemplar Cota Obs dataaquisicao datapublicacao numedicao possbrequisitar Cd Requisitado codpublicacao codbiblioteca Autor codautor nome Requisicao Cota codleitor datarequisicao dataentrega Devolvido tipoleitor codtipoleitor destipoleitor prazoentrega Leitor codleitor Nome Morada Contacto codtipoleitor 217

218 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Reporting Ricardo Campos 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; 218

219 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; 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; 219

220 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Criação de um report Criar um Report Server Project; Criação de um report Criar um report; 220

221 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; 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 221

222 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Criação de um report Depois de seleccionar table, clique na área de desenho (automaticamente é criada uma tabela com 3 colunas) 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 222

223 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Criação de um report Prever o report; 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; 223

224 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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; Grupos, Ordenação e Formatação Adicionar um grupo que arranja os dados das vendas pelo nome do vendedor; 224

225 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Grupos, Ordenação e Formatação Adicionar uma nova coluna; Adicionámos uma nova coluna que mostra o nome do vendedor; Grupos, Ordenação e Formatação Ordenar os dados; No canto superior esquerdo seleccionar propriedades; 225

226 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL 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 Grupos, Ordenação e Formatação Aplicação de formatos 226

227 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Grupos, Ordenação e Formatação Clique em.. Grupos, Ordenação e Formatação 227

228 Campos, Ricardo. (2007). Apresentação de. Microsoft SQL Grupos, Ordenação e Formatação Grupos, Ordenação e Formatação Seleccione as seguintes linhas e carregue em Bold 228

Campos, Ricardo. (2008). Apresentação de Bases de Dados. Access 2007. 260 slides. Bases de Dados

Campos, Ricardo. (2008). Apresentação de Bases de Dados. Access 2007. 260 slides. Bases de Dados Campos, Ricardo. (2008). Apresentação de. Access 2007. 260 Ricardo Campos (ricardo.campos@ipt.pt) Autoria Esta apresentação foi desenvolvida por Ricardo Campos, docente do Instituto Politécnico de Tomar.

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO CONCEITOS BÁSICOS 1 Necessidade das base de dados Permite guardar dados dos mais variados tipos; Permite

Leia mais

Computadores e Sistemas de Informação. Bases de Dados Relacionais (linguagem SQL)

Computadores e Sistemas de Informação. Bases de Dados Relacionais (linguagem SQL) Computadores e Sistemas de Informação Bases de Dados Relacionais (linguagem SQL) 2004/2005 Utilidade das Bases de Dados Recolha e processamento de dados que possuem um volume significativo, que são interrelacionados,

Leia mais

Bancos de Dados. Conceitos F undamentais em S is temas de B ancos de Dados e s uas Aplicações

Bancos de Dados. Conceitos F undamentais em S is temas de B ancos de Dados e s uas Aplicações Conceitos F undamentais em S is temas de B ancos de Dados e s uas Aplicações Tópicos Conceitos Básicos Bancos de Dados Sistemas de Bancos de Dados Sistemas de Gerenciamento de Bancos de Dados Abstração

Leia mais

Persistência e Banco de Dados em Jogos Digitais

Persistência e Banco de Dados em Jogos Digitais Persistência e Banco de Dados em Jogos Digitais Prof. Marcos Francisco Pereira da Silva Especialista em Engenharia de Software Jogos Digitais - Computação Gráfica 1 Agenda Vantagens de usar a abordagem

Leia mais

Banco de Dados I. Introdução. Fabricio Breve

Banco de Dados I. Introdução. Fabricio Breve Banco de Dados I Introdução Fabricio Breve Introdução SGBD (Sistema Gerenciador de Banco de Dados): coleção de dados interrelacionados e um conjunto de programas para acessar esses dados Coleção de dados

Leia mais

Construir um modelo de dados é: - Identificar, Analisar e Registar a política da organização acerca dos dados

Construir um modelo de dados é: - Identificar, Analisar e Registar a política da organização acerca dos dados 4. Modelo Entidade Associação 4.1. Introdução Modelo de Dados. Visão dos dados em vez de visão das aplicações. Eliminação de redundâncias. Partilha de dados pelas aplicações Construir um modelo de dados

Leia mais

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon (edson@esucri.com.

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon (edson@esucri.com. Sistemas da Informação Banco de Dados I Edson Thizon (edson@esucri.com.br) 2008 Apresentação (mini-currículo) Formação Acadêmica Mestrando em Ciência da Computação (UFSC/ ) Créditos Concluídos. Bacharel

Leia mais

Disciplina de Banco de Dados Introdução

Disciplina de Banco de Dados Introdução Disciplina de Banco de Dados Introdução Prof. Elisa Maria Pivetta CAFW - UFSM Banco de Dados: Conceitos A empresa JJ. Gomes tem uma lista com mais ou menos 4.000 nomes de clientes bem como seus dados pessoais.

Leia mais

Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br

Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br Prof. Marcelo Machado Cunha www.marcelomachado.com mcelobr@yahoo.com.br Ementa Introdução a Banco de Dados (Conceito, propriedades), Arquivos de dados x Bancos de dados, Profissionais de Banco de dados,

Leia mais

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Introdução BD desempenha papel crítico em todas as áreas em que computadores são utilizados: Banco: Depositar ou retirar

Leia mais

Bases de Dados. O que é uma Base de Dados? Pós-Grduação em SIG

Bases de Dados. O que é uma Base de Dados? Pós-Grduação em SIG Bases de Dados O que é uma Base de Dados? Dados Pode-se começar por tentar dar uma definição do que são Dados. Os dados são factos em bruto, que não são necessáriamente relevantes para qualquer coisa que

Leia mais

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1. Universidade Federal de Santa Maria Curso de Arquivologia Disciplina de Banco de Dados Aplicados à Arquivística Prof. Andre Zanki Cordenonsi Versao 1.0 Março de 2008 Tópicos Abordados Conceitos sobre Banco

Leia mais

Introdução Banco de Dados

Introdução Banco de Dados Introdução Banco de Dados Vitor Valerio de Souza Campos Adaptado de Vania Bogorny Por que estudar BD? Os Bancos de Dados fazem parte do nosso dia-a-dia: operação bancária reserva de hotel matrícula em

Leia mais

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016

PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 CURSO/CICLO DE FORMAÇÃO Técnico de Eletrotecnia e Técnico de Gestão de Equipamentos Informáticos / 2015/2018 DISCIPLINA: Tecnologias da Informação e Comunicação

Leia mais

Revisão de Banco de Dados

Revisão de Banco de Dados Revisão de Banco de Dados Fabiano Baldo 1 Sistema de Processamento de Arquivos Antes da concepção dos BDs o registro das informações eram feitos através de arquivos. Desvantagens: Redundância e Inconsistência

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 1 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Apresenta a diferença entre dado e informação e a importância

Leia mais

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos Introdução Banco de Dados Por que usar BD? Vitor Valerio de Souza Campos Adaptado de Vania Bogorny 4 Por que estudar BD? Exemplo de um BD Os Bancos de Dados fazem parte do nosso dia-a-dia: operação bancária

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO ACCESS 2010 Conceitos Básicos Ficha Informativa Professor : Vanda Pereira módulo didáctico Conceitos Básicos Necessidade das base de dados Permite guardar dados

Leia mais

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma

Bases de Dados. Bibliografia. 1. Parte I Componente Teórica. Pedro Quaresma Índice Bases de Dados Pedro Quaresma Departamento de Matemática Universidade de Coimbra 2010/2011 1. Parte I Componente Teórica 1.1 Introdução 1.2 Modelo ER 1.3 Modelo Relacional 1.4 SQL 1.5 Integridade

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados. BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Hoje é

Leia mais

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado Escola Básica e Secundária de Velas Planificação de TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC Curso Profissional de Técnico de Secretariado 10º C MÓDULO 1 FOLHA DE CÁLCULO Microsoft Excel Conteúdos

Leia mais

FACULDADE INTEGRADAS DE PARANAÍBA ADMINISTRAÇÃO DE EMPRESAS. Bancos de Dados Conceitos Fundamentais

FACULDADE INTEGRADAS DE PARANAÍBA ADMINISTRAÇÃO DE EMPRESAS. Bancos de Dados Conceitos Fundamentais FACULDADE INTEGRADAS DE PARANAÍBA ADMINISTRAÇÃO DE EMPRESAS Bancos de Dados Conceitos Fundamentais Tópicos Conceitos Básicos Bancos de Dados Sistemas de Bancos de Dados Sistemas de Gerenciamento de Bancos

Leia mais

LINGUAGEM DE BANCO DE DADOS

LINGUAGEM DE BANCO DE DADOS LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda Formação Pedagógica de Professores (FAQI) Conceito de BD Um banco de dados

Leia mais

GBC043 Sistemas de Banco de Dados. Introdução. Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM

GBC043 Sistemas de Banco de Dados. Introdução. Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM GBC043 Sistemas de Banco de Dados Introdução Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM Página 2 Definição BD Def. Banco de Dados é uma coleção de itens de dados

Leia mais

SISTEMA GERENCIADOR DE BANCO DE DADOS

SISTEMA GERENCIADOR DE BANCO DE DADOS BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br SISTEMA GERENCIADOR

Leia mais

Módulo 4: Gerenciamento de Dados

Módulo 4: Gerenciamento de Dados Módulo 4: Gerenciamento de Dados 1 1. CONCEITOS Os dados são um recurso organizacional decisivo que precisa ser administrado como outros importantes ativos das empresas. A maioria das organizações não

Leia mais

Banco de Dados. Uma coleção de dados relacionados [ELMASRI/NAVATHE]

Banco de Dados. Uma coleção de dados relacionados [ELMASRI/NAVATHE] 1/6 Banco de Dados O que é um Banco de Dados? Uma coleção de dados relacionados [ELMASRI/NAVATHE] Conjunto de dados integrados que tem por objetivo atender a uma comunidade específica [HEUSER] Um conjunto

Leia mais

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL SQL APOSTILA INTRODUÇÃO Uma linguagem de consulta é a linguagem por meio da qual os usuários obtêm informações do banco de dados. Essas linguagens são, tipicamente, de nível mais alto que as linguagens

Leia mais

Gestão de Tecnologia da Informação

Gestão de Tecnologia da Informação Gestão de Tecnologia da Informação Banco de Dados Prof. Gilberto B. Oliveira Tópicos Projeto de Banco de Dados (Button-Up) Modelagem conceitual Modelagem lógica Exemplo: Implementação do modelo Escola

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB. Disciplina: Banco de Dados Professora: Cheli Mendes Costa Modelo de Dados

Curso de Aprendizado Industrial Desenvolvedor WEB. Disciplina: Banco de Dados Professora: Cheli Mendes Costa Modelo de Dados Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Banco de Dados Professora: Cheli Mendes Costa Modelo de Dados Modelo para organização dos dados de um BD. define um conjunto de conceitos para

Leia mais

Roteiro. Modelo de Dados Relacional. Processo de Projeto de Banco de Dados. BCC321 - Banco de Dados I. Ementa. Posicionamento.

Roteiro. Modelo de Dados Relacional. Processo de Projeto de Banco de Dados. BCC321 - Banco de Dados I. Ementa. Posicionamento. Roteiro Modelo de Dados Relacional Posicionamento Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto luizhenrique@iceb.ufop.br www.decom.ufop.br/luiz Introdução

Leia mais

Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com

Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Introdução a Banco de Dados Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com 12/06/2013 Sumário Motivação da Disciplina

Leia mais

Aprend.e Sistema integrado de formação e aprendizagem

Aprend.e Sistema integrado de formação e aprendizagem Aprend.e Sistema integrado de formação e aprendizagem Pedro Beça 1, Miguel Oliveira 1 e A. Manuel de Oliveira Duarte 2 1 Escola Aveiro Norte, Universidade de Aveiro 2 Escola Aveiro Norte, Departamento

Leia mais

Sistemas de Gestão de Bases de Dados

Sistemas de Gestão de Bases de Dados Cadeira de Tecnologias de Informação Ano lectivo 2007/08 Sistemas de Gestão de Bases de Dados Prof. Mário Caldeira Profª Ana Lucas Dr. Fernando Naves Engª Winnie Picoto Engº Luis Vaz Henriques Dr. José

Leia mais

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados: MC536 Introdução Sumário Conceitos preliminares Funcionalidades Características principais Usuários Vantagens do uso de BDs Tendências mais recentes em SGBDs Algumas desvantagens Modelos de dados Classificação

Leia mais

Sistemas de Bases de Dados

Sistemas de Bases de Dados Sistemas de Bases de Dados Carlos Viegas Damásio José Alferes e Carlos Viegas Damásio Sistemas de Bases de Dados 2014/15 Objectivos - Em Bases de Dados (2º ano) pretendia-se: Que os estudantes fossem capazes

Leia mais

BANCO DE DADOS. Fixação dos conteúdos Integridade Referencial Normalização Exercícios

BANCO DE DADOS. Fixação dos conteúdos Integridade Referencial Normalização Exercícios BANCO DE DADOS Fixação dos conteúdos Integridade Referencial Normalização Exercícios BANCO DE DADOS X SGBD Banco de Dados: Um "banco de dados" pode ser definido como um conjunto de "dados" devidamente

Leia mais

Desenvolvimento de uma base de dados. Relação. Modelo lógico: SGBD relacional

Desenvolvimento de uma base de dados. Relação. Modelo lógico: SGBD relacional Desenvolvimento de uma base de dados Realidade Bases de dados relacionais e SQL Conceitos básicos de bases de dados relacionais A 3ª forma normal Structured Query Language (SQL) Modelo conceptual (e.g.

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

Conceitos básicos. Aplicações de banco de dados. Conceitos básicos (cont.) Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada.

Conceitos básicos. Aplicações de banco de dados. Conceitos básicos (cont.) Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada. Conceitos básicos Angélica Toffano Seidel Calazans E-mail: angelica_toffano@yahoo.com.br Conceitos introdutórios de Modelagem de dados Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada.

Leia mais

Modelo de Dados. Modelos Conceituais

Modelo de Dados. Modelos Conceituais Modelo de Dados Modelo para organização dos dados de um BD define um conjunto de conceitos para a representação de dados exemplos: entidade, tabela, atributo,... existem modelos para diferentes níveis

Leia mais

INTRODUÇÃO. Diferente de Bando de Dados

INTRODUÇÃO. Diferente de Bando de Dados INTRODUÇÃO Diferente de Bando de Dados 1 INTRODUÇÃO DADOS São fatos conhecidos que podem ser registrados e que possuem significado. Ex: venda de gasolina gera alguns dados: data da compra, preço, qtd.

Leia mais

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS Planificação Anual da Disciplina de TIC Módulos 1,2,3-10.ºD CURSO PROFISSIONAL DE TÉCNICO DE APOIO À GESTÃO DESPORTIVA Ano Letivo 2015-2016 Manual adotado:

Leia mais

1. CONCEITOS BÁSICOS DE BD, SBD E SGBD

1. CONCEITOS BÁSICOS DE BD, SBD E SGBD Introdução 1. CONCEITOS BÁSICOS DE BD, SBD E SGBD A importância da informação para a tomada de decisões nas organizações tem impulsionado o desenvolvimento dos sistemas de processamento de informações.

Leia mais

OBJETIVOS. Orientações para Projetos de BD; Dependências Funcionais (DFs): Definição de DF; Regras de inferência para DFs.

OBJETIVOS. Orientações para Projetos de BD; Dependências Funcionais (DFs): Definição de DF; Regras de inferência para DFs. BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br OBJETIVOS Orientações

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

05/06/2012. Banco de Dados. Gerenciamento de Arquivos. Gerenciamento de Arquivos Sistema Gerenciador de Banco de Dados Modelos de Dados

05/06/2012. Banco de Dados. Gerenciamento de Arquivos. Gerenciamento de Arquivos Sistema Gerenciador de Banco de Dados Modelos de Dados Banco de Dados Gerenciamento de Arquivos Sistema Gerenciador de Banco de Dados Modelos de Dados Gerenciamento de Arquivos Gerenciamento de Arquivos 1 Gerenciamento de Arquivos Em uma indústria são executadas

Leia mais

Sistemas de Informação

Sistemas de Informação MODELO CONCEPTUAL DE DADOS Escola Superior de Tecnologia e Gestão de Felgueiras Engenharia Informática 3º ano - 2003/2004 Ana Maria Madureira 1. MODELO CONCEPTUAL DE DADOS Descreve o S.I. da Organização

Leia mais

Oficina. Praça das Três Caixas d Água Porto Velho - RO

Oficina. Praça das Três Caixas d Água Porto Velho - RO Oficina Praça das Três Caixas d Água Porto Velho - RO Oficina Ministrante: Marcel Leite Rios Apresentação Pessoal Marcel Leite Rios Prof. de Informática IFRO Graduado: Sistemas de Informação - ULBRA MBA

Leia mais

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP Banco de Dados Introdução João Eduardo Ferreira Osvaldo Kotaro Takai jef@ime.usp.br DCC-IME-USP Importância dos Bancos de Dados A competitividade das empresas depende de dados precisos e atualizados. Conforme

Leia mais

Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de Dados Linguagem de Manipulação de Dados Gestão de

Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de Dados Linguagem de Manipulação de Dados Gestão de Capítulo 1: Introdução Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de Dados Linguagem de Manipulação de Dados Gestão de Transacções Gestão de Armazenamento

Leia mais

Disciplina: Unidade III: Prof.: E-mail: Período:

Disciplina: Unidade III: Prof.: E-mail: Período: Encontro 08 Disciplina: Sistemas de Banco de Dados Unidade III: Modelagem Lógico de Dados Prof.: Mario Filho E-mail: pro@mariofilho.com.br Período: 5º. SIG - ADM Relembrando... Necessidade de Dados Projeto

Leia mais

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs 1 Bancos de Dados - Introdução Melissa Lemos melissa@inf.puc-rio.br Tópicos Evolução dos Sistemas de Informação Esquemas Modelos Conceitual Lógico Características de SGBDs 2 Evolução tempo Programas e

Leia mais

Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos.

Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos. 1. Introdução aos Sistemas de Bases de Dados Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos. O conceito de base de dados faz hoje parte do nosso

Leia mais

Roteiro. Conceitos e Arquitetura de Sistemas de Banco de Dados. Conceitos e Arquiteturas de Sistemas de Banco de Dados. BCC321 - Banco de Dados I

Roteiro. Conceitos e Arquitetura de Sistemas de Banco de Dados. Conceitos e Arquiteturas de Sistemas de Banco de Dados. BCC321 - Banco de Dados I Roteiro Conceitos e Arquitetura de Sistemas de Banco de Dados Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto luizhenrique@iceb.ufop.br www.decom.ufop.br/luiz

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 2 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Revisão sobre Banco de Dados e SGBDs Aprender as principais

Leia mais

Roteiro 2 Conceitos Gerais

Roteiro 2 Conceitos Gerais Roteiro 2 Conceitos Gerais Objetivos: UC Projeto de Banco de Dados Explorar conceitos gerais de bancos de dados; o Arquitetura de bancos de dados: esquemas, categorias de modelos de dados, linguagens e

Leia mais

Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão. GesStock. Engenharia Informática. Base de Dados II

Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão. GesStock. Engenharia Informática. Base de Dados II Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão GesStock Aplicação para Gestão de Stocks Engenharia Informática Base de Dados II Docente: Artur Lança Isabel Sofia Brito Nuno Gonçalo

Leia mais

Introdução à Banco de Dados. Definição

Introdução à Banco de Dados. Definição Universidade Federal da Bahia Departamento de Ciência da Computação (DCC) Disciplina: Banco de Dados Profª. Daniela Barreiro Claro Introdução à Banco de Dados Definição Um banco de dados é uma coleção

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Bases de Dados! 2014/15! http://ssdi.di.fct.unl.pt/bd!! João Leite (jleite@fct.unl.pt)!!!

Bases de Dados! 2014/15! http://ssdi.di.fct.unl.pt/bd!! João Leite (jleite@fct.unl.pt)!!! Bases de Dados 2014/15 http://ssdi.di.fct.unl.pt/bd João Leite (jleite@fct.unl.pt) Capítulo 1: Introdução Função dos Sistemas de Bases de Dados Visão dos dados Modelos de dados Linguagem de Definição de

Leia mais

Faculdade Lourenço Filho - ENADE 2011-1

Faculdade Lourenço Filho - ENADE 2011-1 1. Quando se constrói um banco de dados, define-se o modelo de entidade e relacionamento (MER), que é a representação abstrata das estruturas de dados do banco e seus relacionamentos. Cada entidade pode

Leia mais

CICLO DE VIDA DE UM BD

CICLO DE VIDA DE UM BD BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br CICLO DE VIDA DE UM

Leia mais

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo

Leia mais

INTRODUÇÃO E CONCEITOS BÁSICOS. Prof. Ronaldo R. Goldschmidt

INTRODUÇÃO E CONCEITOS BÁSICOS. Prof. Ronaldo R. Goldschmidt INTRODUÇÃO E CONCEITOS BÁSICOS Prof. Ronaldo R. Goldschmidt Hierarquia Dado - Informação - Conhecimento: Dados são fatos com significado implícito. Podem ser armazenados. Dados Processamento Informação

Leia mais

Programação SQL. Introdução

Programação SQL. Introdução Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:

Leia mais

Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados.

Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados. Histórico Etapas da evolução rumo a tomada de decisão: Aplicações Isoladas: dados duplicados, dados inconsistentes, processos duplicados. Sistemas Integrados: racionalização de processos, manutenção dos

Leia mais

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos Conceitos Básicos Introdução Banco de Dados I Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Dados

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Microsoft Access 2010. Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento

Microsoft Access 2010. Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento Microsoft Access 2010 Para conhecermos o Access, vamos construir uma BD e apresentar os conceitos necessários a cada momento 1 Principais objetos do Access Tabelas Guardam a informação da BD (Base de Dados)

Leia mais

Aspectos genéricos - Base de Dados

Aspectos genéricos - Base de Dados Aspectos genéricos - Base de Dados 1) Ficheiros de dados, registos e campos 2) Base de Dados Flat_File (de uma tabela) 2.1) Especificação e exemplo 2.2) Limitações das bases de dados baseadas em uma só

Leia mais

Teoria De Bases de dados

Teoria De Bases de dados Teoria De Bases de dados Paulo Leocádio Índice A informática na empresa...2 Da dependência à independência dos dados...3 Os três níveis da arquitectura de um SGBD...6 Funções e estrutura de um SGBD...7

Leia mais

Profa. Daniela Barreiro Claro

Profa. Daniela Barreiro Claro Profa. Daniela Barreiro Claro Modelar é criar representações do mundo real A modelagem relacional pode ser representada via MER (Modelo de Entidade Relacionamento) O MER define estruturas e restrições

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:

Leia mais

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores Trabalhos Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório 3.2 Avaliação 4. Propostas Na disciplina de Programação

Leia mais

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

Leia mais

CEFET.PHB - PI. Plano de Ensino. Banco de Dados. Plano de Ensino. Plano de Ensino. Plano de Ensino - Conteúdo. Plano de Ensino - Conteúdo

CEFET.PHB - PI. Plano de Ensino. Banco de Dados. Plano de Ensino. Plano de Ensino. Plano de Ensino - Conteúdo. Plano de Ensino - Conteúdo CEFET.PHB - PI Plano de Ensino Banco de Dados Prof. Jefferson Silva Sistema de Banco de Dados Objetivos Vantagens e Desvantagens Conceitos básicos de BD e de SGBD Abstração de Dados Linguagem de Definição

Leia mais

Rock In Rio - Lisboa

Rock In Rio - Lisboa Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem

Leia mais

Objetivos Específico

Objetivos Específico Banco de Dados Ementa (DBA) Conceitos Gerais sobre Banco de Dados Instalação e configuração da Ferramenta de Banco de Dados. Elaboração de projeto de Banco de Dados. Implementação do projeto de Banco de

Leia mais

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma

Leia mais

Ficheiros de dados, registos e campos pág. 2 Limitações das bases de dados baseadas numa só tabela pág. 2 Sistemas de Gestão de Base de Dados pág.

Ficheiros de dados, registos e campos pág. 2 Limitações das bases de dados baseadas numa só tabela pág. 2 Sistemas de Gestão de Base de Dados pág. Conteúdos Dos ficheiros de dados aos sistemas de gestão de base de dados Ficheiros de dados, registos e campos pág. 2 Limitações das bases de dados baseadas numa só tabela pág. 2 Sistemas de Gestão de

Leia mais

MÓDULO 1 - Folha de Cálculo

MÓDULO 1 - Folha de Cálculo ANUAL ANO LETIVO DE 2013/2014 Curso Profissional de Técnico de Apoio à Gestão Desportiva Curso Profissional de Técnico de Restauração Cozinha - Pastelaria Disciplina de Tecnologias da Informação e Comunicação

Leia mais

Técnicas e Linguagens para Banco de Dados I

Técnicas e Linguagens para Banco de Dados I Técnicas e Linguagens para Banco de Dados I Prof. Eduardo Ribeiro www.eduardo.trisolution.com.br eduardo@ trisolution.com.br Introdução Banco de Dados Dados x Informações Dados = É um elemento que mantém

Leia mais

Direcção Regional de Educação do Algarve

Direcção Regional de Educação do Algarve MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

MSc. Daniele Carvalho Oliveira

MSc. Daniele Carvalho Oliveira MSc. Daniele Carvalho Oliveira AULA 2 Administração de Banco de Dados: MSc. Daniele Oliveira 2 CONCEITOS FUNDAMENTAIS DE BANCO DE DADOS Administração de Banco de Dados: MSc. Daniele Oliveira 3 Conceitos

Leia mais

BANCO DE DADOS AULA 02 INTRODUÇÃO AOS BANCOS DE DADOS PROF. FELIPE TÚLIO DE CASTRO 2015

BANCO DE DADOS AULA 02 INTRODUÇÃO AOS BANCOS DE DADOS PROF. FELIPE TÚLIO DE CASTRO 2015 BANCO DE DADOS AULA 02 INTRODUÇÃO AOS BANCOS DE DADOS PROF. FELIPE TÚLIO DE CASTRO 2015 NA AULA PASSADA... 1. Apresentamos a proposta de ementa para a disciplina; 2. Discutimos quais as ferramentas computacionais

Leia mais

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Programação SQL. Manipulação de Dados. DML Data Manipulation Language Programação SQL Manipulação de Dados DML Data Manipulation Language Manipulação de Dados (DML) Os comandos INSERT, UPDATE, DELETE, são normalmente classificados como pertencendo a uma sublinguagem da linguagem

Leia mais

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction

Bases de Dados II 6638: BSc in Information Systems and Technologies. Cap. 1 Arquitectura de Sistemas de Bases de Dados. Module Introduction Bases de Dados II 6638: BSc in Information Systems and Technologies Cap. 1 Module Introduction Objectivos O propósito e a origem da arquitectura de base de dados a três níveis. O conteúdo dos níveis externo,

Leia mais

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 7 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Aprender sobre a modelagem lógica dos dados. Conhecer os

Leia mais

Definição do Conceito. Instalação e Gestão de Redes Informáticas. Gestão e organização da informação

Definição do Conceito. Instalação e Gestão de Redes Informáticas. Gestão e organização da informação Instalação e Gestão de Redes Informáticas Gestão e organização da informação Definição do Conceito Uma base de dados é, por definição, um conjunto organizado de dados, disponível a todos os utilizadores

Leia mais