TSI33A Banco de Dados 1 Semana 01 DBMS Database Management System

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

Download "TSI33A Banco de Dados 1 Semana 01 DBMS Database Management System"

Transcrição

1 Objetivo TSI33A Banco de Dados 1 Semana 01 DBMS Database Management System Compreender as estruturas de arquivos de dados Compreender a importância dos sistemas de banco de dados Leitura Complementar CSV: https://tools.ietf.org/html/rfc4180 JSON: XML Document Type: Avaliação Exatidão: o programa desenvolvido está de acordo com os requisitos? Estilo: a estrutura do arquivo e o programa seguem as boas práticas? Começando Por muitos anos os sistemas de arquivos foram utilizados massivamente no desenvolvimente de programas. Os programas manipulavam seus dados em estruturas de arquivo próprias, cuja especificação era definida pela linguagem de programação adotada e pelos desenvolvedores do programa. Se os arquivos de dados fossem compartilhados entre dois ou mais programas, estes deveriam conhecer e manipular a mesma estrutura de arquivo, bem como implementar mecanismos de acesso concorrente. Considerando a figura acima, é possível ilustrar o acesso concorrente pelos sistemas A e B aos arquivos de dados (texto ou binário) A, B e C. Quando um programa precisa alterar a estrutura de um arquivo os demais programas devem ser readequados, caso contrário deixam de manipular este arquivo. Assim, um programa pode manipular duas ou mais estruturas diferentes de arquivo de dados, tornando-se complexo e de difícil manutenção. Portanto, a produtividade no desenvolvimento de programas com sistemas de arquivos é baixa não que hoje, com os sistemas de banco de dados, a produtividade é alta, mas evoluiu muito! :-). É implícito nesse modelo de armazenamento as dificuldades de integração e interoperabilidade dos arquivos. Também é possível deduzir alguns dos possíveis problemas na implementação das regras de negócio nas aplicações, tais como, redundância, diferença e/ou falta de regras de negócio em uma ou outra aplicação. Pg. 1/4

2 Ainda existem diversas aplicações que fazem uso de sistemas de arquivos. Algumas são aplicações maduras, tornando-se inviável a refatoração para sistemas de banco de dados. Outras são aplicações simples em que a inclusão de mais uma camada de aplicação (sistema de banco de dados) as tornariam menos eficientes; ou até mesmo inviáveis (e.g. alguns tipos de sistemas embarcados). Com o advento dos sistemas de banco de dados o modelo de arquivos não deixou de existir. É comum as aplicações utilizarem sistemas de arquivos para gerar arquivos de log ou estado das aplicações. Definindo uma estrutura de arquivo com o formato CSV Comma-Separated Values (CSV) é uma implementação de arquivo de texto cujos registros são separados pelo delimitador quebra de linha \n e os valores de cada registro pelo delimitador vírgula,. O formato CSV também usa aspas duplas "" para definir valores do tipo conjunto de caracteres. Considere o ficheiro de dados abaixo, denominado Regions. Cada registro é composto por um identificador da região e um nome da região. O identificador é do tipo de dados inteiro e o nome da região um conjunto de caracteres. Regions Id Name Europe 2 Americas 3 Asia 4 Middle East and Africa Uma possível estrutura de arquivo CSV para representar os registros do ficheiro Regions é: <Nome do Ficheiro>.csv Coluna A,Coluna B,...,Coluna N [valor_a1 ou "valor_a1"],[valor_b1 ou "valor_b1"],...,[valor_n1 ou "valor_n1"] [valor_a2 ou "valor_a2"],[valor_b2 ou "valor_b2"],...,[valor_n2 ou "valor_n2"]... [valor_am ou "valor_am"],[valor_bm ou "valor_bm"],...,[valor_nm ou "valor_nm"] A estrutura de arquivo acima é simples e não possui mecanismos de integridade (e.g. unicidade de registro, obrigatoriedade de valor, etc.) e distinção entre os diferentes tipos de valores numéricos (e.g. inteiro, real, data, etc.). Ou as colunas são do tipo numeral ou do tipo conjunto de caracteres (neste caso o ou é exclusivo). A primeira linha do arquivo refere-se ao cabeçalho das colunas e as demais aos registros. Cada linha armazena somente um registro. O cabeçalho das colunas e os registros são separados por vírgula,. Considerando a descrição acima, os dados do ficheiro Regions são armazenados da seguinte forma: Regions.csv "Id","Name" 1,"Europe" 2,"Americas" 3,"Asia" 4,"Middle East and Africa" Pg. 2/4

3 Manipulando o arquivo Regions.csv Na pasta do usuário aluno /home/aluno (ou c:/users/aluno/) crie uma pasta denominada TSI33A. Em seguida salve nesta pasta o arquivo CSV Regions.csv. Abra o arquivo Regions.csv a partir da aplicação LibreOffice (GNU-Linux) ou Microsoft Excel (MS- Windows). Caso a aplicação solicite a seleção do padrão do conjunto de caracteres ( character set), selecione Unicode(UTF-8). Na linha 6 da planilha insira o conjunto de valores (5,"South America"). Salve o arquivo no mesmo formato. Por se tratar de um arquivo de texto é possíel manipulá-lo com qualquer editor de texto. Faça um teste com um editor de texto simples (Sublime Text ou Notepad) O processo realizado anteriormente não funcionaria se o arquivo fosse do tipo binário. Apresentando a aplicação CSVApp para manipular o arquivo Regions.csv A aplicação CSVApp foi desenvolvida na linguagem de programação Java e visa incluir, alterar e excluir registros no arquivo Regions.csv. Na pasta /home/aluno/tsi33a (ou c:/users/aluno/tsi33a), criada na seção anterior, salve o arquivo CSVApp.jar. No terminal do GNU-Linux (CTRL+ALT+T) ou prompt de comando do MS-Windows (Iniciar cmd <ENTER> Iniciar cmd <ENTER>) execute os seguintes comandos (ou duplo clique sobre o arquivo.jar): $cd TSI33A $java -jar CSVApp.jar Após a aplicação CSVApp iniciar explore suas funcionalidades. Tente incluir o registro (5,"South America"). A aplicação identificou a duplicidade? Neste caso, as regras de integridade dos dados devem ser implementadas na própria aplicação, sendo uma atividade onerosa aos programadores :-(. Conhecendo outros formatos de arquivos de dados Javascript Object Notation (JSON) e Extensible Markup Language (XML) são formatos de texto simples, flexíveis e interoperáveis, utilizados para troca de dados entre aplicações - principalmente Aplicações Web. Esses formatos, como qualquer outro, são definidos através de um conjunto simples de regras sintáticas (mais completas se comparado ao formato CSV :-) ). JSON e XML são formatos equivalentes, por isso, tudo que pode ser representado em JSON também pode ser representado em XML. Então, por que optar entre um ou outro formato de dados? Em relação aos formatos JSON e XML uma das diferenças está no tamanho da representação dos dados. O formato JSON é menor, pois não possui tags para representação dos dados. Ambos formatos são amplamente utilizados (e.g. o Facebook utiliza o formato JSON e a NF-e o formato XML). Pg. 3/4

4 Não é o objetivo deste material avaliar os dois formatos, portanto, tenha uma excelente leitura complementar :-). Os próximos dois quadros mostram, respectivamente, a representação nos formatos XML e JSON dos registros do ficheiro Regions. XML <?xml version="1.0"?> <regions> <region id=1> <region_name>europe</region_name> </region> <region id=2> <region_name>americas</region_name> </region> <region id=3> <region_name>asia</region_name> </region> <region id=4> <region_name>middle East and Africa</region_name> </region> </regions> JSON { } "regions": {"region": [{"region_id":1,"region_name":"europe"}, {"region_id":2,"region_name":"americas"}, {"region_id":3,"region_name":"asia"}, {"region_id":4,"region_name":"middle East and Africa"}] } Muitos frameworks de desenvolvimento de aplicações Web utilizam os padrões JSON e XML para popular componentes (grids, combobox, autocomplete, text box, etc.), configurar conexões, etc - as vezes são extensões desses padrões. Exercitando 1. Após explorar as funcionalidades da aplicação CSVApp, desenvolva sua própria aplicação seguindo os seguintes requisitos: A aplicação pode ser desenvolvida em qualquer linguagem de programação ( de programação e não de script). A aplicação deve manipular (incluir, alterar e excluir) registros do ficheiro JSON ou CSV (desafio o JSON :-) ). Regions no formato A aplicação deve permitir que somente uma execução por vez da aplicação possa manipular o arquivo (controle primitido de acesso concorrente). Pg. 4/4

5 Objetivo TSI33A Banco de Dados 1 Semana 02 PostgreSQL Introdução aos utilitários básicos do PostgreSQL e a ferramenta pgadmin III Conhecer o catálogo do PostgreSQL Executar scripts SQL para criar e popular bases de dados Leitura Complementar Using pgadmin III: PostgreSQL Client Applications: Avaliação Exatidão: os comandos utilitários estão corretos? Estilo: os comandos utilitários fazem uso adequado dos parâmetros? Começando O PostgreSQL fornece utilitários de linha de comando que permitem aos usuários do sistema de banco de dados gerenciar bases de dados e usuários, bem como conectar e executar interativamente sentenças SQL. Nem todos os utilitários são de uso geral; alguns podem exigir privilégios especiais. createdb cria um novo banco de dados no PostgreSQL dropdb Remove um banco de dados no PostgreSQL createuser defne uma nova conta de usuário no PostgreSQL dropuser remove uma conta de usuário no PostgreSQL psql terminal interativo do PostgreSQL A característica comum destes utilitários é que eles podem ser executados em qualquer servidor, independentemente de onde o servidor do sistema de banco de dados reside. A lista completa dos programas utilitários está disponível no endereço eletrônico Criando o usuário userdb e banco de dados hr No terminal do GNU-Linux ou prompt de comando do MS-Windows execute: $createuser -h localhost -U postgres -d -S -P -e userdb Ao solicitar a senha, informe o mesmo nome do usuário (****** userdb). Detalhe dos parâmetros: -h especifca o servidor do sistema de banco de dados -U usuário do sistema de banco de dados com permissão de executar o comando -d permite o novo usuário criar bancos de dados -S retira o privilégio de superusuário do novo usuário -P solicita a defnição de uma senha para o novo usuário -e exibe o comando no terminal Pg. 1/4

6 O comando acima criou o usuário userdb para manipular a futura base de dados hr. É importante salientar que os usuários do sistema operacional e do PostgreSQL são distintos; podem ser os mesmos. Para maiores detalhes do comando createuser acesse a documentação no endereço eletrônico ou digite man createuser no terminal do GNU-Linux. Em seguida execute o comando: $createdb -h localhost -U userdb -e hr O comando createdb cria um novo banco de dados no PostgreSQL, cujo proprietário é o usuário userdb. Neste caso foi criado o banco de dados hr. Para maiores detalhes do comando createdb acesse a documentação no endereço eletrônico ou digite man createdb no terminal do GNU-Linux. Os próximos dois comandos remove e recria, respectivamente, o banco de dados hr; execute-os: $dropdb -h localhost -U userdb -e hr $createdb -h localhost -U userdb -e hr Acessando o banco de dados hr O utilitário psql permite aos usuários do sistema de banco de dados conectar e executar interativamente sentenças SQL. O usuário pode inserir as sentenças no prompt do psql ou salvar em um arquivo, executando-o a partir do comando \i. No terminal do GNU-Linux ou prompt de comando do MS-Windows execute: $psql -h localhost -U userdb -d hr Detalhe dos parâmetros: -h especifca o servidor do sistema de banco de dados -U usuário com permissão de executar o comando -d especifca o banco de dados da conexão Os símbolos =# e => referem-se, respectivamente, ao prompt de superusuário e usuário da linha de comando do psql nos sistemas operacionais GNU-Linux e Microsoft Windows. Qual é o seu prompt? Criando e populando o esquema do banco de dados hr As instruções SQL podem ser executadas individualmente no utilitário psql ou por meio de arquivos de lote, chamados de scripts SQL. Arquivos de script SQL.sql possuem instruções para criar, remover e alterar esquemas de banco de dados e inserir, remover e alterar dados do banco de dados. Na pasta do usuário aluno /home/aluno (ou c:/users/aluno/) crie uma pasta denominada TSI33A/pSet02. Em seguida salve nesta pasta os arquivos de script SQL HR_DDL_PostgreSQL.sql e HR_DML_PostgreSQL.sql. Pg. 2/4

