segunda-feira, 5 de janeiro de 2009

Modelagem de Dados, a obre arte.

Modelagem de Dados é a atividade de especificação das estruturas de dados e regras de negócio necessárias para suportar uma área de negócios. Representa um conjunto de requerimentos de informações de negócio. É uma parte importante do desenho de um sistema de informação.

A abordagem que se dispensa ao assunto normalmente atende a três perspectivas: Modelagem Conceitual, Modelagem Lógica e Modelagem Física. A primeira é usada como representação de alto nível e considera exclusivamente o ponto de vista do usuário criador do dado, a segunda já agrega alguns detalhes de implementação e a terceira demonstra como os dados são fisicamente armazenados.

Quanto ao objetivo, podemos identificar as seguintes variações: modelagem de dados entidade-relacionamento (leitura, construção e validação dos modelos); modelagem de relacionamentos complexos, grupos de dados lógicos e ciclo de vida das entidades; modelagem de dados corporativa; modelagem de dados distribuídos (cliente/servidor); modelagem e re-engenharia de dados legados e modelagem de dados para Data Warehouse.

Modelos

De acordo com a abordagem que utilizam, os modelos de dados normalmente são classificados da seguinte forma:

* Modelo Conceitual:
o Representação dos conceitos e características observados no ambiente;
o Ignorar particularidades de implementação.

* Modelo Lógico:
o Regras de Derivação:
+ Normalização das estruturas de dados
+ Derivação de estruturas de agregação e generalização-especialização
+ Derivação de relacionamentos
o Regras de Restrição:
+ Restrição de domínio
+ Restrição de Integridade
+ Restrição de Implementação

* Modelo Físico:
o Inclui a análise das características e recursos necessários para armazenamento e manipulação das estruturas de dados (estrutura de armazenamento, endereçamento, acesso e alocação física).

Identificação de Objetos

Os objetos podem ser identificados como:

* Coisas Tangíveis: elementos que têm existência concreta, que ocupam lugar no espaço.

Ex: Meio de Transporte (avião, carro, etc);

* Funções: percepção dos objetos através da função por eles exercida (papel, atribuição, classificação, capacitação, etc).

Ex: Organização (órgãos funcionais - venda, suporte, despacho de mercadorias, etc), especialistas (médicos, engenheiros, etc), cliente (pessoa atendida), atendente (pessoa que atende), etc;

* Eventos ou Ocorrências: alguns objetos só conseguem ser individualizados ou percebidos enquanto uma certa ação se desenrola (identifica-se características que tornam determinado fato materializável).

Ex: vôo comercial, acidente de trânsito, jogo de futebol, etc.

* Interações: resultantes das associações entre objetos em função de um processo executado - cada objeto participante da interação preserva suas características não sendo impactados pela materialização da interação.

Ex: compra de um imóvel, adoção de uma criança, venda de um produto;

* Especificações: são elementos que definem características de outros objetos.

Ex: modelos de carro (cor, dimensões, etc), espécies animais (mamíferos, carnívoros, etc.)

Definição

Uma definição deve:

* ser única (dentro de qualquer dicionário no qual ela aparece);
* ser estabelecida no singular;
* estabelecer o que o conceito é (não o que ele não é), o que faz, quando algum elemento passa a ser, ou deixa de ser, pertencente a esse grupo;
* ser estabelecida como uma frase ou sentença descritiva;
* ser expressa sem definições embutidas de outros termos;
* estabelecer o significado essencial do conceito;
* ser precisa e não-ambígua;
* ser concisa;
* ser significativa por si só;
* evitar raciocínio circular.

Atributos

Quanto ao tipo, podem ser classificados como:

* Descritivos: representam as características intrínsecas dos objetos;
* Nominativos: além de cumprirem a função de descritivos servem como definidores de nomes ou rótulos de identificação dos objetos (nome, código, número, sigla, etc);
* Referenciais: representam uma citação ou ligação do objeto em questão com outro objeto, não propriamente definindo uma característica do objeto mas explicitando um relacionamento existente[1].

Ex: Cidade de nascimento, Nome do fabricante do carro, Local de trabalho, etc.

Relacionamentos

Na descrição de um relacionamento devem aparecer:

* Sua função;
* O que ele representa;
* Quais as regras de seu estabelecimento;
* Quais as exceções a seu estabelecimento;
* Quando ocorre;
* Quando pode deixar de existir.

