2013/2014
MÓDULO: ACESSO REMOTO A BASE DE DADOS
CURSO PROFISSIONAL DE Técnico de informática de gestão
Emanuel Teixeira
O QUE É UMA BASE DE DADOS Uma Base de Dados é uma colecção de dados partilhados, interrelacionados e usados para múltiplos objectivos. O conceito de base de dados faz hoje parte do nosso dia a dia mesmo que por vezes de forma não explícita. As base de dados podem ser de ficheiros;
As base de dados podem ser relacionais; As base de dados mais comuns, são as relacionais, onde todo o modelo de negócio é trabalhado num Sistema de Gestão de Base de Dados (SGBD).
Emanuel Teixeira
SISTEMA DE ARMAZENAMENTO DE FICHEIROS
O primeiro sistema de armazenamento automático de dados foi o sistema de ficheiros que usou o mesmo modelo que os sistemas de ficheiros
manuais existentes. Num sistema de ficheiros cada aplicação cria e mantém os ficheiros com
todos os dados necessários para a sua execução. Quando surge uma nova aplicação, na maioria dos casos, é necessário criar novos ficheiros, com campos que provavelmente já existem noutros ficheiros
Emanuel Teixeira
PROBLEMAS COM AS BASE DE DADOS DE FICHEIROS
Elevada redundância; Inconsistência da informação; Inflexibilidade; Acessos concorrentes; Isolamento e integridade dos dados; Elevados custos de manutenção ;
Emanuel Teixeira
ELEVADA REDUNDÂNCIA; O mesmo tipo de informação pode ser guardado simultaneamente em múltiplos locais. Caso duas aplicações necessitem de determinado item de informação e não souberem que este já está registado noutro local ou estiver armazenado num ficheiro com uma estrutura diferente da pretendida.
Emanuel Teixeira
INCONSISTÊNCIA
DA INFORMAÇÃO
As diferentes versões de um item de informação podem estar em diferentes estágios de actualização (conter diferentes valores). É difícil manter a consistência a assegurar a integridade dos items de dados.
Emanuel Teixeira
INFLEXIBILIDADE Um pedido de informação que necessite de dados provenientes de diferentes locais pode não poder ser atendido em tempo útil. A aplicação pode não controlar todos os recursos necessários. Mesmo que os dados existam, pode não ser possível construir a informação.
Emanuel Teixeira
ACESSOS CONCORRENTES Diversas aplicações podem partilhar o acesso (leitura / escrita) aos ficheiros necessários para a sua execução. A inibição de acessos concorrentes pode prejudicar o desempenho das aplicações. Por outro lado, a sua permissão, pode originar inconsistência na informação disponibilizada. Caso as aplicações não contenham mecanismos de sincronização entre elas, pode ser disponibilizada informação errada. A implementação de mecanismos de interacção pode aumentar consideravelmente a complexidade das aplicações e o tempo necessário para a sua implementação e depuramento.
Emanuel Teixeira
ISOLAMENTO E INTEGRIDADE DOS DADOS Os dados encontram-se em diferentes ficheiros cada um com a estrutura e a organização que interessa à aplicação que o criou. Uma vez que o relacionamento entre os dados é feito ao nível das aplicações, estes permanecem “isolados” em cada componente (ficheiro). A eliminação ou alteração de parte destes dados por alguma outra aplicação pode facilmente conduzir à perda de integridade da informação.
Emanuel Teixeira
ELEVADOS CUSTOS DE MANUTENÇÃO Cada aplicação que acede a um determinado ficheiro tem que conter uma especificação do respectivo modelo físico e do seu protocolo de acesso. Uma simples alteração nesse ficheiro pode propagar a necessidade de alteração de todas as aplicações que acedem ou registam informação nesse ficheiro. Elevado custo resultante da afectação de pessoal para esse fim. “Desperdício” de tempo na realização de tarefas que não constituirão qualquer mais valia para o desempenho da aplicação.
Emanuel Teixeira
DADOS ESTRUTURADOS Quando os dados estão organizados (dispostos) de forma coerente caracterizam uma estrutura de dados São a organização e os métodos que manipulam determinada estrutura que lhe conferem singularidade A escolha de uma estrutura de dados apropriada pode tornar um problema complicado num de solução simples
Emanuel Teixeira
TIPOS DE ESTRUTURAS O estudo das estruturas de dados está em constante desenvolvimento, mas apesar disso existem estruturas clássicas que caracterizam os padrões As estruturas clássicas estão divididas em: – Tipo Estruturado • Arrays • Registos (records) • Ficheiros (files) – Estruturas avançadas • Pilha • Fila • Lista • Tabela de hash •Árvores •Grafos
Emanuel Teixeira
ARRAY Quando existe a necessidade de representar um conjunto de elementos através de um único identificador – Ex: notas de uma turma, que fazem mais sentido juntos Isso pode ser conseguido usando variáveis do tipo Array Onde cada elemento pode ser acedido rapidamente, bastando o nome do Array e o índice que indica a sua posição no Array
Emanuel Teixeira
O QUE SÃO ARRAY’S São estruturas de dados lineares e estáticas, isto é, são compostas por um número fixo (finito) de elementos de um determinado tipo de dados Sendo um dos mais simples tipos de estruturas de dados Os Arrays mantêm uma série de elementos de dados, do mesmo tamanho e tipo
Emanuel Teixeira
REGISTOS Ao contrário dos elementos do Array, onde todos os elementos têm de ser do mesmo tipo; A estrutura Registo, permite agrupar informação de tipos diferentes; Os seus elementos não são acedidos com base na posição dentro da estrutura, mas sim fazendo referência ao nome que o identifica;
Emanuel Teixeira
REGISTOS Aos elementos de um registo dá-se o nome de campos do registo que são identificados com: O nome do campo que identifica o elemento do registo; E o Tipo que representa o tipo de elemento que ocupará esse campo
Emanuel Teixeira
USO DE REGISTOS Em linguagens de programação clássicas do género do Basic, Fortran, Cobol, C, Pascal estas estruturas eram uma boa solução, para manipulação de grande quantidade de dados na resolução de problemas complexos Nas Linguagens Orientadas por Objetos, como é o caso do C#, existem soluções diferentes para este tipo de problemas, como é o caso do uso de Classes, tem uma utilização bastante mais abrangente
Emanuel Teixeira
SISTEMA DE GESTÃO DE BASE DE DADOS SGBD – conjunto de programas que permite desempenhar as tarefas de armazenamento e manipulação de dados, fornecendo aos programadores e utilizadores finais os dados tal como eles são pedidos. O acesso aos dados implica obrigatoriamente a comunicação com uma entidade (SGBD) que reserva para si os privilégios de acesso físico à base de dados e aos ficheiros que a compõem.
Emanuel Teixeira
CARACTERÍSTICAS DE SGBD Independência dos dados Independência entre as aplicações e o formato em que é registada a informação. Uma vez que cada aplicação apenas tem que comunicar com o SGBD no processo de consulta e alteração de dados, pode abstrair-se da forma como estes são internamente mantidos.
Emanuel Teixeira
NÍVEIS DE ABSTRAÇÃO Nível Físico (ou nível interno); Nível conceptual; Nível de visualização (“views” ou nível externo).
Emanuel Teixeira
NÍVEL FÍSICO (OU NÍVEL INTERNO) Descrição do armazenamento físico da informação numa base de dados. Definição das estruturas físicas que permitam obter um nível de desempenho, segurança e consistência satisfatório. Definição das políticas de armazenamento de informação, de acordo com o número, exigência e necessidades de cada cliente específico.
Emanuel Teixeira
NÍVEL CONCEPTUAL Abstracção do mundo real, no que respeita aos utilizadores da base de dados. O SGBD tem uma linguagem de definição de dados que permite ao utilizador descrever a implementação do esquema conceptual (esquemas de estrutura) pelo esquema físico. A base de dados conceptual é tida como incluindo todos os dados da organização.
Emanuel Teixeira
NÍVEL DE VISUALIZAÇÃO (“VIEWS” OU NÍVEL EXTERNO) Uma “view” (subesquema) é uma porção da base de dados conceptual ou uma abstracção de parte da base de dados conceptual. Pode ser apenas uma pequena base de dados ao mesmo nível de abstracção que a base de dados conceptual. Pode estar a um nível de abstracção mais elevado. Os dados de uma “view” podem ser construídos a partir da base de dados conceptual mas não estarem presentes na base de dados.
Emanuel Teixeira
COMANDOS SQL Comandos SQL, são comandos universais, que independentemente da linguagem de programação interagem com o SGBD; Os comandos SQL, são iguais entre SGBD, no entanto há diferenças de sintaxe;
Emanuel Teixeira
COMANDO SELECT
SELECT "nome_coluna" FROM "nome_tabela“; SELECT DISTINCT "nome_coluna“ FROM "nome_tabela"; SELECT "nome_coluna“ FROM "nome_tabela“ WHERE "condição"; SELECT "nome_coluna“ FROM "nome_tabela“ WHERE "condição simples“ {[AND|OR] "condição simples"}+; SELECT "nome_coluna“ FROM "nome_tabela“ WHERE "nome_coluna" IN ('valor1', 'valor2', ...); SELECT "nome_coluna“ FROM "nome_tabela“ WHERE "nome_coluna" BETWEEN ''valor1' AND ''valor2'; SELECT "nome_coluna“ FROM "nome_tabela“ WHERE "nome_coluna" LIKE {PATTERN};
Emanuel Teixeira
COMANDO SELECT
SELECT "nome_coluna“ FROM "nome_tabela“ [WHERE "condição"] ORDER BY "nome_coluna" [ASC, DESC]; SELECT COUNT("nome_coluna") FROM "nome_tabela"; SELECT "nome_coluna1", SUM("nome_coluna2") FROM "nome_tabela“ GROUP BY "nome_coluna1"; SELECT "nome_coluna1", SUM("nome_coluna2") FROM "nome_tabela“ GROUP BY "nome_coluna1“ HAVING (condição da função aritmética); SELECT "alias_tabela"."nome_coluna1" "aliar_coluna“ FROM "nome_tabela" "alias_tabela"; SELECT CONCAT (Nome_Regiao, Nome_Loja) FROM localizacao WHERE Nome_Loja = ‘Alijó';
Emanuel Teixeira
COMANDO CREATE
CREATE TABLE "nome_tabela“ (“Nome_coluna 1" "tipo_dados_para_coluna_1“, “…); CREATE VIEW "nome_da_Pseudo_Tabela" AS “comando SQL"; CREATE INDEX "nome_indice" ON "nome_tabela" (nome_coluna); DROP TABLE "nome_tabela_a_apagar";
Emanuel Teixeira
COMANDO ALTER
ALTER TABLE "nome_tabela“ [Especidicação a Alterar]; ALTER TABLE “nome_tabe” ADD “coluna_a_Adicionar (tipo_de_Dado); ALTER TABLE “nome_tabela” CHANGE “Nome_Antigo” “nome_novo tipo_de_campo”; ALTER TABLE “nome_tabela” MODIFY “Coluna_a_alterar tipo_novo”; ALTER TABLE “nome_tabela” DROP “coluna_a_suprimir”;
Emanuel Teixeira
COMANDO INSERT INTO, UPDATE, DELETE
INSERT INTO "nome_tabela" ("coluna 1", "coluna 2", ...) VALUES ("valor 1", "valor 2", ...); INSERT INTO "tabela 1" ("coluna 1", "coluna 2", ...) SELECT "coluna 3", "coluna 4", ... FROM "tabela 2"; UPDATE "nome_tabela“ SET "coluna 1" = [novo valor] WHERE "condição"; DELETE FROM "nome_tabela“ WHERE "condição";
Emanuel Teixeira
COMANDOS AVANÇADOS;
ALTER TABLE Artigo Cod_Cliente ADD PRIMARY KEY (SID); - Cria chave primária; SELECT Cod_Data_venda FROM linha_fatura UNION SELECT Cod_Data_venda FROM Cab_fatura; - Cria seleção a partir da união das duas condições;
SELECT SUM(vendas) FROM Cab_fatura WHERE EXISTS (SELECT * FROM Cod_Postal WHERE Nome_da_Região = ‘Alijó'); - o comando Exists verifica a existencia da condição e só nesse caso é apresentado.
Emanuel Teixeira
OPERADORES EM SQL; Operador
Descrição
Exemplo
Resultado
=
Igual a
2005 = 2005
True
>
Maior que
2>5
False
<
Menor que
2<5
True
>=
Maior ou Igual que
22 >= 21
True
<=
Menor ou Igual que
22 <=22
True
<> ou !=
Diferente
2 <> 2
False
Emanuel Teixeira
OPERADORES EM SQL;
SELECT "tipo de função" ("nome_coluna")FROM "nome_tabela"; SELECT SUM (Vendas) FROM valor; - Somatório; SELECT COUNT (Vendas) FROM valor; - Conta;
SELECT MAX (Vendas) FROM valor; - Valor máximo; SELECT MIN (Vendas) FROM valor; - Valor minimo;
SELECT AVG (Vendas) FROM valor; - Média;
Emanuel Teixeira
INSTALAÇÃO DO XAMPP
Emanuel Teixeira
INSTALAÇÃO DO XAMPP
Emanuel Teixeira
CONFIGURAÇÃO DO XAMPP
Emanuel Teixeira
CONFIGURAÇÃO DO XAMPP
Emanuel Teixeira
CONFIGURAÇÃO DO XAMPP
Emanuel Teixeira
CONFIGURAÇÃO DO XAMPP
Emanuel Teixeira
CRIAR BASE DE DADOS VISUALMENTE
Emanuel Teixeira
CRIAR BASE DE DADOS VISUALMENTE
Emanuel Teixeira
USO DE COMANDOS SQL NO MYSQL
Emanuel Teixeira
PESQUISA NO MYSQL
Emanuel Teixeira
INSERIR NO MYSQL
Emanuel Teixeira
INSERIR NO MYSQL
Emanuel Teixeira
IMPORTAR NO MYSQL
Emanuel Teixeira
OPERAÇÕES NO MYSQL
Emanuel Teixeira
MONITORIZAÇÃO NO MYSQL
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML
Texto , apenas texto para interpretar; Bloco de notas;
Editores PHP; Editores de páginas;
Plataformas de uso.
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML
Cabeรงalho do formulรกrio <head> Tag que indica principio do cabeรงalho <title> Tag que coloca em formato de titulo Escreva o seu contato </title> Fim de titulo </head> Fim de cabeรงalho
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML
<body>corpo do formulário Identificação do formulário e métodos e acções a usar <form id="formulario" name="formulário" method="post" action="envio.php">
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML
Criação da tabela <table width="500" border="0" cellspacing="2" cellpadding="5"> <tr>Demarca a linha <td> Demarca uma celula Nome:</td>
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML
introdução dos campos <td><input name="nome" type="text" id="nome" /></td> </tr>
Criação do botão de submissão <td><input type="submit" name="Submit" value="Enviar Mensagem" /></td> </tr>
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML <head>
<title>Formulรกrio de contato</title> </head> <body> <form id="formulario" name="formulรกrio" method="post" action="envio.php">
<table width="500" border="0" cellspacing="2" cellpadding="5"> <tr> <td>Nome:</td> <td><input name="nome" type="text" id="nome" /></td>
</tr> <tr> <td>E-mail:</td> <td><input name="email" type="text" id="email" /></td>
</tr> <tr> <td>Mensagem:</td> <td><textarea name="mensagem" cols="70" rows="20" id="mensagem"></textarea></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Enviar Mensagem" /></td>
</tr> </table> </form>
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML <?php // Enviar E-mail com Resposta Automática // Recebendo os dados passados pela página “contato.php” $recebenome = $_POST["nome"]; $recebemail = $_POST["email"]; $recebemsg = $_POST["mensagem"];
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML // Definindo os cabeรงalhos do e-mail $headers = "Content-type:text/html; charset=iso-8859-1"; // Vamos definir o destinatรกrio do email $para = "manuelteixera@gmail.com"; // Definindo o aspecto da mensagem $mensagem = "<h3>De </h3>"; $mensagem .= $recebenome . $recebemail; $mensagem .= "<h3>Assunto:</h3>"; $mensagem .= "Mensagem do Site"; $mensagem .= "<h3>Mensagem</h3>"; $mensagem .= "<p>"; $mensagem .= $recebemsg; $mensagem .= "</p>"; Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML // Enviando a mensagem para o destinatário $envia = mail($para,"E-mail do Site",$mensagem,$headers); // Envia um e-mail para o remetente, agradecendo a visita no site, e dizendo que em breve o e-mail será respondido. $mensagem2 = "<p>Olá <strong>" . $recebenome . "</strong>. Agradeçemos sua visita e a oportunidade de recebermos o seu contato. Em até 48 horas receberá no e-mail fornecido a resposta para sua questão.</p>"; $mensagem2 .= "<p>Observação – Não é necessário responder esta mensagem.</p>"; $envia = mail($recebemail,"Sua mensagem foi recebida!",$mensagem2,$headers);
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML // Exibe na tela a mensagem de sucesso, e depois redireciona devolta para a pรกgina de contato. echo "Mensagens Recebidas com Sucesso!"; echo "<meta http-equiv='refresh' content='2 ;URL=contato.php'>"; ?>
Emanuel Teixeira
CRIAR UM INTERFACE DE DADOS EM PHP/HTML <?php
$recebenome = $_POST["nome"]; $recebemail = $_POST["email"]; $recebemsg = $_POST["mensagem"]; $headers = "Content-type:text/html; charset=iso-8859-1";
$para = "manuelteixera@gmail.com"; $mensagem = "<h3>De </h3>"; $mensagem .= $recebenome . $recebemail; $mensagem .= "<h3>Assunto:</h3>";
$mensagem .= "Mensagem do Site"; $mensagem .= "<h3>Mensagem</h3>"; $mensagem .= "<p>"; $mensagem .= $recebemsg;
$mensagem .= "</p>"; $envia = mail($para,"E-mail do Site",$mensagem,$headers); $mensagem2 = "<p>Olá <strong>" . $recebenome . "</strong>. Agradeçemos sua visita e a oportunidade de recebermos o seu contato. Em até 48 horas receberá no e-mail fornecido a resposta para sua questão.</p>"; $mensagem2 .= "<p>Observação – Não é necessário responder esta mensagem.</p>"; $envia = mail($recebemail,"Sua mensagem foi recebida!",$mensagem2,$headers); echo "Mensagens Recebidas com Sucesso!"; echo "<meta http-equiv='refresh' content='2 ;URL=contato.php'>"; ?>
Emanuel Teixeira
USAR UMA PLATAFORMA CMS o
o
As plataformas de conteúdos não são mais do que bases de dados com interfaces modulares; As plataformas mais conhecidas são; o o o
o
o
o
Joomla; Drupal; WordPress;
Normalmente têm base de dados MySql, no entanto suportam outros tipos de base de dados como MsSql, Lite Sql ou Oracle Sql. As Linguagens de programação usadas, são distribuidas e as mais usadas são o PHP e o ASP/ASPX. Requerem um servidor Web, um servidor de Base de dados e intrepretadores das respectivas linguagens de scripting.
Emanuel Teixeira
PROCESSO DE INSTALAÇÃO DO XAMPP o
Depois de se puxar a versão de Xampp, deve-se proceder à instalação, tendo em atenção que devemos defenir; As portas a abrir na firewall; o O serviços a disponibilizar; o Se é um servidor interno ou externo; o Se for externo a ligação ao DNS respective fornecido pelo serviço responsavel. o
o
o
o
Depois devemos fazer correr o servidor, normalmente o existe um ficheiro batch que liga os servidores e uma aplicação que mostra visualmente os processos a correr. Na pasta C:\xampp existe um ficheiro chamado xampp_start e este deve ser o primeiro a ser carregado. De seguida, na mesma pasta devemos carregar o ficheiro xampp_control.
Emanuel Teixeira
XAMPP_CONTROL
o
Neste painel poderรก controlar os servidores e as portas em uso
Emanuel Teixeira
INSTALAÇÃO DE APLICAÇÕES DISTRIBUÍDAS PHP Para instalarmos aplicações PHP, basta copiar para o directório de funcionamento Web que no Servidor Apache é: htdocs colocar dentro de uma pasta e descompactar. Se a aplicação usar uma base de dados, devemos criar a mesma no Servidor de Base de Dados, o processo é simples, no Xampp as base de dados são criadas no MySql, por defeito, mas podemos sempre usar outros servidores de base de dados.
INSTALAÇÃO DO JOOMLA Descompactamos a aplicação na diretoria; Criamos a base de dados; Abrimos um browser e abrimos a pasta; Seguimos os passos.
CONFIGURAR O JOOMLA
ZONA DE ADMINISTRAÇÃO DA JOOMLA
ZONA DE ADMINISTRAÇÃO DA JOOMLA
ZONA DE ADMINISTRAÇÃO DA JOOMLA A Joomla é uma estrutura modular; Logo todos os componentes são módulos, plugins e componentes; Podemos instalar todos eles em; Ao clicarmos na opção iremos;
INSTALAÇÃO DO COMPONENTE VIRTUEMAT
Depois de carregarmos o componente, este fica na área de componentes;
CONFIGURAÇÃO DO VIRTUEMAT Depois de irmos ao menu configuração, devemos preencher os campos “loja”
CONFIGURAÇÃO DO VIRTUEMAT Depois de irmos ao menu configuração, devemos preencher os campos “loja”
CONFIGURAÇÃO DO VIRTUEMAT Este processo deve ser completo; O próprio componente vai dando os erros e como corrigir; Depois de criarmos a loja; Devemos implementar o modelo de negócio encontrado; Criando as famílias e sub-famílias, como em qualquer programa de gestão; Este passo deve ser verificado por mais do que um utilizador e reorganizado;
CONFIGURAÇÃO DO VIRTUEMAT
DUVIDAS
Emanuel Teixeira