7 Para criar o esquema e popular o banco de dados hr execute no prompt do psql: =>\i /home/aluno/tsi33a/pset02/hr_ddl_postgresql.sql =>\i /home/aluno/tsi33a/pset02/hr_dml_postgresql.sql Uma série de comandos será executado para criar e popular a base de dados, entre eles, CREATE, INSERT e ALTER. Execute o comando \d no prompt do psql para verifcar as tabelas do esquema do banco de dados. =>\d Demais comandos do utilitário psql podem ser visualizados a partir da ajuda. No prompt do psql execute o comando \? para visualizar os comandos disponíveis. =>\? Para sair do utiliário psql execute o comando \q no prompt do psql. =>\q O psql é um utilitário muito versátil que permite ao usuário enviar qualquer sentença SQL para execução. Toda instalação do PostgreSQL vem com este utilitário. Para detalhes acesse a documentação no endereço eletrônico ou digite man psql no terminal do GNU-Linux. Chega de linha de comando? Então vamos para um GUI Execute a aplicação pgadmin III. Em seguida adicione uma nova conexão (File seguintes dados: Add Server) com os Name: Conexão local Host: localhost ou Maintenance DB: hr User: userdb Password: userdb Por conseguinte, inicie a Conexão local e abra um editor SQL (Tools Query tool ou CTRL+E). Lembra dos scripts SQL HR_DDL_PostgreSQL.sql e HR_DML_PostgreSQL.sql? No Query tool abra o arquivo de script HR_DDL_PostgreSQL.sql (File Open) e o execute (Query Execute pgscript ou F6). Faça o mesmo com o arquivo de script HR_DML_PostgreSQL.sql. Pronto, aprendemos a executar scripts :-). Conhecendo o catálogo do PostgreSQL Os catálogos dos sistemas são repositórios onde os sistemas de banco de dados armazenam metadados do esquema, tais como informações sobre as tabelas, visões, funções e informações estatísticas do banco de dados. Pg. 3/4

8 No PostgreSQL, os catálogos são tabelas normais. Se o usuário tiver permissão é possível remover e recriar as tabelas, adicionar e remover colunas, atualizar, inserir e remover valores (portanto, muito cuidado quando conectar com o usuário postgres :- ). No entanto, a manipulação incorreta do catálogo pode danifcar o sistema de banco de dados. Por isso, normalmente, não se deve alterar os catálogos do sistema de forma livre (à mão). Para isso, há sempre comandos SQL. Para detalhes, acesse a documentação no endereço eletrônico Exercitando 1. Use os utilitários do PostgreSQL para: Criar o usuário usertsi33a Criar um banco de dados denominado dbtsi33a. O proprietário do banco de dados deve ser o usuário usertsi33a Executar os scripts dados dbtsi33a SQL HR_DDL_PostgreSQL.sql e HR_DML_PostgreSQL.sql na base de Executar e interpretar o comando \d regions no prompt do psql 2. Para acessar o banco de dados dbtsi33a com o utilitário psql é necessário especifcar o parâmetro -U. No entanto, é possível suprimir o parâmetro -U se o usuário usertsi33a for criado no Sistema Operacional. Assim, será possível conectar ao banco de dados dbtsi33a com o seguinte comando $psql -h localhost -d dbtsi33a Crie o usuário usertsi33a (com as permissões adequadas) no Sistema Opercional GNU-Linux ou MS-Windows. Em seguida, teste o comando acima. 3. Conecte a ferramenta pgadmin III à base de dados dbtsi33a. Abra uma editor arbitrário de consultas e interprete a execução das seguintes consultas (copie a consulta, cole no editor e execute com F5): SELECT * FROM pg_catalog.pg_tables WHERE SCHEMANAME LIKE 'dbtsi33a'; SELECT * FROM pg_catalog.pg_tables; SELECT * FROM pg_catalog.pg_views WHERE SCHEMANAME LIKE 'dbtsi33a'; 4. Use os utilitários do PostgreSQL e do Sistema Operacional para: Remover o banco de dados dbtsi33a. remover o usuário usertsi33a do PostgreSQL. remover o usuário usertsi33a do Sistema Operacional. 5. Dois conceitos importantes em sistemas de banco de dados são os esquemas e as instâncias (estados). É peculiar a diferença entre esses conceitos, por isso, é recomendado estudá-los a partir de um banco de dados real. Considerando o banco de dados hr, responda: Qual é o esquema do banco de dados hr? É possível mensurar o tamanho da instância hr? Se sim, como? Pg. 4/4

9 Objetivo TSI33A Banco de Dados 1 Semana 03 Relational Model Apresentar a existência de outros modelos de dados Compreender o modelo relacional a partir de um estudo de caso ( Order Entity) Leitura Complementar Capítulo 11 e Capítulo 12: ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6 ed. São Paulo: Pearson Addison Wesley, Human Resources (HR): Avaliação Exatidão: as regras de integridades do modelo OE foram identificadas adequadamente? Estilo: as regras de integridade estão coesas com o domínio da aplicação? Começando O modelo relacional é amplamente utilizado nos diversos segmentos do desenvolvimento de software. Sua estrutura foi proposta por Edgar Frank Codd e publicada no artigo Relational Model of Data for Large Shared Data Banks em O artigo está disponível na ACM Digital Library (acesse com o proxy da UTFPR :-) ) Na década de 70 outros modelos de banco de dados já existiam (e.g. modelo hierárquico e modelo em rede), contudo, esses modelos apresentavam complexidade na recuperação das informações e eram fortemente dependentes da aplicação. Portanto, o modelo de dados relacional passou a ser utilizado pelos fornecedores de sistemas de banco de dados. Com a evolução do desenvolvimento de software, a massificação das linguagens orientadas a objetos, a interoperabildiade entre aplicações e a necessidade de novos tipos de dados, novos modelos de dados foram propostos. Dentre eles estão o modelo de dados de objetos e o modelo de dados XML. O modelo de dados de objetos foi concebido de modo a integrar diretamente a base de dados ao software desenvolvido por uma linguagem de programação orientada a objetos. No modelo relacional a comunicação entre o banco de dados e a aplicação orientada a objetos necessita de um mapeamento mapeamento objeto-relacional, portanto, com o uso de banco de dados de objetos esse mapeamento deixa de ser realizado. O Hibernate é um exemplo de framework que faz o mapeamento objeto-relacional (se alcançarmos as metas, veremos até o final da disciplina TSI33A :-) ). Nesse mesmo contexto, o modelo de dados XML foi proposto devido à evolução das aplicações web e fontes de dados que disponibilizam dados XML na web. É importante destacar que os modelos supracitados possuem linguagens próprias de definição, manipulação e consulta de dados, implementados pelos sistemas de banco de dados que comportam esses modelos. Por exemplo, as linguagens Object Definition Language (ODL) e Object Query Language (OQL) referem-se ao modelo de dados de objetos e as linguagens XML Path (Xpath) )e XQuery (XML Query) ao modelo de dados XML. Pg. 1/4

