BASE DE DADOS - TEÓRICA (a 1ª pergunta dos exames!) Explique o processo global de desenvolvimento de uma aplicação contendo uma Bases de Dados, tendo em particular consideração as diferentes fases da modelação dos dados. Etapas de modulação de uma Base de Dados Um dos conceitos fundamentais em sistemas de bases de dados é o conceito de transacção. Explique este conceito, bem como as suas características mais importantes. Apresente três exemplos típicos de transacções. Transação é um dos conceitos mais importantes num sistema de base de dados. Praticamente todas as tarefas de gestão de base de dados vivem à custa deste conceito. Um exemplo típico é a transferência de valores entre duas contas bancárias: Debitar de A e creditar em B. Onde, só a execução conjunta produz um resultado válido. Por definição, uma transacção é um conjunto de operações sobre a base de dados, perfeitamente delimitado, que exibe algumas características importantes: – Atomicidade (Atomicity) – o conjunto de operações que constituem uma transacção formam um grupo indivisível (atómico), no sentido em que ou todas elas são executadas com sucesso ou nenhuma é executada. – Consistência (Consistency) – uma transacção, se envolver actualização de dados, deve transportar a base de dados de um estado de integridade para outro estado também de integridade. – Isolamento (Isolation) – apesar de as transacções executarem concorrentemente, o sistema deve dar a cada transacção a ilusão de que é a única a executar no sistema – Executa isoladamente das outras. – Durabilidade (Durability) – o sistema deve assegurar que todos os efeitos provocados por uma transacção bem sucedida se tornam persistentes na base de dados e visíveis para as outras transacções. Diga o que entende por integridade de uma base de dados. Diga, também, o que entende por stored procedure e trigger, bem como de que forma julga que estes dois “instrumentos” podem contribuir para a integridade de uma base de dados. Uma base de dados está num estado de integridade se, e só se, contiver apenas dados válidos. Os dados armazenados devem estar de acordo com a realidade. Um Trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. O evento pode ser INSERT, UPDATE, ou DELETE. O trigger pode ser accionado mediatamente antes (BEFORE) ou imediatamente depois (AFTER) de cada evento. Stored Procedures são o semelhante a subrotinas desenvolvidos noutras linguagens de programação mas que são guardados no servidor. Aceitam parâmetros de entrada e retornam resultados. Isto é, como qualquer subprograma, um procedimento permite a passagem de parâmetros de entrada e de saída, aceitando valores e devolvendo algum tipo de resultado à entidade que o invocou, que pode ser um outro procedimento, um gatilho ou mesmo uma aplicação externa cliente. Retornam, também, um valor de status indicando se aconteceu um erro, e qual foi. Stored Procedures são basicamente blocos de instruções SQL compiladas num único plano de execução. Propósitos/Vantagens Diminuição do tráfego na rede: A execução destes programas no seio de um servidor permite reduzir substancialmente o tráfego de rede provocado por aplicações que solicitem ao servidor a execução de instruções SQL. O servidor passa a ser assim não só servidor de dados, mas também servidor de programas para a manipulação dos dados. Programação por módulos: Um Stored Procedure após ser guardado na BD, pode ser invocado várias vezes (recursivo) num programa. Pode também ser alterado sem que haja necessidade de alterar em todos os lados. Execução mais rápida: Se uma operação tem muitas instruções T-SQL e/ou é executada muitas vezes, os stored procedures conseguem ser mais rápidos, pois são compilados e optimizados no momento da sua criação. Segurança: Pode ser dada permissão aos utilizadores para executar um stored procedure, mesmo que não tenham permissão para utilizar o mesmo código directamente através de um editor. No contexto do modelo relacional de bases de dados, quais os objectivos da normalização de dados? De que forma o processo de normalização poderá afectar, posteriormente, o desempenho da respectiva implementação? A normalização é um processo sistemático, com um conjunto de regras bem definidas que visa eliminar fontes de redundância nos dados. Esta redundância tem problemas associados que a normalização visa eliminar, tipo: - problemas de manutenção; - custos do espaço de armazenamentos; - e, obviamente, problemas no desempenho da própria Base de Dados. O processo de normalização ocorre através de um conjunto de fases que conduzem a Base de Dados a estados onda a redundância se torna cada vez menor. A cada um destes estados dá-se o nome de Forma Normal (FN). Uma relação diz-se que está na Primeira Forma Normal (1FN) quando: Não contém atributos multivalor, nem contém grupos repetitivos. Uma relação diz-se que está na Segunda Forma Normal (2FN) quando: Está na Primeira Forma Normal (1FN) e todos os atributos não chave mas dependem funcionalmente da totalidade da chave. Uma relação diz-se que está na Terceira Forma Normal (3FN) quando: Está na Segunda Forma Normal (2FN) e todos os atributos não chave nem dependem funcionalmente uns dos outros. Em termos de desenvolvimento e manutenção de sistemas, compare as facilidades obtidas pela utilização de tecnologia de bases de dados relativamente aos sistemas de gestão de ficheiros. Dados são apenas elementos ou valores discretos que, isoladamente, não têm qualquer valor, só se transformando em informação quando analisados de alguma forma. Com o evoluir do tempo e das tecnologias, a gestão informática de dados passou da técnica de gestão de ficheiros para modernos sistemas de Base de Dados Utilizando sistemas de gestão de ficheiros, as organizações começaram por automatizar algumas tarefas até aí realizadas manualmente. Estes sistemas surgiram no panorama informático das organizações sem qualquer relação com os sistemas já existentes, constituindo assim “ilhas isoladas” entre si. Os dados como são actualizados independentemente pelas respectivas aplicações, existe uma grande probabilidade de ocorrência de incoerências – redundância não controlada. Outra consequência grave deste tipo de gestão de dados: o acesso concorrente aos dados partilhados tem de ser feito ao nível das aplicações, utilizando funções de baixo-nivel disponibilizadas pelo sistema operativo – o que vem por em causa a fiabilidade dos próprios sistemas. Os sistemas de bases de dados surgem como tentativa de resolver estes problemas. A abordagem pelos sistemas de bases de dados tem uma característica fundamental – os dados são organizados num único conjunto. Isto é, em vez de estarem separados por várias unidades independentes, os dados encontram-se integrados numa só unidade (lógica) de armazenamento. Todos os acessos aos dados passam sempre por uma entidade designada Sistema de Gestão de Bases de Dados (SGBD), que centraliza em si o acesso físico à base de dados. A interface lógica entre o nível aplicacional e a base de dados é conseguida à custa do armazenamento na base de dados, não só dos dados propriamente ditos, mas também das suas descrições (metadados), numa entidade conhecida por dicionário de dados (também chamado catálogo).