Modelo Lógico de Dados

Um modelo lógico de dados para uso meramente operacional/transacional deve:

* Ser completamente normalizado;
* Representar fielmente o NEGÓCIO, e NÃO necessariamente a base de dados desejada, a qual será construída posteriormente por ocasião do Projeto Físico;
* Conter descrição sucinta das entidades, atributos e relacionamentos;
* Conter os nomes de entidades e atributos, extensos e abreviados, atribuídos de acordo com algum padrão adotado na organização e formados por termos previamente convencionados em um glossário;
* Contemplar, para cada um dos atributos, o tipo de dado, tamanho e opcionalidade.

Recomendações

Um Modelo Lógico de Dados para uso meramente operacional/transacional não deve conter:

* Replicações de atributos: fisicamente pode ser interessante alguma redundância com o objetivo de melhorar a performance de determinado(s) processo(s). No modelo lógico isso não pode ser feito; um atributo só é representado na Entidade que o pertence.
* Atributos derivados: pelos mesmos motivos apontados anteriormente, a implementação das tabelas pode requerer o armazenamento de uma informação derivada de outra(s) (valor do saldo por exemplo). Tal tipo de informação não se constitui um atributo do modelo lógico.
* Atributos repetitivos: o uso de atributos repetidos, como Telefone-1 e Telefone-2, não é admitido. Se existe a possibilidade de uma pessoa possuir mais de um telefone, então Telefone deve ser representado como uma entidade, mantendo relacionamento Nx1 com a entidade Pessoa.

Banco de dados, toda teoria possível.

Bancos de dados (ou bases de dados), são conjuntos de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim.

Um banco de dados é usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Normalmente um SGBD adota um modelo de dados, de forma pura, reduzida ou estendida. Muitas vezes o termo banco de dados é usado como sinônimo de SGDB.

O modelo de dados mais adotado hoje em dia é o modelo relacional, onde as estruturas têm a forma de tabelas, compostas por tuplas (linhas) e colunas.

Utilização

Os bancos de dados são utilizados em muitas aplicações, abrangendo praticamente todo o campo dos programas de computador. Os bancos de dados são o método de armazenamento preferencial para aplicações multiusuário, nas quais é necessário haver coordenação entre vários usuários. Entretanto, são convenientes também para indivíduos, e muitos programas de correio eletrônico e organizadores pessoais baseiam-se em tecnologias padronizadas de bancos de dados.

Um banco de dados é um conjunto de informações com uma estrutura regular. Um banco de dados é normalmente, mas não necessariamente, armazenado em algum formato de máquina legível para um computador. Há uma grande variedade de bancos de dados, desde simples tabelas armazenadas em um único arquivo até gigantescos bancos de dados com muitos milhões de registros, armazenados em salas cheias de discos rígidos.

Bancos de dados caracteristicamente modernos são desenvolvidos desde os anos da década de 1960. Um pioneiro nesse trabalho foi Charles Bachman.

Apresentação dos dados

A apresentação dos dados geralmente é semelhante à de uma planilha eletrônica, porém os sistemas de gestão de banco de dados possuem características especiais para o armazenamento, classificação, gestão da integridade e recuperação dos dados. Com a evolução de padrões de conectividade entre as tabelas de um banco de dados e programas desenvolvidos em linguagens como Java, Delphi, Visual Basic, C++, etc, a apresentação dos dados, bem como a navegação, passou a ser definida pelo programador ou o designer de aplicações. Como hoje em dia a maioria das linguagens de programação fazem ligações a bancos de dados, a apresentação destes tem ficado cada vez mais a critério dos meios de programação, fazendo com que os bancos de dados deixem de restringir-se às pesquisas básicas, dando lugar ao compartilhamento, em tempo real, de informações, mecanismos de busca inteligentes e permissividade de acesso hierarquizada.

Direitos de propriedade

A Diretiva CE de Bases de Dados (EU Database Directive), estabelecida pelo Parlamento Europeu em de 11 de março de 1996, fixa os termos de proteção jurídica a bancos de dados, em particular os direitos de propriedade sobre a base.

Mesmo para os países que não a adotam explicitamente, ou não possuam normas mais específicas sobre o tema, como o Brasil, tem sido a principal referência.

Modelos de base de dados

O modelo plano (ou tabular) consiste de matrizes simples, bidimensionais, compostas por elementos de dados: inteiros, números reais, etc. Este modelo plano é a base das planilhas eletrônicas.