10 Fornecedores de SGBDRs reconheceram a necessidade de incorporar outros padrões de modelos de dados e, consequentemente, sistemas de banco de dados híbridos surgiram no mercado (e.g. IBM DB2 Database, Oracle Database, PostgreSQL, etc.). Estudando um modelo de dados relacional No website da ferramente SQL Developer Data Modeler (http://www.oracle.com/technetwork/developertools/datamodeler/sample-models-scripts html) estão disponíveis quatro modelos de dados relacionais. Um desses modelos é o HR data model. A descrição do domínio do negócio está disponível no endereço Na base de dados HR cada colaborador tem uma identificação, um , o código do seu cargo, o código do seu departamento, um salário e o código do seu gerente. Alguns colaboradores ganham uma comissão além do seu salário. A base de dados também controla informações sobre os departamentos e cargos da empresa. Cada cargo tem um identificador, um título e o piso e teto salarial. Cada departamento tem um identificador, um nome, o código do gerente e uma localização. Cada departamento está associada a um único local. Cada localização tem um endereço, um CEP, uma cidade, um estado e o código do país. Alguns colaborares trabalham por um longo período na empresa e já ocuparam diferentes cargos. Quando um colaborador muda de cargo a empresa registra o seu histórico, armazenando a data de início e fim do cargo, o identificador do cargo e o identificador do departamento de lotação. Por se tratar de uma empresa multinacional existem diversas filiais. Desta forma, os departamentos estão distribuídos em diversos países. Cada país possui um identificador, um nome e o identificador da região. A região refere-se ao continente do país, portanto, as instalações da empresa são distribuídas em regiões. Cada região possui um identificador e um nome. Pg. 2/4

11 Estudando as regras de integridade do modelo de dados relacional O modelo relacional possui um conjunto de regras que visam à integridade dos dados. São quatro as principais regras de integridade (domínio, mandatório ou nulo, chaves e semântica.), sendo estas exemplificadas através do diagrama acima. A regra de integridade de domínio limita os valores de atributo das relações. Por exemplo, a relação JOBS possui os atributos MIN_SALARY e MAX_SALARY, cujos valores não podem ser, respectivamente, inferior a zero e inferior a MIN_SALARY. Outro exemplo refere-se à relação JOB_HISTORY, cujo valor do atributo START_DATE deve ser igual ou inferior ao atributo END_DATE. A regra de integridade de valor mandatório ou nulo define valores madatórios ou opcionais de atributos das relações. Por exemplo, alguns departamentos não possuem gerente por estratégia organizacional, portanto, o atributo MANAGER_ID da relação DEPARTMENTS deve ser opcional e não mandatório. Por outro lado, o atributo DEPARTMENT_NAME é mandatório, pois os departamentos devem ter um nome. A regra de integridade de chaves é subdividida em chave primária, chave única e chave estrangeira. A chave primária refere-se ao atributo ou conjunto de atributos cujo valor garante a unicidade da tupla, sendo este valor madatório. Por exemplo, em uma situação homônima na relação EMPLOYEES, em que os colaboradores possuem o mesmo cargo e estão alocados no mesmo departamento, o atributo EMPLOYEE_ID deve distinguí-los (diferenciá-los), portanto, este atributo é a chave primária da relação. A chave estrangeira refere-se à integridade referencial dos dados, ou seja, o conjunto de valores que o atributo pode assumir deve existir em uma relação de referência entre este atributo e a chave primária da relação. Por exemplo, os países estão situados em regiões, contudo, o atributo REGION_ID da relação COUNTRIES só pode receber valores que existam para o atributo REGION_ID da relação REGIONS. O mesmo ocorre entre os atributos DEPARTAMENT_ID da relação EMPLOYEES e o atributo DEPARTMENT_ID da relação DEPARTMENTS. Assim como a chave primária, a chave única também garante a unicidade do valor do atributo ou conjunto de atributos. No entanto, a chave única não é mandatório e, consequentemente, permite valor nulo ao atributo. Outra diferença é que a chave única não permite integridade referencial, ou seja, não é possível definir uma chave estrangeira com um atributo ou conjunto de atributos chave única. A regra de integridade semântica está associada a definição de regras de negócio ao esquema do modelo de dados. Entende-se por regras de negócio as regras de lógica, processos, etc. Por exemplo, para toda alteração de cargo ou departamento de um colaborador uma tupla deve ser inserida na relação JOB_HISTORY com os valores anteriores. Esse processo deve ser automático a partir da alteração dos atributos JOB_ID e/ou DEPARTMENT_ID da relação EMPLOYEES. Assim, é possível manter um histórico dos colaboradores (cargos e departmentos que ele atuou). A integridade semântica é abrangente e pode envolver qualquer restrição que ocorre no mundo real. Por exemplo, o número de seguridade social ou cadastro de pessoa física possui uma lógica de definição. O valor desse atributo pode ser validado a partir da definição de regras semânticas. Caso a regra não seja satisfeita, a tupla não poderá ser inserida na relação (e.g. função para validar o CPF). Pg. 3/4

12 Exercitando 1. Considerando a descrição do domínio de negócio Order Entry (OE), disponvível no endereço e o modelo lógico abaixo, identifique e descreva: As regras de integridade de domínio As regras de integridade de valor mandatório ou nulo As regras de integridade de chaves (primária, única e estrangeira) As regras de integridade semântica 2. Obter informações organizacionais em sistemas de processamento de arquivos apresenta numerosas desvantagens (SILBERSHATZ, 1999). Podemos citar como desvantagem os problemas de integridade dos dados. Por exemplo, um sistema acadêmico não deve permitir a exclusão de registros de alunos que foram matriculados e possuem qualquer modalidade de lançamento no sistema (notas bimestrais, nota final, boletos, registros de empréstimo de livros, etc). Marque e justifique a alternativa que expressa o tipo de integridade do modelo relacional que trata a questão apresentada. Integridade de obrigatoriedade Integridade referencial Integridade de domínio Integridade de atomicidade Pg. 4/4

13 Objetivo TSI33A Banco de Dados 1 Semana 04 Structured Query Language (SQL) && Consultas Introduzir os diferentes padrões da SQL Construir consultas SQL básicas Avaliação Exatidão: a sintaxe das consultas SQL estão corretas? Estilo: as consultas SQL são claras e seguem as boas práticas? Começando A Structured Query Language (SQL) é a linguagem padrão dos sistemas de banco de dados relacionais comerciais (proprietários e opensource) e foi padronizada em 1986 pelos órgãos American National Standards Institute (ANSI) e International Standards Organization (ISO). A especificação do primeiro padrão é a norma ISO/IEC 9075 e, como qualquer outra linguagem, a SQL evoluiu desde a sua concepção; o padrão mais recente foi publicado em Popularmente o primeiro padrão é chamado de SQL-86 ou SQL1, com sua revisão em 1989 (SQL-89). Em 1992 o padrão SQL-86/89 foi revisado e expandido, resultando no padrão SQL-92 ou SQL2 (especificado pela norma ISO/IEC 9075:1992). A principal novidade deste padrão foi a especificação de funcionalidades comuns (core), que toda implementação de sistema de banco de dados em conformidade deve implementar, e demais funcionalidades ( extensions), normalmente disponibilizadas em pacotes pelos fornecedores de sistemas de banco de dados. Uma diferença entre os padrões SQL-92 e SQL-89 é o estilo e a performance de consultas com a operação de junção. Abaixo é apresentado um exemplo de junção externa a esquerda (LEFT JOIN) nos padrões SQL-86 e SQL-92. SQL-86 SELECT E.FIRST_NAME, J.JOB_TITLE FROM EMPLOYEES E, JOBS J WHERE J.JOB_ID(+) = E.JOB_ID; SQL-92 SELECT E.FIRST_NAME, J.JOB_TITLE FROM EMPLOYEES E, LEFT JOIN JOBS J ON E.JOB_ID = J.JOB_ID; Outras diferenças envolveram: tipos de dados; operações de junções; e projeção condicionada (CASE). Para manter a compatibilidade os novos padrões SQL mantêm as funcionalidades dos padrões anteriores. Assim, o padrão SQL-92 é compatível com o padrão SQL-86/89 ( cuidado - o inverso não é verdadeiro). Alguns sistemas de banco de dados não admitem todos os estilos da mesma instrução. Por exemplo, o PostgreSQL iniciou no padrão SQL-92, portanto, não admite a junção externa no padrão SQL-86. Já o Oracle Database admite todos os estilos de comandos. Pg. 1/5

14 O próximo padrão reconhecido foi o SQL:1999, chamada de SQL3, que consiste em uma série de especificações (ISO/IEC :1999,ISO/IEC :1999,ISO/IEC :1999, entre outras). Os padrões SQL:2003 e SQL:2006 incorporaram poucas funcionalidades ao padrão SQL:1999. A principal mudança ocorreu na SQL:2003, dividindo a especificação em partes: ISO/IEC Framework (SQL/Framework) ISO/IEC Foundation (SQL/Foundation) ISO/IEC Call Level Interface (SQL/CLI) ISO/IEC Persistent Stored Modules (SQL/PSM) ISO/IEC Management of External Data (SQL/MED) ISO/IEC Object Language Bindings (SQL/OLB) ISO/IEC Information and Definition Schemas (SQL/Schemata) ISO/IEC Routines and Types using the Java Language (SQL/JRT) ISO/IEC XML-related specifications (SQL/XML) Cada sistema de banco de dados cobre um conjunto de partes da especificação SQL. Por exemplo, o PostgreSQL 9.4 cobre as partes 1, 2, 9, 11 e 14. A parte 3 é coberta pelo driver ODBC e a parte 13 pelo plugin PL/Java. As partes 4 e 10 não são implementadas pelo PostgreSQL 9.4. Em geral, os padrões SQL:2003/2006 introduziram funcionalidades de XML (SQL/XML) e funções de janelas (windows functions). Por exemplo, a consulta abaixo faz uso de funções de janelas para agrupar por cargo a soma dos salários dos colaboradores (e.g. 5 Analistas com salário U$ 2, resulta em U$ 10,000.00). SELECT DISTINCT JOB_ID, SUM(SALARY) OVER (PARTITION BY JOB_ID) FROM EMPLOYEES; O padrão SQL:2008 também é dividido em diversas partes e incorporou, pincipalmente, recursos de objetos (banco de dados de objetos). Por fim, novas revisões originaram o padrão SQL:2011 (ISO/IEC 9075:2011). Muitos dos novos recursos dos padrões SQL já haviam sido implementados por fornecedores de sistemas de banco de dados antes da especificação e publicação dos padrões. Portanto, os grandes fornecedores e as grandes comunidades de sistemas de banco de dados são colaboradores e participantes da evolução da SQL. Brincando com os padrões SQL no SQLFiddle SQLFiddle é uma ferramenta online de fácil manipulação para testes SQL. A ferramenta está disponível no endereço Abra um navegador de Internet (Google Chrome, Mozilla Firefox ou Internet Explorer) e acesse a ferramenta SQLFiddle. Na ferramenta, selecione o sistema de banco de dados Oracle 11g R2 (lado superior esquerdo). Em seguida copie as instruções abaixo e cole no quadro esquerdo da ferramenta. Clique no botão Build Schema. Pg. 2/5

15 CREATE TABLE JOBS ( JOB_ID CHAR(10) NOT NULL, JOB_TITLE VARCHAR(35) NOT NULL ); INSERT INTO JOBS (JOB_ID,JOB_TITLE) VALUES ('AD_PRES','President'); INSERT INTO JOBS (JOB_ID,JOB_TITLE) VALUES ('SA_MAN','Sales Manager'); INSERT INTO JOBS (JOB_ID,JOB_TITLE) VALUES ('IT_PROG','Programmer'); CREATE TABLE EMPLOYEES ( EMPLOYEE_ID INTEGER NOT NULL, FIRST_NAME VARCHAR(20), JOB_ID CHAR(10), SALARY NUMERIC(8,2) ); INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY) VALUES (100,'Steven','AD_PRES',24000); INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY) VALUES (104,'Bruce','IT_PROG',6000); INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY) VALUES (107,'Diana','',4200); INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY) VALUES (145,'John','SA_MAN',14000); INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,JOB_ID,SALARY) VALUES (146,'Karen','SA_MAN',13500); Por conseguinte, copie a consulta abaixo e cole no quadro direito. Clique no botão Run SQL. Observe se a consulta executará com sucesso. SELECT E.FIRST_NAME, J.JOB_TITLE FROM EMPLOYEES E LEFT JOIN JOBS J ON J.JOB_ID = E.JOB_ID; Faça o mesmo com a consulta abaixo. Observe que a consulta foi escrita de outra forma, contudo, possui o mesmo retorno. SELECT E.FIRST_NAME, J.JOB_TITLE FROM EMPLOYEES E, JOBS J WHERE J.JOB_ID(+) = E.JOB_ID; Agora selecione o sistema de banco de dados MySQL Em seguida, clique novamente no botão Build Schema. Execute novamente as duas consultas acima. Observe que a segunda consulta gerou um erro de sintaxe, pois a sintaxe da junção externa da segunda consulta não é interpredada pela versão do sistema banco de dados MySQL Apresentando um novo modelo A base de dados BM registra os movimentos bancários das empresas cadastradas. Cada empresa possui um identificador, uma nome e o saldo geral atualizado. O saldo geral refere-se ao saldo de todos as contas da empresa. A base de dados também controla informações das contas das empresas. Cada conta tem um identificador, um número da conta, uma descrição, um banco e o saldo atualizado da conta. As empresas registram os movimentos bancários (lançamentos de crédito e débido) de cada conta. Cada movimento tem um identificador de movimento, a empresa e conta que realizou o movimento, a descrição do movimento, a data, tipo e valor do movimento. A fim de otimizar a recuperação dos dados, um resumo mensal das movimentações é armazenado. Por exemplo, uma determinada empresa possui movimentos diários entre os anos 2000 e Mensalmente é registrado o saldo mensal na tabela resumo. Se a empresa recuperar o saldo do mês de Agosto de 2010, somente verificará o resumo deste mês não é necessário somar os créditos e débitos de todos os movimentos até essa data. Pg. 3/5

16 Inteprete o modelo físico abaixo. Na pasta do usuário aluno /home/aluno (ou c:/users/aluno/) crie uma pasta denominada TSI33A/pSet04. Em seguida salve nesta pasta o arquivo de script SQL BM_DDL_DML_PostgreSQL. No terminal do GNU-Linux ou prompt de comandos do MS-Windows execute: $createuser -h localhost -U postgres -d -S -P -e userlocal Em seguida execute os comandos: $createdb -h localhost -U userlocal -e bm $psql -h localhost -U userlocal -d bm Após acessar a base de dados, crie o esquema e popule o banco de dados bm com o arquivo de script BM_DDL_DML_PostgreSQL. =>\i /home/aluno/tsi33a/pset04/bm_ddl_dml_postgresql.sql Uma série de comandos será executado para criar e popular a base de dados, entre eles, CREATE, INSERT e ALTER. Execute o comando \d no prompt do psql para verificar as tabelas do esquema do banco de dados. Por conseguinte, fecha o utiliário psql. =>\q Pg. 4/5

17 Exercitando 1. Conectar a ferramenta pgadmin III a base de dados bm. Abra uma editor arbitrário de consultas e elabore as seguintes consultas: Recupere o saldo geral atualizado das empresas (use a tabela empresa) Recupere o saldo de cada conta da empresa Cooperativa de Pesquisa Agrícola Liste os movimentos de débido da empresa Jacar Materiais de Construção Recupere as empresas ordenando-as pela maior saldo 2. Verifique por meio de consultas se a empresa Transportadora Ortox possui: Depósitos em dinheiro Depósito em cheque Movimento de débido superior ao movimento de crédito 3. Você recorda do modelo Order Entity do pset03? Vamos criá-lo :-) Execute as seguintes instruções $createdb -h localhost -U userlocal -e tsi33a $psql -h localhost -U userlocal -d tsi33a (os próximos comandos exigem primeiro a execução dos scripts HR_DDL_PostgreSQL.sql e HR_DML_PostgreSQL.sql, pois existe uma dependência entre os scripts) =>\i /home/aluno/tsi33a/pset04/oe_ddl_postgresql.sql =>\i /home/aluno/tsi33a/pset04/oe_dml_postgresql.sql Considere a base de dasdos Order Entity (OE), a partir do pgadmin III elabore as seguintes consultas: Recupere o código, o nome e a descrição dos produtos da categoria 17 Recupere os dados dos produtos que possuem catálogo de endereço eletrônico (url) Recupere o nome e sobrenome dos clientes solteiros do sexo feminino Crie uma consulta para responder a pergunta: Todos os clientes italianos são solteiros? Crie uma consulta para responder a pergunta: Existe um armazém em New Jersey? Pg. 5/5

