Dados geralmente são associados à programação e no mundo moderno da informação são apresentados em três versões logicamente equivalentes: dados descritos e usados em um programa em uma linguagem de programação; dados em sistemas de banco de dados; dados em sistemas de informação distribuídos. A programação moderna deu relativa liberdade apenas à primeira variante da formalização da informação. As duas segundas opções são formas mais ou menos confiáveis de fornecer informações e relacionamentos entre seus componentes.
Dados passados e presentes
A posição fundamental das linguagens de programação é a descrição exata de dados e algoritmos. Computadores não "apresentam" nenhuma chance de incerteza: há algo sobre o que agir, e há um comando que executa essa ação.
O conceito moderno é baseado em um fundamento muito mais alto: existe um dado, e o que exatamente ele será é determinado no local de seu uso. De qualquer forma, no momento do uso, os dados são verificados automaticamente e convertidos para o tipo correto. Um programador moderno não é obrigado a cuidar de sua descrição preliminar e observância da compatibilidade de tipos no algoritmo.
Processo de transição:
- de dados digitados e sua descrição obrigatória antes do uso;
- a dados não digitados e liberdade de qualquer obrigação de descrevê-los e usá-los.
De fato, podemos reconhecer o relativo relaxamento dos requisitos de formalização - está disponível apenas no ambiente de ferramentas de programação modernas. Em tempo de execução, o tipo de cada dado é fixo e a sequência de comandos é bem definida.
Tipos e Modelagem
Matemática e física, comércio e produção, economia e outras áreas onde os números são usados, sempre operaram com dados e não deram importância ao conceito de tipo. O fato de os números poderem ser inteiros ou fracionários realmente não importava.
Cada fórmula específica ou ação específica pode dar um número inteiro, fração infinita, número real ou complexo. Até agora, existem maravilhas da mente como infinitamente pequenas e infinitamente grandes. Além disso, esses milagres ainda têm propriedades.
Ainda não há liberdade na programação. Tudo deve ser estritamente formalizado. O conceito de dados é, antes de tudo, um tipo:
- inteiro;
- boolean;
- char;
- string e assim por diante.
Nomes de tipos podem diferir em diferentes linguagens de programação, mas sempre há um número inteiro ou real, valor booleano, símbolo,linha. Ainda restam relíquias e ideias específicas: inteiro sem sinal, código, byte, palavra, palavra dupla, string de tamanho fixo.
O conceito de dados em um sistema de dados não tem liberdade. A linguagem SQL - "internacional" (há um dialeto para cada banco de dados moderno) - não tolera imprecisões não apenas nos dados, mas também nas consultas sql. Um erro na solicitação é uma garantia da ausência de resultado. Não há necessidade de falar sobre violações de descrições.
Modelar processos de informação e representações de dados é a única maneira segura de construir uma estrutura que possa evoluir e se adaptar às mudanças nas condições.
Dinâmica do original
Informação natural é uma mudança contínua. Dar uma descrição formal e conceito de um modelo de dados em uma área específica significa resolver três problemas:
- defina quais dados estão aqui;
- formalize a relação entre eles;
- descrever processos para alterar dados e relacionamentos.
Um exemplo de um conjunto de dados de um algoritmo simples em JavaScript - uma cópia reduzida do modelo até mesmo do sistema de gerenciamento de banco de dados mais sólido.
É só que no segundo caso, especialistas e especialistas, ao projetar estruturas de dados, tabelas e relacionamentos, geralmente não veem (é muito difícil cobrir uma grande quantidade de informações naturais) a essência das coisas, e um conjunto complicado e não desenvolvido de pilhas de dados é obtido, enquanto na área de assunto as informações da fonte circulam livre e facilmente.
Estáticopossível
É prática comum de JavaScript incluir código anexado a uma página e funções atribuídas a eventos em tags de página. De qualquer forma, as tags de página definem os dados que um determinado recurso da web aceita, modifica ou cria.
Se você concentrar seu código do manipulador com muito cuidado nos eventos do elemento, e não no código da página como um todo, esta é a melhor saída. Idealmente, quando o código não introduz novos dados ou não corrige os dados disponíveis, mas se concentra exatamente no que ele tem em um determinado momento.
Na verdade, se você definir o conceito de "dados" como uma descrição minimamente estática da informação de origem e segui-la, isso significa que você tem uma chance de sucesso.
Com relação aos bancos de dados, as coisas são muito mais complicadas. Qualquer código JavaScript está "fornecendo" funcionalidade à página. Qualquer banco de dados é uma coleção de tabelas, relacionamentos entre elas, procedimentos armazenados, consultas e funcionalidades disponíveis externamente.
Estático é o problema de qualquer algoritmo. O conceito moderno de dados é estático: um número, uma string, um caractere e assim por diante. Ao processar ou ao gravar em uma tabela de banco de dados, tudo ocorre sem problemas. Mas quando o original adquire uma dimensão ou significado diferente? Opção um: mudar o sinal, mas conexões e solicitações podem cair imediatamente.
Estática e objetos
Definir o conceito de "dados" como um objeto muda drasticamente a situação. O objeto tem sua própria estrutura. Aqui você pode usar qualquer descrição de qualquer variável. Papel não vai jogar. Um objeto tem métodos pelos quais os dados estão disponíveis. Já que tudousado no campo da programação, ou seja, três métodos básicos: ler, escrever, alterar. Você pode adicionar mais para comparar, pesquisar, clonar, etc.
A área de assunto impõe um intervalo de propriedades em cada dado. Assim, verifica-se que o conceito de dado se transforma em uma espécie de descrição que pode ser alterada dinamicamente. Estática dentro de um objeto dá dinâmica fora dele.
Mudando a combinação de descritores estáticos dentro de um objeto, você não precisa se preocupar com a dinâmica de suas relações com outros objetos.
Programação e apresentação de dados
O que são dados? A consciência pública já está acostumada com a tecnologia da informação, trabalha nas nuvens e tem containers em espaços virtuais. Agora, não apenas programadores e usuários profissionais, mas também pessoas comuns são competentes em questões de informação e seu uso.
Mas o que é programação? Até hoje, a opinião pública dá a seguinte definição a esse conceito e seus conceitos:
- Informação e dados são os conceitos básicos usados em ciência da computação.
- Dados são, de certa forma, observações recebidas e registradas em relação à realidade circundante.
- São estruturas simples e complexas, primárias e secundárias.
- Um banco de dados é uma coleção de materiais independentes apresentados de forma sistemática para que possam ser encontrados, modificados e utilizados.
Quão objetivo é isso? Autores autorizadospense assim. A prática real tende a garantir que cada área de assunto determine seu sistema de dados correto e oferece todas as oportunidades para construir um bom modelo dinâmico.
Não é incomum um cliente (consumidor) impor sua própria opinião a um programador (designer de banco de dados) sobre como e o que fazer. Do ponto de vista da programação, qualquer desejo do cliente pode ser atendido com a máxima precisão.
Precisa da Oracle para resolver o problema do orçamento para a manutenção do abastecimento de água rural (prédio 21 na vila) - bom. O MySQL é necessário para organizar um sistema de rastreamento de itens de correio para todas as agências postais na Rússia - tudo funcionará também.
Você sempre pode compor qualquer algoritmo e fornecer acesso a qualquer representação de informação dentro da definição do conceito de dados, que é estabelecido pelo desenvolvedor do sistema gerenciador de banco de dados ou linguagem de programação. A questão é outra: como fazer isso com custos mínimos em dinâmica máxima?
Bancos de dados, exemplos
Uma base simples é criada sem um modelo. Os conceitos básicos de dados e comunicação são pequenos, a funcionalidade é muito simples. Por exemplo, para uma instituição de ensino superior você precisa:
- tabela de professores;
- tabela de grupo (chave e número do grupo);
- tabela geral de alunos (são usadas chaves de grupo).
O reitor quer saber o progresso dos professores. A tabela de professores tem os campos:
- sobrenome;
- nome;
- patronímico;
- número do grupo supervisionado.
A tabela de alunos possui campos:
- sobrenome;
- nome;
- patronímico;
- data de nascimento;
- GPA (para todas as disciplinas);
- número do grupo.
Pode haver pelo menos duas opções de amostragem: usando o nome do professor, você pode ir até o número do grupo e ver todos os alunos e suas notas médias, ou pelo sobrenome do professor e o último nome do aluno, você pode ver a pontuação média do último.
Mesmo em uma versão tão simples, os problemas são garantidos e algo terá que ser mudado. Situação: o professor adoeceu, mais um mês o substitui, o que significa que ele supervisiona dois grupos. Há apenas um campo em um número de grupo na tabela do professor.
Para resolver o problema, você precisa adicionar um campo duplicado. E se dois ficarem doentes, adicione três campos. Então a tabela de professores começa a crescer do zero.
Existe outra opção: substituir o campo numérico da chave de grupo por um simbólico. Então, cada vez que você selecionar, você terá que converter a string em uma sequência de chaves, e uma consulta sql se transformará em várias.
Um exemplo mais promissor não é fazer tabelas, mas fazer objetos. Então o professor é um objeto, e ele pode ter vários grupos supervisionados. Mas é sempre um objeto. O objeto professor tem uma chave exclusiva, mas pode ter vários grupos supervisionados. O grupo também tem uma chave única. Um estudante também.
Todas as três posições não estão apenas disponíveis na tarefa, mas podem ser desenvolvidas.
Bases orientadas a objetos
Líderes da indústria da informaçãooferecem bancos de dados relacionais clássicos. Eles são testados pela vida, funcionam, são seguros, confiáveis e, em caso de problemas, permitem restaurar informações.
Bancos de dados orientados a objetos (OODB) começaram a ser desenvolvidos em meados da década de 1980 e, segundo autores conceituados, são promissores até hoje. Mas até agora, além de teorias fundamentais e disposições conceituais, não há OODB que tenha alcançado a mesma classificação e distribuição que MySQL, MS SQL Server ou Oracle em todas as suas diversas encarnações.
Mas e se a definição, o conceito de dados, tipos, atributos, classes, hierarquias for proposto por um desenvolvedor cuja classificação é insuficiente para criar uma comunidade de programadores que professem a mentalidade desse OODB? Teremos que confiar em nossas próprias forças.
Mais de trinta variantes de OODB foram criadas no ambiente Linux. Mas onde está a garantia de que o banco de dados criado não exigirá mais funcionalidades? O ambiente Windows não oferece muitas garantias nesta área.
Solução orientada a objetos
No entanto, existe uma solução. Usando o MySQL como exemplo, você pode mostrar como as tabelas relacionais padrão se transformam em um modelo orientado a objetos do problema que está sendo resolvido.
Não há banco de dados aqui, mas há um ambiente para formar seu próprio sistema de objetos. O poder do MySQL é usado apenas como memória relacional para tabelas de linhas de informações. A lógica de uso é determinada pelo próprio desenvolvedor. Em particular, há uma tabela is_cache. Tem tudovários campos básicos:
- owner_code;
- session_code;
- h_code;
- a_surprise;
- a_contents.
Os demais campos carregam funções de serviço. Essa tabela fica na entrada de qualquer solicitação e registra sua chegada. O que o modelo de banco de dados funcionará é determinado por seu desenvolvedor. O que caberá no campo de conteúdo (a_contents) é determinado pelos objetos do modelo criado pelo desenvolvedor.
Há quatro coisas nessa ideia: hit, sessão de hit, código do histórico de hit e conteúdo específico. O que é uma chamada, qual sistema de objetos deve ser construído - é determinado pelo desenvolvedor. O que se entende por uma sessão (processo de trabalho) é determinado pelo desenvolvedor. O código do histórico é a capacidade de reverter solicitações.
As tabelas aqui não têm nada a ver com a área de assunto. Há um controlador de chamadas (is_cache), há registro (is_customs), há um histórico de chamadas (is_histories). As tabelas restantes são determinadas pela tarefa que está sendo resolvida.
Na verdade, esta solução sugere a criação de seu próprio OODB com base no modelo de banco de dados de domínio construído e no problema que está sendo resolvido. Há uma grande vantagem aqui - este é o seu próprio conceito de dados, seu próprio modelo de apresentação e o relacionamento entre eles. Há uma base aqui - um grande banco de dados relacional. Não haverá problemas para procurar algo e entender mal.
Modelo: sistema de objetos + DBMS
É quase impossível mudar alguma coisa na tecnologia da informação. A verdadeira revolução da informação ainda está longe. consciência profissionalos desenvolvedores de software não vão mudar as tradições clássicas. Mas ainda há uma saída para a situação.
Usando sistemas de gerenciamento de banco de dados modernos e confiáveis como base para criar um ambiente para a existência de seu próprio modelo, você pode alcançar um sucesso notável.
Em qualquer caso, você terá que construir uma visão ou um modelo de dados para resolver a tarefa, mas precisa fazê-lo corretamente: seja um sistema de objetos e um bom SGBD seja seu ambiente.