O modelo em rede permite que várias tabelas sejam usadas simultaneamente através do uso de apontadores (ou referências). Algumas colunas contêm apontadores para outras tabelas ao invés de dados. Assim, as tabelas são ligadas por referências, o que pode ser visto como uma rede. Uma variação particular deste modelo em rede, o modelo hierárquico, limita as relações a uma estrutura semelhante a uma árvore (hierarquia - tronco, galhos), ao invés do modelo mais geral direcionado por grafos.

Bases de dados relacionais consistem, principalmente de três componentes: uma coleção de estruturas de dados, nomeadamente relações, ou informalmente tabelas; uma coleção dos operadores, a álgebra e o cálculo relacionais; e uma coleção de restrições da integridade, definindo o conjunto consistente de estados de base de dados e de alterações de estados. As restrições de integridade podem ser de quatro tipos: domínio (também conhecidas como type), atributo, relvar e restrições de base de dados.

Diferentemente dos modelos hierárquico e de rede, não existem quaisquer apontadores, de acordo com o Princípio de Informação: toda informação tem de ser representada como dados; qualquer tipo de atributo representa relações entre conjuntos de dados. As bases de dados relacionais permitem aos utilizadores (incluindo programadores) escreverem consultas (queries) que não foram antecipadas por quem projetou a base de dados. Como resultado, bases de dados relacionais podem ser utilizadas por várias aplicações em formas que os projetistas originais não previram, o que é especialmente importante em bases de dados que podem ser utilizadas durante décadas. Isto tem tornado as bases de dados relacionais muito populares no meio empresarial.

O modelo relacional é uma teoria matemática desenvolvida por Edgard Frank Codd, matemático e pesquisador da IBM, para descrever como as bases de dados devem funcionar. Embora esta teoria seja a base para o software de bases de dados relacionais, muito poucos sistemas de gestão de bases de dados seguem o modelo de forma restrita ou a pé da letra - lembre-se das 13 leis do modelo relacional - e todos têm funcionalidades que violam a teoria, desta forma variando a complexidade e o poder. A discussão se esses bancos de dados merecem ser chamados de relacional ficou esgotada com o tempo, com a evolução dos bancos existente. Os bancos de dados hoje implementam o modelo definido como objeto-relacional.

Aplicações de bancos de dados

Bancos de dados são usados em muitas aplicações, enquanto atravessando virtualmente a gama inteira de software de computador. Bancos de dados são o método preferido de armazenamento para aplicações multi-usuárias grandes onde a coordenação entre muitos usuários é necessária. Até mesmo usuários individuais os acham conveniente, entretanto, muitos programas de correio eletrônico e organizadores pessoais estão baseados em tecnologia de banco de dados standard.

Aplicativo de Banco de Dados

Um Aplicativo de Banco de dados é um tipo de software exclusivo para gerenciar um banco de dados. Aplicativos de banco de dados abrangem uma vasta variedade de necessidades e objectivos, de pequenas ferramentas como uma agenda, até complexos sistemas empresariais para desempenhar tarefas como a contabilidade.

O termo "Aplicativo de Banco de dados" usualmente se refere a softwares que oferecem uma interface para o banco de dados. O software que gerencia os dados é geralmente chamado de sistema gerenciador de banco de dados (SGBD) ou (se for embarcado) de "database engine".

Exemplos de aplicativos de banco de dados são Microsoft Visual FoxPro, Microsoft Access, dBASE, FileMaker , (em certa medida) HyperCard, MySQL, PostgreSQL, Firebird, Microsoft SQL Server e Oracle.

Em Março, 2004, AMR Research (como citado em um artigo da CNET News.com listado na secção de "Referências") previu que aplicações de banco de dados de código aberto seriam amplamente aceitas em 2006.

Transação

É um conjunto de procedimentos que é executado num banco de dados, que para o usuário é visto como uma única ação. A integridade de uma transação depende de 4 propriedades, conhecidas como ACID.