18 Objetivo TSI33A Banco de Dados 1 Semana 05 Junções && Base de Dados Remota Compreender a confguração de acesso remoto do PostgreSQL Consolidar o conteúdo de junções da SQL Leitura Complementar Chapter 19. Client Authentication: Coderwall: https://coderwall.com/p/cr2a1a/allowing-remote-connections-to-your-postgresql-vps-installation Avaliação Exatidão: a estrutura das consultas está correta? Estilo: a estrutura das consultas está indentada e segue as boas práticas? Começando A confguração padrão de instalação do PostgreSQL perminte somente acesso local ao sistema de banco de dados, (i.e., através dos endereços ou localhost). Essa confguração inicial garante a segurança do sistema de banco de dados até que sejam defnidas políticas e estratégias de acesso e uso das bases de dados e manutenção do sistema de banco de dados. Em ambientes corporativos, cujos dados são valiosos, é comum o servidor de banco de dados ser acessível somente na rede interna. Assim, as aplicações ou executam na mesma rede do sistema de banco de dados ou por meio de containers ou servidores de aplicação. Por exemplo, aplicações desktop são instaladas nas estações de trabalho e, por meio da rede interna, acessam o sistema de banco de dados para recuperar, armazenar, alterar e excluir dados. Também é possível que aplicações dektop acessem o sistema de banco de dados a partir de redes privadas ou acesso remoto (e.g. Virtual Private Network VPN, Terminal Server TS). Outro viés de acesso são as aplicações para web. Estas possuem containers ou servidores de aplicações (e.g. Apache Tomcat, JBoss, Glassfsh) que estão, normalmente, na mesma rede do sistema de banco de dados. Outras estratégias de acesso envolvendo redes de computadores também são empregadas (e.g. roteamento, fltros - IPTables, etc.). Além da infraestrutura de acesso também é possível administrar o sistema de banco de dados em relação aos usuários, ao acesso as bases de dados, aos utilitários e às instruções SQL. Uma breve exemplifcação será apresentanda para posterior acesso ao servidor amazonia.td.utfpr.br (PostgreSQL 9.4). Configurando o acesso remoto no PostgreSQL Após a instalação do PostgreSQL no servidor de banco de dados, além de outros serviços essenciais para a manutenção remota (e.g. SSH), faz-se necessário confgurar os arquivos pg_hba.conf e postresql.conf. A localização destes arquivos depende do sistema operacional e da instalação do PostgreSQL, portanto, o material será baseado no GNU-Linux distro Ubuntu LTS com a instalação padrão do PostgreSQL 9.4. Pg. 1/6

19 O primeiro passo é adicionar registros de autenticação de cliente no arquivo pg_hba.conf. No terminal, execute: $sudo pico /etc/postgresql/9.4/main/pg_hba.conf Como indicado abaixo, a confguração aceita conexões somente a partir do localhost. # host DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all /32 md5 # IPv6 local connections: host all all ::1/128 md5 Para permitir conexões de qualquer host, somente para a base de dados tsi33a, altere a linha indicada para: # host DATABASE USER ADDRESS METHOD # IPv4 local connections: host tsi33a all /0 md5 O pg_hba.conf permite controlar o acesso combinando o IP ou máscara de rede, banco, usuário e método de acesso. Consulte o endereço %C3%A1tico/Confgura%C3%A7%C3%B5es/Confgurar_acessos para maiores detalhes. O segundo passo é alterar o arquivo postgresql.conf. No terminal, execute: $sudo pico /etc/postgresql/9.4/main/postgresql.conf Como indicado abaixo, o serviço do sistema de banco de dados aceita somente sessões do localhost. #listen_addresses = 'localhost' max_connections = 100 # what IP address(es) to listen on; # (change requires restart) O máximo de conexões também pode ser alterado para prover maior segurança. Sabendo o número máximo de usuários ou conexões simultâneas, defna esse número como valor do parâmetro max_connections. Altere a linha indicada para: listen_addresses = '*' max_connections = 15 # what IP address(es) to listen on; # (change requires restart) Reinicie o serviço do PostgreSQL para que os novos valores sejam aplicados. No terminal, execute: $sudo service postgresql restart Outras confgurações são possíveis para os arquivos pg_hba.conf e postgresql.conf. Procure conhecer como administrar a segurança das conexões com o PosgreSQL. Pg. 2/6

20 Acessando o sistema de banco de dados do servidor amazonia.td.utfpr.edu.br No terminal do GNU-Linux ou prompt de comando do MS-Windows execute (substitua <RA> pelo registro acadêmico) : $psql -h amazonia.td.utfpr.edu.br -U <RA> -d tsi33a Cada aluno possui um usuário do sistema de banco de dados (seu registro acadêmico) e um esquema de banco de dados (com o mesmo nome do usuário). Todos os usuários podem acessar a base de dados tsi33a, contudo, só podem manipular o seu próprio esquema. Um esquema é uma organização lógica de objetos de banco de dados. Por default, a senha padrão é o próprio nome do usuário. Desta forma, após conectar à base de dados tsi33a, execute o comando abaixo para alterar a senha (substitua o valor nova_senha): =>ALTER ROLE " " WITH PASSWORD 'nova_senha'; A mesma conexão pode ser realizada na ferramenta pgadmin III. Certifque-se de desconectar do utilitário psql, pois cada usuário pode utilizar somente duas sessão do sistema de banco de dados. Essa regra de segurança foi defnida no momento da criação dos usuários. Exemplo de criação do usuário do sistema de banco de dados (prompt psql e utilitário createuser): #>CREATE ROLE " " WITH NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOREPLICATION CONNECTION LIMIT 2 LOGIN PASSWORD ' ' VALID UNTIL ' '; $createuser -S -D -R -I --no-replication -c 2 -l -h localhost -P -e Os comandos acima exigem privilégios administrativos para serem executados, potanto, se desejar, teste no sistema de banco de dados local (não é possível em amozonia.td.utfpr.edu.br). Por que duas sessões de conexão e não apenas uma? Bom, A ferramenta PgAdmin III trata as sessões de forma diferente do utilitário psql. Cada janela do PgAdmin III exige uma sessão com o sistema de banco de dados. Desta forma, o janela principal possui uma sessão e o editor arbitrário de SQL outra sessão. Criando e populando a base de dados tsi33a no servidor amazonia.td.utfpr.edu.br Na pasta do usuário aluno /home/aluno (ou c:/users/aluno/) crie uma pasta denominada TSI33A/pSet05. Salve nesta pasta o arquivo de script SQL HR_DDL_DML_PostgreSQL.sql. Em seguida, execute o comando abaixo no terminal (GNU_Linux) ou prompt de comando (MS-Windows): $psql -h amazonia.td.utfpr.edu.br -U <RA> -d tsi33a -f /home/aluno/tsi33a/pset05/hr_ddl_dml_postgresql.sql O parâmetro -f do utilitário psql invoca de forma implícita o comando \i. Com o parâmetro -f é possível executar o script que cria e popula a base de dados tsi33a em sistema de banco de dados remoto. Pg. 3/6

21 Exercitando 1. Acesse a base de dados tsi33a no servidor amazonia.utfpr.edu.br (use o utilitário psql ou a ferramenta PgAdmin III). Em seguida, elabore as seguintes consultas: Recupere o nome completo, cargo e valor do salário por hora dos programadores. Assuma que os colaboradores trabalham 160 horas/mês EMPLOYEE_ID EMPLOYEE_NAME JOB_ID JOB_TITLE SALALRY/HOUR Alexander Hunold IT_PROG Programmer Bruce Ernst IT_PROG Programmer David Austin IT_PROG Programmer Valli Pataballa IT_PROG Programmer Diana Lorentz IT_PROG Programmer Recupere o cargo atual e os cargos anteriores dos colaboradores que alteraram de cargo desde a data de contratação. Ordene os registros por pelo primeiro nome FIRST_NAME JOB_CURRENT JOB_PREVIOUS Den Purchasing Manager Stock Clerk Jonathon Sales Representative Sales Manager Jonathon Sales Representative Sales Representative Lex Administration Vice President Programmer Michael Marketing Manager Marketing Representative Neena Administration Vice President Public Accountant Neena Administration Vice President Accounting Manager Payam Stock Manager Stock Clerk Recupere o nome e país dos departamentos que não possuem gerente DEPARTMENT_NAME COUNTRY_NAME Payroll United States of America Recruiting United States of America Retail Sales United States of America Government Sales United States of America IT Helpdesk United States of America NOC United States of America IT Support United States of America Operations United States of America Contracting United States of America Construction United States of America Manufacturing United States of America Benefits United States of America Shareholder Services United States of America Control And Credit United States of America Corporate Tax United States of America Treasury United States of America 2. As informações sobre os cargos da empresa (e.g. programadores, analistas de TI, contadores, etc.) são armazenadas na tabela JOBS. Além do identifcador e da descrição do cargo também são registrados o piso e teto salarial. Considerando que a tabela EMPLOYEES não possui mecanismo para restringir a inclusão de colaboradores com salário inferior ao piso salarial ou superior ao teto salarial, alguns registros podem estar inconsistentes em relação ao domínio do negócio. Como responsável pelas consultas no banco de dados: elabore uma consulta que recupere os registros com inconsistência de salário inferior ao piso salarial ou superior ao teto salarial. Liste o nome completo dos colaboradores, o salário e os respectivos piso e teto salarial. EMPLOYEE_NAME SALARY MIN_SALARY MAX_SALARY Matthew Weiss Pg. 4/6

22 3. A folha de pagamento é, normalmente, uma lista mensal referente à remuneração dos colaboradores de uma empresa. A empresa gera a folha de pagamento a partir de uma série de procedimentos trabalhistas. Considerando apenas as tabelas do Instituto Nacional do Seguro Social (INSS) e Imposto de Renda Retido na Fonte (IRRF), que são alíquotas descontadas do salário do colaborador, recupere do banco de dados os seguintes dados (utilize a projeção condiconal para os impostos do INSS e IRRF): nome completo dos colaboradores o nome do cargo dos colaboradores salário bruto (valor armazenado na base de dados) alíquota do INSS ( vigência 01/01/2014 valor a ser descontado do INSS alíquota do IRRF ( exercício valor a ser descontado do IRRF EMPLOYEE_NAME JOB_TITLE SALARY (%)INSS INSS (%)IRRF IRRF Steven King President Neena Kochhar Administration Vice President David Austin Programmer Valli Pataballa Programmer Nancy Greenberg Finance Manager Daniel Faviet Accountant John Chen Accountant Alexander Khoo Purchasing Clerk Karen Colmenares Purchasing Clerk Adam Fripp Stock Manager Julia Nayer Stock Clerk James Landry Stock Clerk Steven Markle Stock Clerk TJ Olson Stock Clerk Renske Ladwig Stock Clerk Trenna Rajs Stock Clerk Curtis Davies Stock Clerk John Russell Sales Manager Jennifer Dilly Shipping Clerk Timothy Gates Shipping Clerk Randall Perkins Shipping Clerk Sarah Bell Shipping Clerk Kevin Feeney Shipping Clerk Jennifer Whalen Administration Assistant Em relação ao exercício 3, incluir na consulta a projeção do salário líquido dos colaboradores 5. Considerando a instalação padrão do PostgreSQL nos laboratórios de informática do Campus Toledo da UTFPR (user=postgres, password=postgres), altere a confguração permitindo o acesso remoto a partir da rede interna. Em seguida: Teste o acesso remoto com o seu vizinho de bancada 6. Na pasta do pset05 /home/aluno/tsi33a/pset05 (ou c:/users/aluno/tsi33a/pset05) salve os arquivos de script SQL OE_DDL_PostgreSQL.sql e OE_DML_PostgreSQL.sql. Em seguida, execute os comandos abaixo no terminal (GNU_Linux) ou prompt de comando (MS-Windows): Pg. 5/6

23 $psql -h amazonia.td.utfpr.edu.br -U <RA> -d tsi33a -f /home/aluno/tsi33a/pset05/oe_ddl_postgresql.sql $psql -h amazonia.td.utfpr.edu.br -U <RA> -d tsi33a -f /home/aluno/tsi33a/pset05/oe_dml_postgresql.sql Posterior a execução dos comandos, acesse a base de dados tsi33a no servidor amazonia.utfpr.edu.br (use o utilitário psql ou a ferramenta PgAdmin III) e elabore as seguintes consultas: Projete o nome completo dos clientes e de seus respectivos gerentes de conta. Sabe-se que o campo CUSTOMERS.ACCOUNT_MGR_ID é chave estrangeira de EMPLOYEES.EMPLOYEE_ID. Projete o nome dos armazéns e de seus respectivos países. Sabe-se que o campo WAREHOUSES.LOCATION_ID é chave estrangeira de LOCATIONS.LOCATION_ID. Pg. 6/6

24 Objetivo TSI33A Banco de Dados 1 Semana 06 Subcadeias de Caracteres && Funções de Agregação && Paginação Introduzir as cláusulas LIMIT e OFFSET Consolidar o uso das funções de manipulação de caracteres Consolidar o uso das funções de agregação Leitura Complementar Chapter 7. Queries: Chapter 9. Functions and Operators: Avaliação Exatidão: a estrutura das consultas está correta? Estilo: a estrutura das consultas está indentada e segue as boas práticas? Começando No desenvolvimento de software, principalmente software para Internet, é comum o uso da técnica de paginação para dividir os registros da consulta em pequenas páginas. Por exemplo, o GMail utiliza a paginação para exibir os s (aproximadamente 50 s por página), o Gestional Libre de Parc Informatique (GLPI) faz uso da paginação para exibir os chamados de manutenção ou serviço (entre 10 a 1000 registros por página). Portanto, a paginação é comum no desenvolvimento de software para Web. Além de proporcionar um bom layout de impressão, a paginação também maximiza a velocidade de recuperação e apresentação dos dados, pois exige menos recursos para obtê-los. Outra vantagem da paginação é o carregamento mais rápido das páginas web (AJAX também facilita nesse tarefa). Enfim, e como fazer a paginação? A paginação pode ser realizada com regras na camada de aplicação, frameworks ou por consultas SQL. Se todos os registros forem recuperados da base de dados, a paginação deve ser tratada na camada de aplicação, contudo, é possível recuperar os registros já paginados por meio de frameworks ou da própria SQL. Este material abordará paginação em SQL com PostgreSQL. As cláusulas LIMIT e OFFSET As cláusulas LIMIT e OFFSET permitem recuperar apenas uma parte dos registros da consulta, possibilitando a montagem da paginação. A cláusula LIMIT permite que seja recuperado somente a quantidade de registros especificado pelo parâmetro, desconsiderando o restante dos registros. Em suma, a consulta é executada no lado servidor e retorna para o lado cliente somente a quantidade especificada de registros. O exemplo abaixo recupera os 5 primeiros nomes da relação EMPLOYEES. Pg. 1/4

25 SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES LIMIT 5; FIRST_NAME LAST_NAME Steven King Neena Kochhar Lex De Haan Alexander Hunold Bruce Ernst O próximo exemplo também recupera os 5 primeiros nomes da relação EMPLOYEES, contudo, do conjunto ordenado por ordem alfabética. SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES ORDER BY FIRST_NAME LIMIT 5; FIRST_NAME LAST_NAME Adam Fripp Alana Walsh Alberto Errazuriz Alexander Khoo Alexander Hunold A cláusula OFFSET permite ignorar uma determinada quantidade de registros antes de começar a retornálos. O exemplo abaixo recupera 5 nomes da relação EMPLOYEES, iniciando do 2 registro (o valor 1 na cláusula OFFSET indica ignorar 1 registro). SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES ORDER BY FIRST_NAME LIMIT 5 OFFSET 1; FIRST_NAME LAST_NAME Alana Walsh Alberto Errazuriz Alexander Khoo Alexander Hunold Alexis Bull Perceba que o próximo registro após o Alexander,Hunold ( Alexis,Bull ) foi exibido ao invés do registro Adam,Fripp. Consultas com as cláusulas LIMIT e OFFSET são mais eficientes e possuem um custo menor comparado ao uso de grids de dados nas linguagem de programação. Quando utilizamos grids de dados estamos aplicando uma paginação no lado cliente (a partir de filtros da grid); e isso exige a recuperação de todos os registros. Como dica, sempre use a cláusula ORDER BY para definir uma ordem única para os registros, caso contrário, a consulta retornará um subconjunto imprevisível de registros (normalmente a ordem de inserção). Pg. 2/4

26 Subcadeias de caracteres O uso de funções e operadores de subconjuntos de caracteres é simples, o difícil é saber quais são as funções e operadores existentes no sistema de banco de dados utilizado. Assim, faça uma leitura das tabelas Table 9-6. SQL String Functions and Operators e Table 9-7. Other String Functions no endereço Funções de agregação Da mesma forma que no tópico Subcadeias de caracteres, faça uma leitura das tabelas Table General-Purpose Aggretate Functions e Table Aggregate Fuctions for Statistics no endereço Exercitando 1. Acesse a base de dados tsi33a no servidor amazonia.utfpr.edu.br (use o utilitário psql ou a ferramenta PgAdmin III). Em seguida, elabore as seguintes consultas: Recupere a quantidade de colaboradores dos departamentos que possuem dois ou mais colaboradores. Ordene o resultado em ordem descrescente pela quantidade de colaboradores DEPARTMENT_ID DEPARTMENT_NAME QTD Shipping Sales Finance 6 30 Purchasing 6 60 IT 5 90 Executive 3 20 Marketing Accounting 2 Recupere, pela técnica de paginação e em ordem alfabética, o tempo de serviço dos cinco primeiros colaboradores NAME YEARS Adam Fripp 9 years Alana Walsh 8 years Alberto Errazuriz 9 years Alexander Khoo 11 years Alexander Hunold 9 years Repita a consulta do item anterior recuperando a segunda página de registros. Use a cláusula OFFSET para isso NAME YEARS Alexis Bull 9 years Allan McEwen 10 years Alyssa Hutton 9 years Amit Banda 6 years Anthony Cabrio 7 years Pg. 3/4

27 2. Considerando a base de dados tsi33a e a consulta abaixo para recuperar os primeiros 50 nomes da relação EMPLOYEES, responda: SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES ORDER BY FIRST_NAME LIMIT 25 OFFSET 0; Para as próximas páginas basta alterar o valor da cláusula OFFSET por múltiplos de 25? Assim, tem-se uma paginação de 25 registros para exibir os 107 registros Quantas páginas são necessárias para exibir os 107 registros? Quantos registros a última página exibirá? 3. Considerando o modelo Order Entity (OE), acesse a base de dados tsi33a no servidor amazonia.utfpr.edu.br (use o utilitário psql ou a ferramenta PgAdmin III). Em seguida, elabore as seguintes consultas: Recupere o valor total dos pedidos para cada cliente do sexo masculino Recupere o valor total, os valores maior e menor e o valor médio dos pedidos Recupere distintamente (independente de quantos pedidos) a quantidade de clientes que possuem pedidos Recupere a quantidade total e o valor total de "Mobile phone" que foram pedidos em 2014 Recupere todos os dados (pedidos e itens de pedido) dos pedidos , , , , Além dos códigos do produto, cliente e representante comercial, os respectivos nomes, se existirem, também devem ser projetados (nome do produto, nome do cliente e nome do representante comercial). Sabe-se que o campo ORERS.SALES_REP_ID é chave estrangeira de EMPLOYEES.EMPLOYEE_ID. Pg. 4/4

28 Objetivo TSI33A Banco de Dados 1 Semana 07 Subconsultas && Operações de Conjuntos Introduzir a verifcação de integridade de dados com o MD5 Exercitar o conteúdo de subconsultas Exercitar o conteúdo de operações de conjuntos Leitura Complementar MDT5summer: Avaliação Exatidão: a estrutura das consultas está correta? Estilo: a estrutura das consultas está indentada e segue as boas práticas? Começando O Message-Digest algorithm 5 (MD5) é um algoritmo de hash de 128 bits especifcado pela RFC 1321 e muito utilizado na verifcação de integridade de arquivos. Algoritmos de hash são referências em relação à criptografa e integridade de dados, pois a partir de uma quantidade de dados (arquivo de texto ou binário) geram um valor de tamanho conhecido. Por exemplo, o arquivo da aula OE_PostgreSQL.tar possui o seguinte hash MD5: 745f1cfca068d65ef924f06d Não importa quantas vezes seja gerado o hash MD5 do arquivo OE_PostgreSQL.tar, sempre resultará no mesmo valor. O hash gerado pelo MD5 é de 32 caracteres, independente do formato, nome ou tamanho do arquivo. O MD5 é utilizado na distribuição de software livre para verifcar a integridade do download. Comumente, o software é disponibilizado juntamente com o seu valor hash. Após os usuários realizarem download do arquivo binário ou compactado, eles podem comparar o valor hash gerado por eles com o hash disponível no site. Se os valores forem diferentes, então o conteúdo está corrompido ou foi alterado. Ressalta-se que o MD5 não possui como fnalidade a garantia da procedência de um arquivo, somente a verifcação da integridade dos dados recuperados. Gerando o MD5 de arquivos No GNU-Linux, o utilitário md5sum permite calcular o código hash dos arquivos. A maioria das distribuições possui o md5sum instalado de forma nativa, portanto, acesse o sistema operacional GNU- Linux. Na pasta do usuário aluno /home/aluno/ crie uma pasta denominada TSI33A/pSet07. Em seguida salve nesta pasta o arquivo OE_PostgreSQL.tar. Pg. 1/3

29 Verifque a sintaxe básica e documentação do utilitário através do comando abaixo (execute no terminal): $man md5sum Para gerar o MD5 do arquivo OE_PostgreSQL.tar execute no terminal: $md5sum -t /home/aluno/tsi33a/pset07/oe_postgresql.tar O parâmetro -t indica que o arquivo é texto. Caso seja um arquivo binário, especifque o parâmetro -b. O comando abaixo direciona a saída para o arquivo OE_PostgreSQL.txt. $md5sum -t /home/aluno/tsi33a/pset07/oe_postgresql.tar > OE_PostgreSQL.txt Compare o MD5 do arquivo OE_PostgreSQL.txt gerado no comando acima com o arquivo OE_PostgreSQL.hash.txt disponível no pset-s07. O arquivo está íntegro? Exercitando 1. Na pasta do usuário aluno /home/aluno/ (ou c:/users/aluno/) crie uma pasta denominada TSI33A/pSet07. Salve nesta pasta o arquivo compactado OE_PostgreSQL.tar. Verifque se o MD5 do download do arquivo OE_PostgreSQL.tar corresponde ao MD5 do arquivo OE_PostgreSQL.hash.txt. Em seguida, extraia os arquivos OE_DDL_PostgreSQL.sql e OE_DML_PostgreSQL.sql do arquivo OE_PostgreSQL.tar. Execute os comandos abaixo no terminal (GNU-Linux) ou prompt de comando (MS-Windows): $md5sum -t OE_PostgreSQL.tar $cat OE_DDL_PostgreSQL.sql OE_DML_PostgreSQL.sql md5sum -t Agora responda. Se o conteúdo dos arquivos é o mesmo, por que os MD5s gerados não são iguais? 2. Considerando os diagramas lógicos dos modelos Order Entry (OE) e Human Resources (HR), acesse a base de dados tsi33a do servidor amazonia.td.utfpr.edu.br e elabore as seguintes consultas: Recupere o nome completo dos colaboradores e clientes. Projete uma coluna extra (PERSON_TP) para identifcar se o registro refer-se ao colaborador (EMP) ou ao cliente (CUS) Recupere o nome completo dos colaboradores que são gerentes e clientes. Refaça a consulta do item anterior utilizando a operação de diferença. Cuidado, o resultado deve ser o mesmo Recupere o nome completo dos clientes que possuem o mesmo nome dos colaboradores Pg. 2/3

30 Recupere os clientes que possuem o produto "Laptop 128/12/56/v90/110" em seus pedidos Recupere a quantidade e o valor de pedido dos produtos "Mouse" (considere que a palavra mouse em qualquer parte do nome do produto) 3. Buscando recompensar os representantes comerciais, a empresa solicitou ao analista de banco de dados o desenvolvimento de uma consulta que recupere os principais dados dos representantes comerciais mais efcientes. A efciência, neste caso, está relacionada ao valor dos pedidos emitidos por estes representantes. A ideia da empresa é prospectar o aumento de 5% para os primeiros 10 representantes mais efcientes, 3% para os próximos 5 mais efcientes e 2% para os demais representantes que possuam ao menos U$ 50, em pedidos. Para isso, a consulta deve projetar os seguintes dados: identifcador, primeiro nome, último nome e salário dos representantes comerciais; valor total dos pedidos realizados; e prospecção do percentual de aumento (novo salário). Enfm, você é o analista e eu solicitei a consulta :-), mãos a obra! Pg. 3/3

31 Objetivo TSI33A Banco de Dados 1 Semana 08 Data Manipulation Language && Backup/Restore Introduzir os utilitários de backup e restore do PostgreSQL Consolidar o conteúdo de linguagem de manipulação de dados Avaliação Exatidão: os comandos e as instruções SQL estão corretas? Estilo: os comandos fazem uso adequado dos parâmetros? Começando Quantas vezes você ouviu a pergunta: Tem backup né?. No mundo corporativo os dados são tão valiosos que não se pode pensar em uma infraestrutura de sistema de banco de dados sem considerar os procedimentos de backup e restore. Desta forma, todo sistema de banco de dados possui comandos para realizar regularmente o backup e restore dos dados. Regularmente backup e restore? Não seria regularmente backup e esporadicamente restore? Cuidado, quantas vezes você ouviu a frase: O O backup não funcionou!. Certo de que arquivos grandes podem ser facilmente corrompidos e as pequenas mudanças no sistema de banco de dados ou no schema dos dados podem influenciar no restore, faça o restore regularmente. Atenção, faça os testes de restore em uma base de dados de homologação ou teste e nunca na base de produção, salvo quando necessário. No sistema de banco de dados PostgreSQL 9.4 há três abordagens para fazer o backup dos dados: SQL dump; File system level backup; e Continuous archiving. Devido a compatibilidade do restore entre versões mais recentes do sistema de banco de dados PostgreSQL (ou futuras versões) e a independência da arquitetura de máquina (e.g. 32bits, 64bits), neste pset será abordado o método SQL dump. Para conhecer os outros métodos de backup/restore acesso o endereço eletrônico Fazendo o backup com o utilitário pg_dump A ideia do método SQL dump é gerar um arquivo com os comandos SQL que, quando alimentado de volta ao sistema de banco de dados, recriará o banco de dados no mesmo estado em que estava no momento do dump. Esse método foi utilizado para criar e popular a base de dados tsi33a do amazonia.td.utfpr.edu.br com os modelos Human Resources (HR) e Order Entity (OE) :-). Durante os psets anteriores o método também foi utilizado parcialmente com a execução dos scripts SQL. O pg_dump é um utilitário poderoso e responsável pelo SQL dump. Ele permite realizar o procedimento de backup a partir de qualquer host que tenha acesso ao banco de dados (a conexão está sujeita aos mecanismos de autenticação de clientes). Pg. 1/4