* Atomicidade
o Todas as ações que compõem a unidade de trabalho da transação devem ser concluídas com sucesso, para que seja efetivada. Qualquer ação que constitui falha na unidade de trabalho e a transação deve ser desfeita (rollback). Quando todas as ações são efetuadas com sucesso, a transação pode ser efetivada (commit).
* Consistência
o Nenhuma operação do banco de dados de uma transação pode ser parcial.O status de uma transação deve ser implementado na íntegra. Por exemplo, um pagamento de conta não pode ser efetivado se o processo que debita o valor da conta corrente do usuário não for efetivado antes, nem vice-versa.
* Isolamento
o Cada transação funciona completamente à parte de outras estações. Todas as operações são parte de uma transação única. Nenhuma outra transação, operando no mesmo sistema, pode interferir no funcionamento da transação corrente. Outras transações não podem visualizar os resultados parciais das operações de uma transação em andamento.
* Durabilidade
o Significa que os resultados de uma transação são permanentes e podem ser desfeitos somente por uma transação subseqüente.Por exemplo: todos os dados e status relativos a uma transação devem ser armazenados num repositório permanente, não sendo passíveis de falha por uma falha de hardware.

Na prática, alguns SGBDs relaxam na implementação destas propriedades buscando desempenho.

Controle de concorrência é um método usado para garantir que as transações são executadas de uma forma segura e segue as regras ACID. Os SGBD devem ser capazes de assegurar que nenhuma ação de transações completadas com sucesso (committed transactions) seja perdida ao desfazer transações abortadas (rollback). Uma transação é uma unidade que preserva consistência. Requeremos, portanto, que qualquer escalonamento produzido ao se processar um conjunto de transações concorrentemente seja computacionalmente equivalente a um escalonamento produzindo executando essas transações serialmente em alguma ordem. Diz-se que um sistema que garante esta propriedade assegura a seriabilidade.

Segurança em banco de dados

Os bancos de dados são utilizados para armazenar diversos tipos de informações, desde dados sobre uma conta de e-mail até dados importantes da Receita Federal. Para tal existem diversos tipos, os quais variam em complexidade e sobretudo em segurança.

São meios de proteger as informações armazenadas num banco de dados

* Criptografia
* Senhas
* Backup

Funções internas comuns em BDs

* Regras
* Procedimento armazenado
* Gatilho
* Default
* Visão
* Índice
* Generalizadores
* Tabelas

Sistema de gerenciamento de banco de dados

Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) é o conjunto de programas de computador (softwares) responsáveis pelo gerenciamento de uma base de dados. O principal objetivo é retirar da aplicação cliente a responsabilidade de gerenciar o acesso, manipulação e organização dos dados. O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados. Em bancos de dados relacionais a interface é constituída pelas APIs ou drivers do SGBD, que executam comandos na linguagem SQL.

Descrição

* um modelo que defina o esquema dos dados armazenados no sistema. Os quatro modelos mais conhecidos são:
o hierárquico;
o em rede;
o relacional;
o orientado a objetos;
o existem também outros modelos, variando com o autor:
+ o modelo relacional estendido, é uma adição de características do modelo orientado a objetos ao relacional
+ o semi-estruturado é dedicado a documentos em formatos semi-estruturados, normalmente em XML;
* estruturas de dados otimizadas, que possam manipular uma grande quantidade de informação;
* uma linguagem que possibilite a criação, atualização e consulta dos dados armazenados. Normalmente esta linguagem é dividida em duas partes:
o Linguagem de definição de dados ou LDD (ou DDL, do inglês), com comandos como CREATE TABLE;
o (( Linguagem De Definição Do Monopolio De Manipulção Dos Dados Existentes Na Placa Mae Linguagem ): DMKL
o Linguagem de manipulação de dados, ou LMD (ou DML, do inglês), com comandos como UPDATE e SELECT;
o Linguagem de controle de dados, ou LCD, com comandos para controle de acesso dos usuários do sistema, como GRANT e REVOKE em SQL.
* um mecanismo transacional que garanta a consistência, entre as operações, dos dados armazenados.

Também é possível definir uma linguagem adicional para restrições, como a OCL.

As principais linguagens para manipular bancos de dados são:

* SQL, em seus vários padrões, como SQL2 e SQL3;
* OQL.

Exemplos de SGBDs

* PostgreSQL;
* Firebird;
* HSQLDB;
* IBM DB2;
* mSQL;
* MySQL;
* Oracle;
* SQL-Server;
* TinySQL;
* JADE;
* ZODB;
* Sybase;

Ligações externas

* SGBD
* Site oficial do PostgreSQL
* Site oficial Oracle
* Site oficial SQL Server
* Site oficial Mysql
* Site oficial Sybase