32 Em geral, para realilzar o backup de toda a base de dados (e.g. tsi33a e todos os schemas) é necessário ter acesso à base de dados e aos objetos da base de dados (tabelas, visões, esquemas etc), por isso, as vezes o comando deve ser executado como superusuário. Se você não tem privilégios suficientes para fazer backup de todo o banco de dados, é possível fazer backup de porções do banco de dados (determinados esquemas, determinadas tabelas, visões, etc.). A sintaxe básica do pg_dump é: pg_dump [connection-option...][option...][dbname] Veja o exemplo abaixo de backup do esquema user da base de dados tsi33a. $pg_dump -h amazonia.td.utfpr.edu.br -U user -n user --inserts -c -v tsi33a > tsi33a_user.sql Detalhe dos parâmetros: -h especifica o servidor do sistema de banco de dados -U usuário do sistema de banco de dados com permissão de executar o comando -n o schema da base de dados (omitir o parâmetro para selecionar todos os esquemas) --inserts os dados serão gerados conforme a sintaxe INSERT INTO...VALUES -c remove os objetos do banco de dados para recriá-los -v exibe as saídas no terminal ou prompt de comando > direcionamento da saída para o arquivo No exemplo anterior o arquivo tsi33a_user.sql foi gerado em formato texto. Isso significa que é possível abrí-lo e identificar seus comandos por meio de qualquer editor de texto. Além disso, o arquivo não é comprimido. Essas são características do formato de saída padrão de arquivo do pg_dump. Outro formato de arquivo é o.dump. Esse formato de saída é flexível e comprime os dados (compacta), além de realizar o backup mais rápido. Para especificar esse formato de arquivo utilize o parâmetro -Fc. $pg_dump -h amazonia.td.utfpr.edu.br -U user -n user -v -Fc tsi33a > tsi33a_user.dump Agora vamos realizar o backup do seu esquema na base de dados tsi33a do amazonia.td.utfpr.edu.br. No terminal do GNU-Linux ou prompt de comando do MS-Windows execute (substitua <RA> pelo número do registro acadêmico): $pg_dump -h amazonia.td.utfpr.edu.br -U <RA> -n <RA> --inserts -c -v tsi33a > tsi33a_<ra>.sql Em seguida execute: $pg_dump -h amazonia.td.utfpr.edu.br -U <RA> -n <RA> -v -Fc tsi33a > tsi33a_<ra>.dump Após a execução dos dois comandos abra os arquivos tsi33a_<ra>.sql e tsi33a_<ra>.dump em um editor de texto simples. Os arquivos possuem o mesmo conteúdo? Em seguida veja a propriedade tamanho dos arquivos. Qual arquivo possui o menor tamanho? Pg. 2/4

33 Para detalhes do utilitário pg_dump acesse a documentação no endereço eletrônico ou digite man pg_dump no terminal do GNU-Linux. Recuperando o backup com o utilitário psql e pg_restore O restore do banco de dados depende do formato de arquivo. Se o formato do arquivo for.sql utilize o utilitário psql. Por exemplo: $psql -h amazonia.td.utfpr.edu.br -U user -d tsi33a -f tsi33a_user.sql Esse comando não é novidade. Ele foi executado na criação dos modelos Human Resources (HR) e Order Entity (OE) no servidor amazonia.td.utfpr.edu.br. Quando o formato do arquivo for.dump, utilize o utilitário pg_restore. A sintaxe básica do pg_dump é: pg_restore [connection-option...][option...][filename] Veja o exemplo abaixo de restore do arquivo tsi33a_user.dump no servidor amazonia.td.utfpr.edu.br. $pg_restore -h amazonia.td.utfpr.edu.br -U user -Fc -d tsi33a -n user -c -v tsi33a_user.dump Agora é a sua vez de recuperar o backup Considere que você é um estagiário e execute o comando abaixo na base de dados tsi33a. UPDATE EMPLOYEES SET MANAGER_ID = 101; Ops! Você acaba fazer um belo trabalho na base de dados. Sabe o que você fez? Definiou a colaboradora Neena Kochhar como gerente de todos os colaboradores, inclusive ela mesma. Agora você precisa realizar o restore e desfazer esse belo trabalho. No terminal do GNU-Linux ou prompt de comando do MS-Windows execute (substitua <RA> pelo número do registro acadêmico): $psql -h amazonia.td.utfpr.edu.br -U <RA> -d tsi33a -f tsi33a-user.sql Verifique se a mudança feita anteriormente foi desfeita. Faça novamente o belo trabalho. Em seguida execute: $pg_restore -h amazonia.td.utfpr.edu.br -U user -Fc -d tsi33a -n <RA> -c -v tsi33a_user.dump Verifique novamente o estado da tabela EMPLOYEES. Para detalhes do utilitário pg_restore acesse a documentação no endereço eletrônico ou digite man pg_resotre no terminal do GNU-Linux. Pg. 3/4

34 Exercitando 1. A base de dados tsi33a possui 359 produtos cadastrados. É possível verificar essa quantidade a partir da consulta abaixo: SELECT COUNT(PRODUCT_ID) FROM PRODUCT_INFORMATION; Cada produto possui um status que pode assumir o valor: obsoleto (obsolete), planejado (planned), disponível (orderable), em desenvolvimento (under development) ou sem status (NULL). A consulta abaixo recupera os possíveis valores de status dos produtos: SELECT DISTINCT PRODUCT_STATUS FROM PRODUCT_INFORMATION; Informações sobre o estoque dos produtos são registradas na tabela INVENTORIES, incluindo o armazém e a quantidade disponível. Alguns produtos novos ainda não possuem estoque e outros a quantidade disponível no estoque é zero. Informações sobre o estoque dos produtos são importantes para as estratégias de logística e remanejamento, por isso, sua tarefa é: Recuperar os produtos que não possuem estoque ou a quantidade no estoque é zero. Projete o identificador, nome e status dos produtos e, para os produtos com estoque zero, o identificador e nome do armazém, bem como a quantidade em estoque PRODUCT_ID PRODUCT_NAME PRODUCT_STATUS WAREHOUSE_ID WAREHOUSE_NAME QUANTITY_ON_HAND ESD Bracelet/Clip orderable 9 Bombay LCD Monitor 11/PM under development 1743 HD /E planned 1761 CD-ROM 600/I/32x under development 1782 Compact 400/DQ obsolete 1910 FG Stock - H orderable Soy Formula Rice Formula Leakguard Overnight Analisar o resultado do item anterior. Atualizar para 10 a quantidade em estoque dos produtos disponíveis em um armazém e que possuem quantidade zero. Verificar se existem lançamentos de pedido para os produtos sem status. Caso existam, atualizar o valor do status para obsolete, caso contrário, atualizar para planned Inserir um novo armazém, chamado Brazil, na localidade Rua Frei Caneca 1360, São Paulo/SP- BR (verificar se a localidade já está cadastrada) Inserir um estoque de 100 unidades (tabela disponíveis e que não possuem estoque/armazém INVENTORIES) no armazém Brasil para os produtos 2. Remover os armazéns que não possuem produtos armazenados Pg. 4/4

35 Objetivo TSI33A Banco de Dados 1 Semana 09 Data Definition Language && Backup Regular (.sh pgagent) Introdução à automatização de backups Consolidar o conteúdo de instruções DDL Leitura Complementar Automated Backup on Linux: https://wiki.postgresql.org/wiki/automated_backup_on_linux Livro: NEVES, Julio Cezar. Programação Shell Linux. 8. ed. Rio de Janeiro, RJ: Brasport, p. ISBN Avaliação Exatidão: a estrutura das instruções SQL e dos comandos de backup estão corretos? Estilo: a estrutura das instruções SQL e dos comandos de backup seguem as boas práticas? Começando No pset08 os utilitários pg_dump e pg_restore foram apresentados como instrumentos para realizar as atividades de backup e restore. Ambos utilitários são comumente utilizados no mundo do PostgreSQL, contudo, o pg_dump é complementado com técnicas para realizar de forma automática e regular o backup das bases de dados. Assim, a atividade diária de backup deixa de ser uma preocupação para o administrador do sistema de banco de dados. No PostgreSQL duas abordagens são utilizadas: Shell Script + cron e pgagent. Neste pset (pset09) a abordagem Shell Script + cron será explorada. Programando seu script de backup com Shell Script Shell script é uma linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, dependendo do interpretador de comandos utilizado. No GNU-Linux o interpretador de comandos é o bash. O bloco de código abaixo é um Shell script de execução do utilitário pg_dump para criar um arquivo de backup (.dump) conforme os valores das variáveis HOSTNAME, PORT, USER e DATABASE. Para não ocorrer substituição do backup o nome do arquivo é formado pelo nome da base de dados mais a data e hora de geração do backup. #!/bin/sh # variáveis do comando de backup HOSTNAME="amazonia.td.utfpr.edu.br" PORT="5432" USER="user" DATABASE="tsi33a" # arquivo de backup em /tmp com no formato: $DATABSE<ano><mês><dia>_<hora><min.><seg.> pg_dump -h $HOSTNAME -p $PORT -U $USER -C -Fc $DATABASE > /tmp/$database-`date +"%Y%m%d_%H%M%S"`.dump Pg. 1/5

36 Na pasta do usuário aluno /home/aluno crie uma subpasta denominada TSI33A/pSet09. Em seguida, salve nesta pasta o arquivo de Shell script cronpgbackup.sh. No terminal do GNU-Linux adicione a permissão de execução para o arquivo cronpgbackup.sh: $chmod +x /home/aluno/cronpgbackup.sh Execute o script através do comando: $./home/aluno/cronpgbackup.sh Para ver o resultado (o o arquivo de backup gerado pelo script) liste o conteúdo da pasta temporária. $ls /tmp/ Não é o objetivo deste pset ensinar a programação Shell script, apenas exemplificar seu uso para geração de backups. Portanto, para saber mais sobre Shell Script consulte o livro Programação Shell Linux (Julio Cezar Neves) disponível na biblioteca do Campus Toledo da UTFPR. Entendendo o daemon cron O cron é um daemon que permite agendar a execução de comandos e processos nos sistemas GNU- Linux. Uau! O que é um daemon? Daemons são programas ou serviços que executam em background (segundo plano) e são, normalmente, inicializados no boot do sistema operacional. Para executar os comandos e processos agendados, denominados de tarefas, o cron usa um arquivo de tabela de agendamento (crontab). O arquivo crontab situa-se no diretório geral /etc ou no diretório específico (e exclusivo) para cada usuário /var/spool/cron/. Execute no terminal do GNU-Linux os seguintes comandos (a senha é o mesmo nome do usuário postgres :-) ): $su postgres $crontab -e O crontab possui o seguinte formato e entrada: [minutos] [horas] [dias_do_mês] [mês] [dias_da_semana] [usuário] [comando] Detalhes de cada coluna: minutos: 0 a 59 (* para quaquer minuto) horas: 0 a 23 (* para qualquer hora) dias_do_mês: 1 a 31 (* para todos os dias do mês) mês: 1 a 12 (* para todos os meses) dias_da_semana: 0 a 7 (* para todos os dias da semana) usuário: usuário que executará o comando comando: tarefa a ser executada Pg. 2/5

37 Insira o conteúdo abaixo após a última linha do arquivo em edição (substitua <RA> pelo número do registro acadêmico; <X> pela hora corrente e <Y> pelo minuto corrente + 5 min): # backup database tsi33a schema <RA> <Y> <X> * * * postgres pg_dump -h amazonia.td.utfpr.edu.br -U <RA> -n <RA> -v -Fc tsi33a > /tmp/tsi33a_<ra>.dump Salve o conteúdo do arquivo e aguarde o comando ser executado na hora e no minuto agendado no crontab. Em seguida, verifique se o arquivo foi gerado na pasta /tmp: $ls /tmp/ Se o arquivo foi gerado, parabéns! Caso o arquivo não seja gerado você falhou :-) - tente novamente. Agendando seu script de backup no crontab Em grandes ambientes corporativos, cujo volume de dados também é grande, o backup é realizado duas ou mais vezes ao dia. Vamos contextualizar esse tipo de ambiente: A Cooperativa Central de Pesquisa Agrícola COODETEC é uma empresa de base tecnológica voltada à agricultura que pesquisa e comercializa sementes de milho, soja e trigo de alta qualidade e adaptadas a diferentes climas e solos, com mais rendimento e menos risco. A COODETEC tem sede em Cascavel/PR, onde mantém escritório central, centro de treinamento, além dos laboratórios, câmaras secas e casas de vegetação. Outros centros da COODETEC estão localizados em Palotina/PR, Goioerê/PR, Paracatu/MG, Rio Verde/GO e Primavera do Leste/MT (Fonte: Entre os anos de 2008 e 2012 (período que eu trabalhei na COODETEC) a empresa gerava grandes volumes de dados, provenientes da produção, análise de qualidade, comercialização e pesquisa de sementes, além de outras fontes de dados, tais como, análise de solos, frota de veículos, relacionamento com produtores e clientes, informações contábies, informações de recursos humanos, etc. O backup da base de dados de empresas de porte igual ou superior a COODETEC é na escala de Gigabytes/Terabytes. Gerar um backup desse tamanho é oneroso e demorado, por isso é necessário que essa tarefa seja automatizada com verificações. Uma forma de automatizar e verificar possíveis problemas é por meio de scripts e agendamento de tarefas. Agora agende a execução diária do script cronpgbackup.sh. Exercitando 1. Conside um sistema multi-empresa e multi-filial que gerencia representantes, fornecedores, clientes e usuários. Os representantes, fornecedores, clientes e usuários possuem um conjunto de dados que são comuns entre eles e outro conjunto de dados que são específicos. Portanto, a representação no modelo relacional possui um conjunto de entidades generalistas (pessoas) e um conjunto de entidades especializadas (representantes, fornecedor,es clientes e usuários). Pg. 3/5

38 Uma relaçao pessoa (generalista) possui um ou mais endereços (i.e. um representante, fornecedor, cliente ou usuário possui um ou mais endereços). Uma relação cliente, além do endereço padrão na relação generalista, possui mais dois endereços: endereço de cobrança e endereço de entrega. A relação usuário possui um login, uma senha e a relação de empresas e filiais que possui acesso. As relações empresa, filial e pessoa possuem o atributo situação, cujo objetivo é indicar se a entidade está ativa ou inativa. A situação do usuário indica se a entidade está ativa ou inativa para acessar o sistema. Analise o diagrama abaixo e identifique as regras de integridade (valor mandatório, chaves, domínio e semântica) e os tipos de dados. Sua missão é: Definir as instruções DDL do diagrama (com as regras de integridade e os tipos de dados) Criar a base de dados homologacao no servidor localhost $createdb -h localhost -U postgres homologacao Recuperar o backup somente dos dados a partir do arquivo homologacao.dump $pg_restore -h localhost -U postgres -d homologacao -a -Fc -v homologacao.dump Se o backup homologacao.dump não funcionar, significa que você falhou. 2. Considerando a resolução do Exercício 1, 1 elabore as seguintes consultas: Recuperar o nome e CPF dos clientes que também são fornecedores Pg. 4/5

PostgreSQL 9.4 Primeiros Passos no Microsoft Windows

PostgreSQL 9.4 Primeiros Passos no Microsoft Windows www.masiena.com.br marcio@masiena.com.br masiena@hotmail.com PostgreSQL 9.4 Primeiros Passos no Microsoft Windows Uma das maiores dificuldades quando se começa a trabalhar com qualquer software é dar os

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita: SQL Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino de Ciências

Leia mais

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. SQL (Structured Query Language) SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. Além de permitir a realização de consultas, SQL possibilita: definição

Leia mais

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015 SQL - Banco de Dados 1 Disciplina: Banco de Dados Professor: José Antônio 2 Tópicos de discussão Criando um banco de dados Incluindo, atualizando e excluindo linhas nas tabelas Pesquisa básica em tabelas

Leia mais

Projeto Integrador Programação para Internet

Projeto Integrador Programação para Internet FACULDADE DE TECNOLOGIA SENAC GOIÁS SEGURANÇA DA INFORMAÇÃO Projeto Integrador Programação para Internet AYLSON SANTOS EDFRANCIS MARQUES HEVERTHON LUIZ THIAGO SHITINOE AYLSON SANTOS EDFRANCIS MARQUES HEVERTHON

Leia mais

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha. www.lrocha.com

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha. www.lrocha.com BANCO DE DADOS WEB AULA 4 linguagem SQL: subconjuntos DCL, DDL e DML professor Luciano Roberto Rocha www.lrocha.com O que é SQL? Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL,

Leia mais

Manual de Instalação. Instalação via apt-get

Manual de Instalação. Instalação via apt-get Manual de Instalação Instalação via apt-get Índice de capítulos 1 - Pré-requisitos para instalação......................................... 01 2 - Instalando o SIGA-ADM.................................................

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

Manual do Usuário. Sistema Financeiro e Caixa

Manual do Usuário. Sistema Financeiro e Caixa Manual do Usuário Sistema Financeiro e Caixa - Lançamento de receitas, despesas, gastos, depósitos. - Contas a pagar e receber. - Emissão de cheque e Autorização de pagamentos/recibos. - Controla um ou

Leia mais

1. Sua primeira tarefa é determinar a estrutura da tabela DEPARTMENTS e seu conteúdo.

1. Sua primeira tarefa é determinar a estrutura da tabela DEPARTMENTS e seu conteúdo. Exercícios (LAB SQL) AULA 01 (INTRODUÇÃO SELECT) Você foi admitido como programador SQL da XYZW Corporation. Sua primeira tarefa é criar alguns relatórios com base nos dados das tabelas de recursos humanos.

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br 1. Abordagem geral Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br Em primeiro plano, deve-se escolher com qual banco de dados iremos trabalhar. Cada banco possui suas vantagens,

Leia mais

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1. Departamento de Engenharia Informática 2008/2009 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

Manual de Instalação. Instalação via apt-get. SIGA-ADM versão 12.02

Manual de Instalação. Instalação via apt-get. SIGA-ADM versão 12.02 Manual de Instalação Instalação via apt-get SIGA-ADM versão 12.02 Índice de capítulos 1 - Pré-requisitos para instalação..................................................... 05 2 - Instalando o SIGA-ADM..............................................................

Leia mais

Introdução ao Sistema. Características

Introdução ao Sistema. Características Introdução ao Sistema O sistema Provinha Brasil foi desenvolvido com o intuito de cadastrar as resposta da avaliação que é sugerida pelo MEC e que possui o mesmo nome do sistema. Após a digitação, os dados

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL

TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL Este tutorial tem por objetivo explicar a criação de bancos de dados espaciais usando o Postgis que é a extensão espacial do PostgreSQL. Os passos que serão

Leia mais

Banco de Dados. PostgreSQL

Banco de Dados. PostgreSQL Banco de Dados PostgreSQL 2010 Banco de Dados PostgreSQL Banco de Dados II Equipe: Equipe Postgre Líder: Alexandre Strauss... 01 Aline Cássia Lima dos Santos... 02 Erik Machado... 09 Fernando Gomes Brandão...

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II BANCO DE DADOS II AULA 1 Linguagem SQL Linguagem de definição de dados (DDL) DISCIPLINA: Banco de Dados

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

FileMaker 13. Guia de ODBC e JDBC

FileMaker 13. Guia de ODBC e JDBC FileMaker 13 Guia de ODBC e JDBC 2004 2013 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e Bento são marcas comerciais da

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

DDL, Lidando com as diferenças das instruções SQL nos diferentes SGBD s

DDL, Lidando com as diferenças das instruções SQL nos diferentes SGBD s DDL, Lidando com as diferenças das instruções SQL nos diferentes SGBD s Dio Rafael Jacobs 1, Juliano Varella de Carvalho 1 1 Centro Universitário Feevale Instituto de Ciência Exatas e Tecnológicas Novo

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente

Bases de Dados. Lab 1: Introdução ao ambiente Departamento de Engenharia Informática 2010/2011 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

BANCO DE DADOS CONCEITOS BÁSICOS

BANCO DE DADOS CONCEITOS BÁSICOS Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa Introdução O que é um BD? Operações

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Banco de Dados I. Introdução Conceitos

Banco de Dados I. Introdução Conceitos Banco de Dados I Introdução Conceitos Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Conceitos Fundamentais de Banco de Dados; Características

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

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B BlackBerry Professional Software para Microsoft Exchange Versão: 4.1 Service pack: 4B SWD-313211-0911044452-012 Conteúdo 1 Gerenciando contas de usuários... 7 Adicionar uma conta de usuário... 7 Adicionar

Leia mais

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes Banco de dados 1 Linguagem SQL DDL e DML Professor: Victor Hugo L. Lopes Agenda: Introdução à linguagem de dados; DDL; DML; CRUD; Introdução à linguagem SQL. 2 Por que precisamos da linguagem SQL? A algebra

Leia mais

Manual da Ferramenta Metadata Editor

Manual da Ferramenta Metadata Editor 4 de março de 2010 Sumário 1 Introdução 3 2 Objetivos 3 3 Visão Geral 3 3.1 Instalação............................. 3 3.2 Legenda.............................. 4 3.3 Configuração Inicial........................

Leia mais

Manual de Instalação e Configuração do SQL Express

Manual de Instalação e Configuração do SQL Express Manual de Instalação e Configuração do SQL Express Data alteração: 19/07/11 Pré Requisitos: Acesse o seguinte endereço e faça o download gratuito do SQL SRVER EXPRESS, conforme a sua plataforma x32 ou

Leia mais

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA XML e Banco de Dados DCC/IM/UFBA Banco de Dados na Web Armazenamento de dados na Web HTML muito utilizada para formatar e estruturar documentos na Web Não é adequada para especificar dados estruturados

Leia mais

Introdução ao Derby. Version 10.2 Derby Document build: December 11, 2006, 7:16:07 AM (PST)

Introdução ao Derby. Version 10.2 Derby Document build: December 11, 2006, 7:16:07 AM (PST) Introdução ao Derby Version 10.2 Derby Document build: December 11, 2006, 7:16:07 AM (PST) Contents Direitos autorais reservados... 3 Introdução ao Derby...4 Opções de implementação...4 Requisitos do

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

LINX POSTOS AUTOSYSTEM

LINX POSTOS AUTOSYSTEM LINX POSTOS AUTOSYSTEM Manual Sumário 1 INTRODUÇÃO AO POSTGRES...3 2 INSTALAÇÃO...3 2.1 Download...3 2.2 Instalação...4 3 CONFIGURAÇÃO...7 3.1 CIDR-ADDRESS...8 3.2 Biometria...9 4 LINHA DE COMANDO...10

Leia mais

Guia de Instalação e Inicialização. Para WebReporter 2012

Guia de Instalação e Inicialização. Para WebReporter 2012 Para WebReporter 2012 Última revisão: 09/13/2012 Índice Instalando componentes de pré-requisito... 1 Visão geral... 1 Etapa 1: Ative os Serviços de Informações da Internet... 1 Etapa 2: Execute o Setup.exe

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

PgAdmin. O pgadmin é um software gráfico para administração do SGBD PostgreSQL disponível para Windows e UNIX.

PgAdmin. O pgadmin é um software gráfico para administração do SGBD PostgreSQL disponível para Windows e UNIX. 1/20 PgAdmin O pgadmin é um software gráfico para administração do SGBD PostgreSQL disponível para Windows e UNIX. Site para download. Caso queira a última versão - http://www.pgadmin.org/download/ É uma

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

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127 Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

4.6. SQL - Structured Query Language

4.6. SQL - Structured Query Language 4.6. SQL - Structured Query Language SQL é um conjunto de declarações que é utilizado para acessar os dados utilizando gerenciadores de banco de dados. Nem todos os gerenciadores utilizam SQL. SQL não

Leia mais

PAV - PORTAL DO AGENTE DE VENDAS AGL Versão 2.0.6. Manual de Instalação e Demonstração AGL Sistemas Corporativos

PAV - PORTAL DO AGENTE DE VENDAS AGL Versão 2.0.6. Manual de Instalação e Demonstração AGL Sistemas Corporativos PAV - PORTAL DO AGENTE DE VENDAS AGL Versão 2.0.6 Manual de Instalação e Demonstração AGL Sistemas Corporativos Add-on responsável pela integração do SAP Business One com o setor comercial através da internet.

Leia mais

GUIA DE INÍCIO RÁPIDO NHS NOBREAK MANAGER 4.0 TOPOLOGIA MÍNIMA DE REDE PARA A INSTALAÇÃO E USO DO SOFTWARE COM GPRS

GUIA DE INÍCIO RÁPIDO NHS NOBREAK MANAGER 4.0 TOPOLOGIA MÍNIMA DE REDE PARA A INSTALAÇÃO E USO DO SOFTWARE COM GPRS GUIA DE INÍCIO RÁPIDO NHS NOBREAK MANAGER 4.0 TOPOLOGIA MÍNIMA DE REDE PARA A INSTALAÇÃO E USO DO SOFTWARE COM GPRS CONFIGURAÇÃO DO GPRS 1. Entre no site da NHS na página de homologação do NHS NOBREAK

Leia mais

CRIANDO, ALTERADO E EXCLUINDO TABELAS, INSERINDO, SELECIONANDO, ALTERANDO E EXCLUINDO DADOS

CRIANDO, ALTERADO E EXCLUINDO TABELAS, INSERINDO, SELECIONANDO, ALTERANDO E EXCLUINDO DADOS CRIANDO, ALTERADO E EXCLUINDO TABELAS, INSERINDO, SELECIONANDO, ALTERANDO E EXCLUINDO DADOS Prof. Me. Hélio Esperidião SQL - STRUCTURED QUERY LANGUAGE SQL é uma linguagem padronizada para a definição e

Leia mais

FileMaker 14. Guia de ODBC e JDBC

FileMaker 14. Guia de ODBC e JDBC FileMaker 14 Guia de ODBC e JDBC 2004 2015 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e FileMaker Go são marcas comerciais

Leia mais

Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de

Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de BD Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de informação para nosso êxito no curso. A intenção de elaborar

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico Editora Carlos A. J. Oliviero Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico Orientado por Projeto 1a Edição 2 Reimpressão São Paulo 2011 Érica Ltda. Noções Livrarse Preparação muitas muita Sumário

Leia mais

Administração de Banco de Dados

Administração de Banco de Dados Administração de Banco de Dados Professora conteudista: Cida Atum Sumário Administração de Banco de Dados Unidade I 1 INTRODUÇÃO A BANCO DE DADOS...1 1.1 Histórico...1 1.2 Definições...2 1.3 Importância

Leia mais

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS Esclarecimento Licenciamento de Uso Este documento é propriedade intelectual 2012 da NRSYSTEM COMÉRCIO E SERVIÇOS DE INFORMÁTICA LTDA-ME, consiste de uma compilação de diversos materiais entre livros,

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Manual de Instalação. Instalação via apt-get

Manual de Instalação. Instalação via apt-get Manual de Instalação Instalação via apt-get Índice de capítulos 1 - Pré-requisitos para instalação............................ 01 2 - Instalando o SIGA-ADM................................. 01 2.1 - Preparando

Leia mais

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22 Sumário Agradecimentos... 19 Sobre o autor... 20 Prefácio... 21 Capítulo 1 Bem-vindo ao MySQL... 22 1.1 O que é o MySQL?...22 1.1.1 História do MySQL...23 1.1.2 Licença de uso...23 1.2 Utilizações recomendadas...24

Leia mais

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011 Banco de Dados I Aula 12 - Prof. Bruno Moreno 04/10/2011 Plano de Aula SQL Definição Histórico SQL e sublinguagens Definição de dados (DDL) CREATE Restrições básicas em SQL ALTER DROP 08:20 Definição de

Leia mais

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 1 1- Bancos de dados compreendem desde agendas telefônicas até sistemas computadorizados. (Sim) 2- Só podemos instalar o SQL Server Express se tivermos

Leia mais

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS Fábio Roberto Octaviano Conceitos da arquitetura Oracle e da Linguagem SQL Recuperar dados por meio de SELECT Criar relatórios de dados classificados

Leia mais

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS) BANCO DE DADOS SQL (DDL: CREATE TABLE, CONSTRAINTS) Prof. Edson Thizon Histórico Entre 1974 e 1979, o San José Research Laboratory da IBM desenvolveu um SGDB relacional que ficou conhecido como Sistema

Leia mais

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL BANCO DE DADOS 2 SQL (CREATE TABLE, CONSTRAINTS, DELETE, UPDATE e INSERT) Prof. Edson Thizon SQL SQL ( structured query language ) é uma linguagem comercial de definição e manipulação de banco de dados

Leia mais

Histórico de revisões

Histórico de revisões Histórico de revisões Data Versão Descrição Autor 13/11/2009 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Passos para a instalação do SQL Server O MS SQL Server Conceitos relacionais Bancos de dados

Leia mais

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição 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 Ingress SQL

Leia mais

Banco de Dados. Maurício Edgar Stivanello

Banco de Dados. Maurício Edgar Stivanello Banco de Dados Maurício Edgar Stivanello Agenda Conceitos Básicos SGBD Projeto de Banco de Dados SQL Ferramentas Exemplo Dado e Informação Dado Fato do mundo real que está registrado e possui um significado

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo Departamento de Engenharia Informática 2012/2013 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião INTRODUÇÃO BANCO DE DADOS Prof. Msc. Hélio Esperidião BANCO DE DADOS Podemos entender por banco de dados qualquer sistema que reúna e mantenha organizada uma série de informações relacionadas a um determinado

Leia mais

Linguagem SQL Sub-linguagem DDL

Linguagem SQL Sub-linguagem DDL Linguagem SQL Sub-linguagem DDL A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language para suas

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010 BANCO DE DADOS: SQL UERN - Universidade do Estado do Rio Grande do Norte. Departamento de Ciências da Computação. 27 de janeiro de 2010 índice 1 Introdução 2 3 Introdução SQL - Structured Query Language

Leia mais

4.0 SP2 (4.0.2.0) maio 2015 708P90911. Xerox FreeFlow Core Guia de Instalação: Windows 8.1 Update

4.0 SP2 (4.0.2.0) maio 2015 708P90911. Xerox FreeFlow Core Guia de Instalação: Windows 8.1 Update 4.0 SP2 (4.0.2.0) maio 2015 708P90911 2015 Xerox Corporation. Todos os direitos reservados. Xerox, Xerox com a marca figurativa e FreeFlow são marcas da Xerox Corporation nos Estados Unidos e/ou em outros

Leia mais

MANUAL DE CONFIGURAÇÃO

MANUAL DE CONFIGURAÇÃO MANUAL DE CONFIGURAÇÃO CONTMATIC PHOENIX SUMÁRIO CAPÍTULO I APRESENTAÇÃO DO ACESSO REMOTO... 3 1.1 O que é o ACESSO REMOTO... 3 1.2 Como utilizar o ACESSO REMOTO... 3 1.3 Quais as vantagens em usar o PHOENIX

Leia mais

Segurança de Acesso a Banco de Dados no MS SQL Server

Segurança de Acesso a Banco de Dados no MS SQL Server Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,

Leia mais

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

INSTALAÇÃO PRINTERTUX Tutorial

INSTALAÇÃO PRINTERTUX Tutorial INSTALAÇÃO PRINTERTUX Tutorial 2 1. O Sistema PrinterTux O Printertux é um sistema para gerenciamento e controle de impressões. O Produto consiste em uma interface web onde o administrador efetua o cadastro

Leia mais

SQL DDL. Frederico D. Bortoloti freddb@ltc.ufes.br

SQL DDL. Frederico D. Bortoloti freddb@ltc.ufes.br Banco de Dados I SQL DDL Frederico D. Bortoloti freddb@ltc.ufes.br Introdução Modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de padrão SQL (Structured Query Language)

Leia mais

Integrated User Verification Guia de Implementação do Cliente

Integrated User Verification Guia de Implementação do Cliente Integrated User Verification Guia de Implementação do Cliente Versão 2.5 31.01.12 e-academy Inc [CONFIDENCIAL] SUMÁRIO INTRODUÇÃO... 3 FINALIDADE E PÚBLICO-ALVO... 3 SOBRE ESTE DOCUMENTO... 3 TERMOS MAIS

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos

Leia mais

Configuração de Digitalizar para E-mail

Configuração de Digitalizar para E-mail Guia de Configuração de Funções de Digitalização de Rede Rápida XE3024PT0-2 Este guia inclui instruções para: Configuração de Digitalizar para E-mail na página 1 Configuração de Digitalizar para caixa

Leia mais

Tolerância a Falhas em sistemas distribuídos (programação)

Tolerância a Falhas em sistemas distribuídos (programação) Tolerância a Falhas em sistemas distribuídos (programação) Arthur Zavattieri Cano Lopes Curso de Redes e Segurança de Sistemas Pontifícia Universidade Católica do Paraná Curitiba, Maio de 2009. Resumo

Leia mais

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS CLAUDIO RIBEIRO DA SILVA MARÇO 1997 2 1 - CONCEITOS GERAIS DE 1.1 - Conceitos Banco de Dados - Representa

Leia mais

Nome: n.º WEB Série 2B 2C 2D 2E Barueri, 17/08/2009 2ª Postagem Disciplina: Gerenciamento e Estrutura de Banco de Dados Professor: Márcio

Nome: n.º WEB Série 2B 2C 2D 2E Barueri, 17/08/2009 2ª Postagem Disciplina: Gerenciamento e Estrutura de Banco de Dados Professor: Márcio Nome: n.º WEB Série 2B 2C 2D 2E Barueri, 17/08/2009 2ª Postagem Disciplina: Gerenciamento e Estrutura de Banco de Dados Professor: Márcio MySQL Query Browser Após usarmos o ambiente MySQL Monitor, que

Leia mais

LexML Brasil. Parte 4a Kit Provedor de Dados

LexML Brasil. Parte 4a Kit Provedor de Dados LexML Brasil Parte 4a Kit Provedor de Dados Versão 1.0 (RC1) Brasília Fevereiro de 2011 Parte 4a Kit Provedor de Dados 2 LexML Brasil Parte 4a Kit Provedor de Dados Versão 1.0 (Maio/2010) 1. Introdução...

Leia mais

Guia de conceitos básicos API Version 2010-01-01

Guia de conceitos básicos API Version 2010-01-01 : Guia de conceitos básicos Copyright 2011 Amazon Web Services LLC ou suas afiliadas. Todos os direitos reservados. Conceitos básicos do Amazon RDS... 1 Cadastre-se no Amazon RDS... 2 Inicie uma instância

Leia mais

Laboratório de Banco de Dados II

Laboratório de Banco de Dados II Laboratório de Banco de Dados II Esquema de um banco de dados relacional Em aulas anteriores, vocês implantaram um projeto físico de banco de dados com todos os seus elementos, inclusive tratando do projeto

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

Leia mais

Manual de Instalação do SGA Livre

Manual de Instalação do SGA Livre Manual de Instalação do SGA Livre Retornar à Página Inicial Índice Introdução Instalação do Servidor Web e Banco de Dados Instalação do Controlador de Painéis Configuração do Cron Instalação do Painel

Leia mais

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas: Álgebra Relacional Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída operação (REL 1 ) REL 2 operação (REL 1,REL 2 ) REL 3 Operações básicas: seleção projeção

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais