Conceitos básicos do modelo de dados relacional - arquivo Conceitos básicos do modelo de dados relacional.doc. Bancos de dados relacionais

17.12.2023

O modelo relacional é baseado no conceito de relacionamento da teoria dos conjuntos. Nas disciplinas matemáticas existe um conceito “ atitude "(relação), cuja representação física é mesa . É daí que vem o nome do modelo - relacional .

Em relação aos bancos de dados, os conceitos “banco de dados relacional” e “banco de dados tabular” são sinônimos. Os bancos de dados relacionais são os mais difundidos no mundo. Quase todos os produtos de banco de dados criados desde o final dos anos 70 são relacionais.

Em 1970, surgiram trabalhos nos quais as possibilidades de utilização de diversos modelos tabulares dados. O mais significativo deles foi um artigo de um funcionário da empresa IBM Drs. E. Codd (Codd E.F., A Relational Model of Data for Large Shared Data Banks. CACM 13: 6, June 1970), onde foi usado pela primeira vez prazo "modelo de dados relacional" . O projeto System R foi desenvolvido no Laboratório de Pesquisa IBM. Este projeto foi idealizado para comprovar a praticidade modelo relacional. DBMS relacional refere-se a DBMS segunda geração.

Objetivos da criação de um modelo de dados relacional:

1. Garantir um maior grau de independência dos dados.

2. Criar uma base sólida para resolver problemas de consistência e redundância de dados.

3. Expansão das linguagens de gerenciamento de dados incluindo operações em conjuntos.

Os sistemas comerciais baseados no modelo de dados relacionais começaram a surgir no final dos anos 70 e início dos anos 80. Atualmente, existem centenas de tipos de diferentes SGBDs relacionais.

O modelo relacional é uma forma conveniente e mais comum de representar dados na forma tabelas (relação ). Todo relacionamento tem Nome e consiste em nomeado atributos (colunas) de dados. Uma das principais vantagens do modelo relacional é a sua homogeneidade. Todos os dados são armazenados em tabelas nas quais cada linha possui o mesmo formato. Cada linha da tabela representa algum objeto mundo real ou relacionamento entre objetos.

Os principais conceitos pelos quais o modelo relacional é definido são os seguintes:

- banco de dados relacional- um conjunto de relações normalizadas;

- atitude- arquivo, uma tabela plana composta por colunas e linhas; uma tabela em que cada campo é atômico;

- domínio- um conjunto de valores válidos dos quais é obtido o valor do atributo correspondente de um determinado relacionamento. Do ponto de vista da programação, domínio- este é o tipo de dados;

- universo- um conjunto de valores de todos os campos ou um conjunto de domínios;


- carreata- registro, linha da tabela;

- cardinalidade - número de linhas da tabela;

- atributos- campos nomeados, colunas de tabela;

- grau de relacionamento- número de campos (colunas);

- diagrama de relação- lista ordenada de nomes de atributos;

- esquema de banco de dados relacional- um conjunto de esquemas de relacionamento;

- chave primária- um identificador exclusivo com entradas não repetidas - uma coluna ou algum subconjunto de colunas que define linhas de maneira exclusiva.

Uma chave primária que inclui mais de uma coluna é chamada múltiplo , ou combinado , ou composto , ou superchave .

Regra de integridade de objeto afirma que uma chave primária não pode estar completa ou parcialmente vazia.

A relação entre esses conceitos é ilustrada na Fig. 4.5.

Nome completo Ano de nascimento Cargo Departamento
1. Ivanov I.I. Cabeça departamento 22
2. Sidorov S.S. Prof. 22
3. Andreeva G.G. Prof. 22
4. Tsvetkova S.S. professor adjunto
5. Kozlov K.K. professor adjunto 22
6. Petrov P.P. Arte. Rev. 22
Atributos

arroz. 4.5. Conceitos básicos do modelo de dados relacional.

Às vezes, colunas diferentes podem ser selecionadas como chave primária em uma tabela. Uma chave dedicada é aquela listada explicitamente no esquema relacional. Caso contrário, falamos de uma chave implícita, ou de uma chave possível, ou de uma chave candidata.

- externo chave é uma coluna ou subconjunto de colunas em uma tabela que pode servir como chave primária para outra tabela. A chave estrangeira de uma tabela é uma referência à chave primária de outra tabela. Como o objetivo da construção de um banco de dados é armazenar todos os dados, se possível, em uma cópia, então se um determinado atributo estiver presente em várias relações, então sua presença geralmente reflete um certo relacionamento entre as linhas dessas relações.

As chaves estrangeiras implementam relacionamentos entre tabelas de banco de dados.

Uma chave estrangeira, assim como uma chave primária, pode ser uma combinação de colunas. Na prática, uma chave estrangeira será sempre uma chave composta se se referir à chave primária composta de outra tabela. O número de colunas e seus tipos de dados nas chaves primária e estrangeira devem ser iguais.

Se uma tabela estiver relacionada a diversas outras tabelas, ela poderá ter diversas chaves estrangeiras.

Cada tabela relacional tem o seguinte propriedades:

Possui um nome diferente dos nomes de todas as outras tabelas;

Os dados nas células da tabela devem ser estruturalmente indivisíveis. É inaceitável que uma célula da tabela contenha mais de uma informação. Por exemplo, o número e a série do passaporte devem estar localizados em colunas diferentes da tabela;

Todas as colunas da tabela são homogêneas, ou seja, todos os elementos de uma coluna possuem o mesmo tipo (numérico, caractere, etc.) e comprimento;

Cada coluna possui um nome exclusivo;

Não existem linhas idênticas na tabela;

A ordem das linhas e colunas pode ser arbitrária independentemente da sua reordenação, a relação permanecerá a mesma e, portanto, terá o mesmo significado;

Seção 3. “Bancos de dados”

1. Suporte de informação sistemas automatizados.

Suporte de informação de um sistema automatizado (AS) - um conjunto de formulários de documentos, classificadores, marco regulatório e soluções implementadas por volume, localização e formas de existência das informações utilizadas no SA durante sua operação

De acordo com GOST 24.205-80, a descrição do suporte de informações do sistema de controle automatizado deve consistir nas seguintes seções:

princípios de organização do suporte de informação;

organização da coleta e transmissão de informações;

construir um sistema de classificação e codificação;

organização da máquina base de informações;

organização da base de informações fora da máquina.

O termo “suporte à informação” é amplamente utilizado em diferentes contextos, em relação a diferentes funções e tipos de atividades, é interpretado de forma ambígua e é discutível. Além de denotar estruturas de informação com este termo, muitas vezes refere-se ao processo de fornecimento das informações necessárias para as necessidades de um determinado objeto socioeconômico.

Suporte de informações de rede centros de computação inclui matrizes de dados, meios de sua descrição, coleta, armazenamento e entrega, que devem juntos criar melhores condições para o processamento centralizado e integrado de informações, fornecer acesso coletivo a dados comuns a muitos assinantes, aumentar a confiabilidade e confiabilidade das informações recebidas.

O suporte de informação de um sistema automatizado é um conjunto de formulários de documentos, classificadores, marco regulatório e soluções implementadas sobre o volume, colocação e formas de existência da informação utilizada no sistema automatizado durante sua operação (GOST 34.003-90 ("GOST 34.003-90 (") Sistemas automatizados. Termos e definições")).

IO - totalidade sistema unificado classificação e codificação das informações, sistemas unificados de documentação, padrões de fluxos de informações que circulam na organização, metodologia de construção de bancos de dados.



Este subsistema é projetado para apresentação oportuna de informações e tomada de decisões gerenciais. O sistema de informação empresarial é um modelo de informação de um determinado objeto. Para criar um IO, é necessário um entendimento claro das metas e objetivos, funções do sistema de gestão; implementação de sistema de fluxo de documentos; identificar a movimentação da informação desde o momento da sua ocorrência até a sua utilização nos diversos níveis de gestão; disponibilidade e uso de classificação e codificação de informações; criação de matrizes de informações em suporte informático; conhecimento da metodologia de criação de modelos de informação.

Ao organizar o IO, é utilizada uma abordagem sistemática para garantir a criação de uma base de informações unificada; desenvolvimento esquema padrão troca de dados entre diferentes níveis do sistema e dentro de cada nível; organização de um esquema unificado de manutenção e armazenamento de informações; fornecer as tarefas a serem resolvidas com dados iniciais;

As principais funções do IO são monitorar o andamento das atividades produtivas e econômicas, identificando e registrando a condição parâmetros controlados e seu desvio dos modos especificados; preparação para processamento de documentos primários que refletem o estado dos objetos gerenciados; garantir o processamento automatizado de dados; implementação de ações diretas e opinião entre objetos e sujeitos de gestão.

IA automatizada sistemas de informação consiste em IA fora da máquina e dentro da máquina.

Extra-máquina inclui um sistema de classificação e codificação de informação técnica e económica; sistema de documentação; diagrama de fluxo de informações (fluxo de documentos: documentos primários, resultantes, normativos e de referência).

As informações na máquina contêm matrizes de dados na mídia da máquina e um programa para organizar o acesso a esses dados.

Extramachine AI - informação que é percebida por uma pessoa sem qualquer meios técnicos(documentos).

Classificação é entendida como a divisão condicional de um conjunto de elementos de informação em subconjuntos baseados na semelhança ou diferença de alguma forma.

2. SGBD e aplicações de banco de dados.

Um sistema de gerenciamento de banco de dados (SGBD) é um complexo de linguagem e programas, que fornecem controle sobre a criação e uso de bancos de dados.

Um SGBD moderno consiste em:

kernels - partes de programas SGBD responsáveis ​​por gerenciar dados na memória e registrar; Processador de linguagem de banco de dados, proporcionando otimização de consultas para recuperação e alteração de dados e criação de banco de dados;

Subsistemas de suporte em tempo de execução que interpretam programas de manipulação de dados que criam a interface de usuário do SGBD;

Programas de serviço(utilitários externos) que fornecem outras capacidades para manutenção de sistemas de informação.

As principais funções do SGBD são

Gerenciando dados armazenados em memória externa;

Gerenciando dados enviados para BATER usando cache de disco; Registro de eventos e alterações, backup e recuperação de banco de dados após falhas;

Suporte a linguagens de manipulação de banco de dados (linguagem de definição de dados, linguagem de manipulação de dados);

Classificações de SGBD

Existem vários critérios pelos quais um SGBD pode ser classificado.

DBMS baseados no modelo de dados são:

SGBD hierárquico, SGBD de rede, SGBD relacional, SGBD orientado a objetos, SGBD objeto-relacional. Atualmente, os 2 últimos tipos são utilizados em projetos sérios. SGBD por grau de distribuição. Local (o SGBD está localizado em apenas um computador) Distribuído (partes do SGBD podem estar localizadas em 2 ou mais computadores).

Aplicativos de banco de dados

Uma aplicação de banco de dados, como o próprio nome sugere, é projetada para interagir com alguma fonte de dados – um banco de dados (BD). A interação envolve receber dados, apresentá-los em um formato específico para visualização do usuário, editá-los de acordo com os algoritmos de negócio implementados no programa e devolver os dados processados ​​ao banco de dados.

A fonte de dados pode ser o próprio banco de dados ou arquivos comuns - texto, planilhas, etc. Mas aqui consideraremos aplicativos que funcionam com bancos de dados.

O próprio aplicativo inclui um mecanismo para receber e enviar dados, um mecanismo para representar dados internamente de uma forma ou de outra, uma interface de usuário para exibir e editar dados e uma lógica de negócios para processar dados.

O mecanismo para receber e enviar dados fornece uma conexão com a fonte de dados (muitas vezes indiretamente). Deve “saber” para onde ir e qual protocolo de comunicação usar para garantir o fluxo bidirecional de dados.

O mecanismo interno de representação de dados é o núcleo de uma aplicação de banco de dados. Ele armazena os dados recebidos na aplicação e os disponibiliza quando solicitado por outras partes da aplicação.

A interface do usuário permite visualizar e editar dados, bem como gerenciar os dados e o aplicativo como um todo.

A lógica de negócios de um aplicativo é um conjunto de algoritmos de processamento de dados implementados no programa.

Entre a aplicação e o próprio banco de dados existe um especial programas(software) que conecta o programa e a fonte de dados e controla o processo de troca de dados. Este software pode ser implementado de diversas maneiras, dependendo do tamanho do banco de dados, das tarefas resolvidas pelo sistema, do número de usuários e de como a aplicação e o banco de dados estão conectados. O middleware pode ser implementado como um ambiente de aplicação, sem o qual não funcionará, ou um conjunto de drivers e bibliotecas dinâmicas que o aplicativo acessa pode ser integrado ao próprio aplicativo. Finalmente, poderia ser um único servidor remoto atendendo milhares de aplicativos.

A fonte de dados é um data warehouse (o próprio banco de dados) e um SGBD que gerencia os dados, garantindo a integridade e consistência dos dados.

3. Conceito moderno de bases de dados relacionais.

Conceitos básicos de banco de dados relacional

Antes de examinarmos detalhadamente cada uma dessas etapas, vamos revisar os conceitos básicos de bancos de dados relacionais. Na teoria relacional, um dos principais é o conceito de relacionamento. Matematicamente, a proporção é definida como segue. Sejam dados n conjuntos D1,D2,...,Dn. Então R é uma relação sobre esses conjuntos se R é um conjunto de conjuntos ordenados da forma , onde d1 é um elemento de D1, d2 é um elemento de D2, ..., dn é um elemento de Dn. Neste caso, conjuntos da forma são chamados de tuplas, e os conjuntos D1,D2,...,Dn são chamados de domínios. Cada tupla consiste em elementos selecionados em seus domínios. Esses elementos são chamados de atributos, e seus valores são valores de atributos, a Fig. 9-a nos apresenta imagem gráfica relacionamentos sob diferentes pontos de vista.

É fácil perceber que a relação é um reflexo de alguma entidade do mundo real (neste caso, a entidade “detalhe”) e do ponto de vista do processamento de dados é uma tabela. Uma tupla é uma linha em uma tabela ou, equivalentemente, um registro. Um atributo é uma coluna de tabela ou um campo em um registro. Um domínio parece ser um tipo genérico que pode ser uma fonte de tipos de campo em um registro. Assim, os seguintes triplos de termos são equivalentes:

relação, tabela

tupla, string, registro

atributo, coluna, campo.

Um banco de dados relacional é uma coleção de relacionamentos contendo todas as informações necessárias e unidos por diversas conexões.

Um atributo (ou conjunto de atributos) que pode ser usado para identificar exclusivamente uma tupla específica (linha, registro) é chamado de chave primária. A chave primária não deve ter atributos adicionais. Isto significa que se um atributo arbitrário for excluído da chave primária, os atributos restantes não serão suficientes para identificar exclusivamente tuplas individuais. Para acelerar o acesso à chave primária, todos os sistemas de gerenciamento de banco de dados (SGBD) possuem um mecanismo chamado indexação. Grosso modo, um índice é uma lista em árvore invertida que aponta para a verdadeira localização de um registro para cada chave primária. Naturalmente, os índices são implementados de forma diferente em diferentes SGBDs (em SGBDs locais, via de regra, na forma de arquivos separados), porém, os princípios de sua organização são os mesmos.

É possível indexar um relacionamento usando atributos diferentes da chave primária. Esse tipo de índice é chamado de índice secundário e é utilizado para reduzir o tempo de acesso na localização de dados em uma relação, bem como para classificação. Assim, se a relação em si não estiver ordenada de forma alguma e puder conter linhas restantes após a exclusão de algumas tuplas, então o índice (para SGBDs locais - o arquivo de índice), ao contrário, é classificado.

Para manter a integridade referencial dos dados, muitos SGBDs possuem um mecanismo das chamadas chaves estrangeiras. O significado desse mecanismo é que um determinado atributo (ou grupo de atributos) de uma relação recebe um link para a chave primária de outra relação; fortalecendo assim os laços de subordinação entre essas relações. Neste caso, uma relação cuja chave primária é referenciada por uma chave estrangeira de outra relação é chamada de relação mestra, ou relação principal; e a relação da qual vem o link é chamada de relação de detalhe ou relação subordinada. Após atribuir tal link, o SGBD tem a capacidade de monitorar automaticamente questões de “não violação” de conexões entre relacionamentos, a saber:

se você tentar inserir um registro em uma tabela subordinada para a qual a chave estrangeira não corresponde na tabela principal (por exemplo, ainda não existe nenhum registro com essa chave primária), o SGBD gerará um erro;

se você tentar deletar um registro da tabela principal cuja chave primária possui pelo menos um link da tabela escrava, o SGBD também irá gerar um erro.

se você tentar alterar a chave primária de um registro da tabela principal que possui pelo menos um link da tabela escrava, o SGBD também irá gerar um erro.

ADIÇÃO

Conceitos básicos de bancos de dados relacionais

Os conceitos básicos de bancos de dados relacionais são tipo de dados, domínio, atributo, tupla, chave primária e relação.

Tipo de dados

Conceito tipo de dados no modelo de dados relacional é completamente adequado ao conceito de tipo de dados em linguagens de programação. Normalmente, os bancos de dados relacionais modernos permitem o armazenamento de caracteres, dados numéricos, cadeias de bits, dados numéricos especializados (como “dinheiro”), bem como dados “temporais” especiais (data, hora, intervalo de tempo). Uma abordagem para expandir as capacidades de sistemas relacionais com tipos de dados abstratos está se desenvolvendo de forma bastante ativa (por exemplo, sistemas da família Ingres/Postgres possuem as capacidades correspondentes). Em nosso exemplo, estamos lidando com três tipos de dados: cadeias de caracteres, inteiros e “dinheiro”.

Domínio

Conceito domínio mais específico para bancos de dados, embora tenha algumas analogias com subtipagem em algumas linguagens de programação. Na sua forma mais geral, um domínio é definido especificando algum tipo de dados base ao qual pertencem os elementos do domínio e uma expressão lógica arbitrária aplicada ao elemento do tipo de dados. Se a avaliação desta expressão booleana retornar verdadeiro, então o elemento de dados é um elemento de domínio.

A interpretação intuitiva mais correta do conceito de domínio é entender o domínio como um conjunto potencial admissível de valores deste tipo. Por exemplo, o domínio "Nomes" em nosso exemplo é definido em um tipo de string de caracteres base, mas seus valores só podem incluir strings que podem representar um nome (em particular, essas strings não podem começar com um caractere suave).

De referir ainda a carga semântica do conceito de domínio: os dados só são considerados comparáveis ​​se pertencerem ao mesmo domínio. Em nosso exemplo, os valores de domínio “Gap Numbers” e “Group Numbers” são do tipo inteiro, mas não são comparáveis. Observe que a maioria dos SGBDs relacionais não utiliza o conceito de domínio, embora o Oracle V.7 já o suporte.

Que é uma aplicação a problemas de processamento de dados de ramos da matemática como teoria dos conjuntos e lógica de primeira ordem.

Os bancos de dados relacionais são construídos no modelo de dados relacionais.

O modelo de dados relacionais inclui os seguintes componentes:

  • Aspecto estrutural (componente) - os dados em um banco de dados são um conjunto de relacionamentos.
  • Aspecto (componente) de integridade - relacionamentos (tabelas) atendem a certas condições de integridade. O RMD oferece suporte a restrições de integridade declarativas no nível do domínio (tipo de dados), no nível do relacionamento e no nível do banco de dados.
  • Aspecto (componente) de processamento (manipulação) - RMD suporta operadores de manipulação de relação (álgebra relacional, cálculo relacional).

Os conceitos básicos de bancos de dados relacionais são tipo de dados, relação, entidade, atributo, domínio, tupla, chave primária.

Conceito tipo de dados no modelo de dados relacional é completamente análogo ao conceito de tipo de dados nas linguagens de programação. Normalmente, os bancos de dados relacionais modernos permitem o armazenamento de dados de caracteres, dados numéricos, sequências de bits, dados numéricos especializados (como dinheiro) e dados especiais (data, hora, intervalo de tempo).

Atitude é um conceito essencial e é uma tabela bidimensional contendo alguns dados.

Essência algum objeto ou evento isolado, cujas informações devem ser armazenadas no banco de dados e que possui um determinado conjunto de propriedades - atributos. As entidades podem ser objetos físicos (realmente existentes), por exemplo ALUNO (atributos – número do Boletim, Sobrenome, Nome, Patronímico, Especialidade, Número do grupo, etc.), e objetos abstratos, por exemplo EXAME (atributos – Disciplina, Data , Professor, Público, etc.). Para entidades, é feita uma distinção entre tipo e instância. Um tipo é caracterizado por um nome e uma lista de propriedades, e uma instância é caracterizada por valores de propriedade específicos.

Atributos representam propriedades que caracterizam uma entidade. Na estrutura da tabela, cada atributo é nomeado e corresponde ao título de uma determinada coluna da tabela. Os atributos da entidade são:

1) identificador e descritivo. A identificação de atributos tem valor único para entidades deste tipo e são chaves potenciais. Eles permitem reconhecer exclusivamente instâncias de uma entidade. Uma das possíveis chaves está selecionada chave primária. A chave primária geralmente é uma chave candidata usada para acessar instâncias de registro com mais frequência. A chave primária deve incluir o número mínimo de atributos necessários para identificação. Os demais atributos são chamados de descritivos;

2) simples e composto. Um atributo simples consiste em um componente, seu valor é indivisível. Um atributo composto é uma combinação de vários componentes, possivelmente pertencentes a tipos diferentes dados (por exemplo, endereço). A decisão de usar um atributo composto ou decompô-lo em componentes depende dos processos específicos de sua utilização e pode estar relacionada ao fornecimento alta velocidade trabalhar com grandes bancos de dados dados;

3) de valor único e de valor múltiplo. Os atributos podem ter um ou vários valores, respectivamente, para cada instância da entidade;

4) básicos e derivados. O valor do atributo principal é independente de outros atributos. O valor de um atributo derivado é calculado com base nos valores de outros atributos (por exemplo, a idade de uma pessoa é calculada com base na data de nascimento e na data atual).

Uma especificação de atributo consiste em seu nome, uma indicação do tipo de dados e uma descrição das restrições de integridade – o conjunto de valores (ou domínio) que o atributo pode assumir.

Domínio representa o conjunto de todos os valores possíveis de um determinado atributo de uma relação.

Esquema de relação (cabeçalho de relação)é uma lista de nomes de atributos que indicam nomes de domínio.

carreata, correspondente a um determinado esquema de relação, é um conjunto de pares (nome do atributo, valor) que contém uma ocorrência de cada nome de atributo. O argumento value é um valor válido para o domínio deste atributo.

Chave primária(chave relacional, atributo chave)É chamado um atributo ou conjunto de atributos de uma relação que identifica exclusivamente cada uma de suas tuplas. Uma chave primária é, por definição, única: uma relação não pode ter duas tuplas diferentes com os mesmos valores de chave primária. Os atributos que compõem a chave primária não podem ter valor NULO. Conceito NULO na teoria do banco de dados relacional, pretende-se denotar a ausência de qualquer valor de atributo. Para cada relacionamento só pode haver uma chave primária.

Todo relacionamento possui necessariamente uma combinação de atributos que podem servir de chave. Pode haver casos em que uma relação possui diversas combinações de atributos, cada um dos quais identifica exclusivamente todas as tuplas da relação. Todas essas combinações de atributos são chaves possíveis relação. Qualquer uma das chaves possíveis pode ser selecionada como chave primária.

As chaves estrangeiras são o principal mecanismo para organizar o relacionamento entre tabelas e manter a integridade e consistência das informações do banco de dados.

Chave estrangeiraé um conjunto de atributos de uma relação que é uma possível chave para outra relação.

Graças à presença de ligações entre chaves possíveis e estrangeiras, é garantida a interligação de tuplas de determinadas relações, o que ajuda a manter a base de dados num estado tal que possa ser considerada como um todo único. Uma relação que contém uma chave estrangeira é chamada de filho, e uma relação que contém uma chave candidata associada a uma chave estrangeira é chamada de pai. Os tipos de dados (e em alguns SGBDs, dimensões) dos atributos correspondentes das chaves estrangeira e pai devem corresponder.

Elementos do modelo de dados relacional e a forma de sua apresentação

Elemento de modelo relacional

Formulário de apresentação

Atitude

Diagrama de relacionamento

Linha do cabeçalho da coluna da tabela (cabeçalho da tabela)

Linha da tabela

Essência

Descrição das propriedades do objeto

Cabeçalho da coluna da tabela

Conjunto de valores de atributos válidos

Valor do atributo

Valor do campo no registro

Chave primária

Um ou mais atributos

Tipo de dados

Tipo de valor do elemento de tabela

Banco de dados (BD) - Este é um conjunto nomeado de dados estruturados relacionados a uma área temática específica e destinados ao armazenamento, acumulação e processamento por meio de um computador.

Banco de dados relacional (RDB)é um conjunto de relações cujos nomes coincidem com os nomes das relações de esquema no esquema do banco de dados.

Conceitos Básicos bancos de dados relacionais:

· Tipo de dados– tipo de valores de uma coluna específica.

· Domínio(domínio) – o conjunto de todos os valores de atributos válidos.

· Atributo(atributo) – cabeçalho da coluna da tabela que caracteriza uma propriedade nomeada de um objeto, por exemplo, sobrenome do aluno, data do pedido, sexo do funcionário, etc.

· Cortejo– uma linha da tabela que representa um conjunto de valores de atributos logicamente relacionados.

· Atitude(relação) – uma tabela que reflete informações sobre objetos do mundo real, por exemplo, sobre alunos, ordens, funcionários, residentes, etc.

· Chave primária(chave primária) – um campo (ou conjunto de campos) de uma tabela que identifica exclusivamente cada um de seus registros.

· Chave alternativaé um campo (ou conjunto de campos) que não corresponde à chave primária e identifica exclusivamente uma instância de um registro.

· Chave estrangeiraé um campo (ou conjunto de campos) cujos valores correspondem aos valores existentes da chave primária de outra tabela. Ao vincular duas tabelas, a chave primária da primeira tabela é vinculada à chave estrangeira da segunda tabela.

· Modelo de dados relacionais (RDM)- organização de dados em forma de tabelas bidimensionais.

Cada tabela relacional deve ter as seguintes propriedades:

1. Cada registro da tabela é único, ou seja, o conjunto de valores nos campos não se repete.

2. Cada valor escrito na intersecção de uma linha e uma coluna é atômico (inseparável).

3. Os valores de cada campo devem ser do mesmo tipo.

4. Cada campo possui um nome exclusivo.

5. A ordem das entradas não é significativa.

Principais elementos do banco de dados:

Campo- uma unidade elementar de organização lógica de dados. As seguintes características são usadas para descrever o campo:

· nome, por exemplo, Sobrenome, Nome, Patronímico, Data de Nascimento;

· digite, por exemplo, string, caractere, numérico, data;

· comprimento, por exemplo, em bytes;

· precisão para dados numéricos, como duas casas decimais para mostrar a parte fracionária de um número.

Registro- um conjunto de valores de campos logicamente relacionados.

Índice– meio de agilizar a operação de busca de registros, utilizado para estabelecer relacionamentos entre tabelas. Uma tabela para a qual um índice é usado é chamada de indexada. Ao trabalhar com índices, é preciso prestar atenção à organização dos índices, que é a base da classificação. Um índice simples é representado por um único campo ou expressão lógica, processando um campo. Um índice composto é representado por vários campos com a capacidade de utilizar diversas funções. Os índices da tabela são armazenados em um arquivo de índice.


Integridade de dados– este é um meio de proteger os dados nos campos de comunicação, permitindo manter as tabelas em um estado consistente (consistente) (ou seja, não permitindo a existência de registros em uma tabela subordinada que não possuam registros correspondentes na tabela pai).

Solicitar– uma pergunta formulada para uma ou mais tabelas interligadas contendo critérios de amostragem de dados. A solicitação é feita em linguagem estruturada Consultas SQL(Linguagem de consulta estruturada). A recuperação de dados de uma ou mais tabelas pode resultar em um conjunto de registros denominado visualização.

Apresentação de dados– uma consulta nomeada armazenada no banco de dados para recuperar dados (de uma ou mais tabelas).

Uma visão é essencialmente uma tabela temporária criada como resultado de uma consulta. A solicitação em si pode ser enviada para arquivo separado, relatório, tabela temporária, tabela em disco, etc.

Relatório– um componente do sistema cujo objetivo principal é descrever e imprimir documentos com base nas informações do banco de dados.

Características gerais de trabalhar com RDB:

A interpretação mais comum do modelo de dados relacional parece ser a de Data, que o reproduz (com vários refinamentos) em quase todos os seus livros. Segundo Date, o modelo relacional consiste em três partes que descrevem diferentes aspectos da abordagem relacional: a parte estrutural, a parte de manipulação e a parte holística.

A parte estrutural do modelo afirma que a única estrutura de dados utilizada em bancos de dados relacionais é a relação n-ária normalizada.

A parte de manipulação do modelo afirma dois mecanismos fundamentais para a manipulação de bancos de dados relacionais - álgebra relacional e cálculo relacional. O primeiro mecanismo é baseado principalmente na teoria clássica dos conjuntos (com alguns refinamentos), e o segundo é baseado no aparato lógico clássico do cálculo de predicados de primeira ordem. Observe que a principal função da parte de manipulação do modelo relacional é fornecer uma medida da relacionalidade de qualquer linguagem de banco de dados relacional específica: uma linguagem é chamada de relacional se não tiver menos expressividade e poder do que a álgebra relacional ou o cálculo relacional.


28. LINGUAGENS ALGORÍTMICAS. TRADUTORES (INTÉRPRETES E COMPILADORES). LINGUAGEM ALGORÍTMICA BÁSICA. ESTRUTURA DO PROGRAMA. IDENTIFICADORES. VARIÁVEIS. OPERADORES. PROCESSAMENTO DE MATRIZES UNIDIMENSIONAIS E BIDIMENSIONAIS. FUNÇÕES DO USUÁRIO. SUB-ROTINAS. TRABALHANDO COM ARQUIVOS DE DADOS.

Linguagem de alto nível- uma linguagem de programação cujos conceitos e estrutura são convenientes para a percepção humana.

Linguagem algorítmica(Linguagem algorítmica) - uma linguagem de programação - uma linguagem artificial (formal) projetada para escrever algoritmos. A linguagem de programação é especificada por sua descrição e implementada na forma programa especial: compilador ou intérprete. Exemplos de linguagens algorítmicas são Borland Pascal, C++, Basic, etc.

Conceitos Básicos linguagem algorítmica:

Composição da linguagem:

A linguagem falada comum consiste em quatro elementos básicos: símbolos, palavras, frases e sentenças. Uma linguagem algorítmica contém elementos semelhantes, apenas as palavras são chamadas de construções elementares, as frases são chamadas de expressões e as sentenças são chamadas de operadores.

Símbolos, construções, expressões e operadores elementares formam uma estrutura hierárquica, uma vez que construções elementares são formadas a partir de uma sequência de símbolos.

Expressõesé uma sequência de estruturas e símbolos elementares,

Operador- uma sequência de expressões, estruturas elementares e símbolos.

Descrição do idioma:

Uma descrição de símbolo consiste em listar os símbolos válidos do idioma. A descrição das estruturas elementares significa as regras para sua formação. Descrição de expressões são as regras para a formação de quaisquer expressões que tenham significado em um determinado idioma. A descrição dos operadores consiste em uma discussão de todos os tipos de operadores permitidos na linguagem. A descrição de cada elemento da linguagem é dada pela sua SINTAXE e SEMÂNTICA.

Sintático as definições estabelecem regras para a construção de elementos de linguagem.

Semântica define o significado e as regras de uso dos elementos da linguagem para os quais foram dadas definições sintáticas.

Símbolos de linguagem- estes são os sinais básicos indivisíveis em termos dos quais todos os textos da língua são escritos.

Estruturas elementares- estas são as unidades mínimas de linguagem que possuem significado independente. Eles são formados a partir dos símbolos básicos da língua.

Expressão em uma linguagem algorítmica, consiste em estruturas e símbolos elementares; especifica uma regra para calcular um determinado valor.

Operador especifica uma descrição completa de alguma ação que precisa ser executada. Um grupo de declarações pode ser necessário para descrever uma ação complexa.

Neste caso, os operadores são combinados em Operador composto ou Bloquear. Ações, especificados pelos operadores, são executados nos dados. As declarações de uma linguagem algorítmica que fornecem informações sobre os tipos de dados são chamadas de declarações ou instruções não executáveis. Um conjunto de descrições e operadores unidos por um único algoritmo forma um programa em uma linguagem algorítmica. No processo de estudo de uma linguagem algorítmica, é necessário distinguir a linguagem algorítmica da linguagem com a qual é realizada a descrição da linguagem algorítmica em estudo. Normalmente, o idioma que está sendo estudado é chamado simplesmente de idioma, e o idioma em termos do qual é dada a descrição do idioma que está sendo estudado - Metalinguagem.

Tradutores - (tradutor - tradutor de inglês) é um programa tradutor. Ele converte um programa escrito em uma das linguagens de alto nível em um programa que consiste em instruções de máquina.

Um programa escrito em qualquer linguagem algorítmica de alto nível não pode ser executado diretamente em um computador. O computador entende apenas a linguagem dos comandos da máquina. Conseqüentemente, um programa em uma linguagem algorítmica deve ser traduzido (traduzido) para a linguagem de comando de um computador específico. Essa tradução é realizada automaticamente por programas tradutores especiais criados para cada linguagem algorítmica e para cada tipo de computador.

Existem dois métodos principais de transmissão - compilação e interpretação.

1. Compilação: Compilador(compilador inglês - compilador, coletor) lê o programa inteiro, traduz e cria uma versão completa do programa em linguagem de máquina, que é então executada.

No compilação todo o programa original é imediatamente convertido em uma sequência de instruções de máquina. Depois disso, o programa resultante é executado por um computador com os dados de origem disponíveis. A vantagem deste método é que a tradução é realizada uma vez e a execução (múltipla) do programa resultante pode ser realizada em alta velocidade. Ao mesmo tempo, o programa resultante pode ocupar muito espaço na memória do computador, pois um operador de idioma é substituído por centenas ou até milhares de comandos durante a tradução. Além disso, a depuração e modificação do programa transmitido são muito difíceis.

2. Interpretação: Intérprete(intérprete de inglês - intérprete, intérprete) traduz e executa o programa linha por linha.

No interpretações o programa original é armazenado na memória do computador quase inalterado. O programa interpretador decodifica as instruções do programa fonte, uma de cada vez, e garante imediatamente sua execução com os dados disponíveis. O programa interpretado ocupa pouco espaço na memória do computador e é fácil de depurar e modificar. Mas a execução do programa é bastante lenta, pois a cada execução a interpretação de todos os operadores é realizada novamente.

Os programas compilados são executados mais rapidamente, mas os interpretados são mais fáceis de corrigir e alterar.

Cada linguagem específica é orientada para compilação ou interpretação - dependendo da finalidade para a qual foi criada. Por exemplo, Pascal é normalmente usado para resolver problemas bastante complexos nos quais a velocidade do programa é importante. É por isso determinado idioma geralmente implementado usando um compilador.

Por outro lado, o BASIC foi criado como uma linguagem para programadores novatos, para quem a execução de um programa linha por linha apresenta vantagens inegáveis.

Às vezes existe um compilador e um interpretador para a mesma linguagem. Nesse caso, você pode usar um intérprete para desenvolver e testar o programa e depois compilar o programa depurado para melhorar sua velocidade de execução.

Os fundamentos do modelo de dados relacional foram delineados pela primeira vez em um artigo de E. Codd em 1970. Este trabalho serviu de impulso para grande quantidade artigos e livros em que o modelo relacional recebeu desenvolvimento adicional. A interpretação mais comum do modelo de dados relacional pertence a K. Date. Segundo Date, o modelo relacional é composto por três partes:

  • Parte estrutural
  • Parte integrante
  • Parte de manipulação

Parte estrutural descreve quais objetos são considerados pelo modelo relacional. Postula-se que a única estrutura de dados utilizada no modelo relacional são as relações n-árias normalizadas.

Parte integrante descreve um tipo especial de restrição que deve ser satisfeita para qualquer relacionamento em qualquer banco de dados relacional. Esse integridade de entidades E integridade da chave estrangeira.

Parte de manipulação descreve duas maneiras equivalentes de manipular dados relacionais - álgebra relacional E cálculo relacional.

Este capítulo examina a parte estrutural do modelo relacional.

Tipos de dados

Quaisquer dados usados ​​na programação possuem seus próprios tipos de dados.

Importante! O modelo relacional exige que os tipos de dados utilizados sejam simples.

Para esclarecer esta afirmação, vamos considerar quais tipos de dados são normalmente considerados na programação. Normalmente, os tipos de dados são divididos em três grupos:

  • Tipos de dados simples
  • Tipos de dados estruturados
  • Tipos de dados de referência

Tipos de dados simples

Tipos de dados simples ou atômicos não têm estrutura interna. Este tipo de dados é chamado escalares. Os tipos de dados simples incluem os seguintes tipos:

  • Lógico
  • Corda
  • Numérico

Várias linguagens de programação podem expandir e refinar esta lista adicionando tipos como:

  • Todo
  • Real
  • Tempo
  • Monetário
  • Enumerável
  • Intervalo
  • Etc...

Claro, o conceito de atomicidade é bastante relativo. Assim, um tipo de dados string pode ser pensado como uma matriz unidimensional de caracteres, e um tipo de dados inteiro pode ser pensado como um conjunto de bits. A única coisa importante é que ao mudar para tal nível baixo se perde semântica (significado) dos dados. Se uma string expressando, por exemplo, o sobrenome de um funcionário for decomposta em uma matriz de caracteres, o significado de tal string como um todo único será perdido.

Tipos de dados estruturados

Tipos de dados estruturados destinam-se a especificar estruturas de dados complexas. Os tipos de dados estruturados são construídos a partir de elementos constituintes chamados componentes, que por sua vez podem ter estrutura. Os seguintes tipos de dados podem ser considerados tipos de dados estruturados:

  • Matrizes
  • Registros (Estruturas)

Do ponto de vista matemático, um array é uma função com domínio finito. Por exemplo, considere um conjunto finito de números naturais

chamado de conjunto de índices. Mostrar

de muitos para muitos números reais especifica uma matriz real unidimensional. O valor desta função para algum valor de índice é chamado de elemento da matriz correspondente a. Matrizes multidimensionais podem ser definidas de forma semelhante.

Um registro (ou estrutura) é uma tupla de algum produto cartesiano de conjuntos. Na verdade, um registro é um conjunto nomeado e ordenado de elementos, cada um dos quais pertence a um tipo. Então a entrada é um elemento do conjunto . Ao declarar novos tipos de registros com base nos tipos existentes, o usuário pode construir tipos de dados arbitrariamente complexos.

O que os tipos de dados estruturados têm em comum é que eles possuem uma estrutura interna que é usada no mesmo nível de abstração que os próprios tipos de dados.

Vamos explicar isso da seguinte maneira. Ao trabalhar com matrizes ou registros, você pode manipular a matriz ou registro como um todo (criar, excluir, copiar matrizes ou registros inteiros) e elemento por elemento. Para tipos de dados estruturados, existem funções especiais- construtores de tipo que permitem criar arrays ou registros a partir de elementos de tipos mais simples.

Ao trabalhar com tipos de dados simples, por exemplo, numéricos, nós os manipulamos como objetos inteiros indivisíveis. Para “ver” que um tipo de dados numérico é realmente complexo (uma coleção de bits), precisamos passar para um nível inferior de abstração. No nível do código do programa, isso se parecerá com inserções de assembly em código de linguagem de alto nível ou com o uso de operações bit a bit especiais.

Tipos de dados de referência

Tipo de dados de referência(ponteiros) tem como objetivo fornecer a capacidade de apontar para outros dados. Ponteiros são típicos de linguagens procedurais, que possuem o conceito de área de memória para armazenamento de dados. Um tipo de dados de referência é projetado para processar estruturas complexas de mudança, como árvores, gráficos e estruturas recursivas.

Tipos de dados usados ​​no modelo relacional

Na verdade, para o modelo de dados relacional, o tipo de dados utilizados não é importante. O requisito de que o tipo de dados seja simples deve ser entendido como significando que as operações relacionais não devem levar em conta a estrutura interna dos dados. É claro que as ações que podem ser executadas com os dados como um todo devem ser descritas, por exemplo, dados tipo numérico pode ser adicionado, a concatenação é possível para strings, etc.

Deste ponto de vista, se considerarmos um array, por exemplo, como um todo único e não usarmos operações elemento por elemento, então o array pode ser considerado um tipo de dados simples. Além disso, você pode criar seus próprios, não importa quão complexo seja o tipo de dados, descreva ações possíveis com este tipo de dados, e se as operações não requerem conhecimento da estrutura interna dos dados, então este tipo de dados também será simples do ponto de vista da teoria relacional. Por exemplo, você pode criar um novo tipo - números complexos como um registro no formato , onde . Você pode descrever as funções de adição, multiplicação, subtração e divisão, e todas as operações com componentes e executá-las somente dentro dessas operações. Então, se apenas as operações descritas forem usadas em ações com esse tipo, a estrutura interna não desempenha um papel e o tipo de dados visto de fora parece atômico.

É exatamente assim que alguns SGBDs pós-relacionais implementam o trabalho com tipos de dados arbitrariamente complexos criados pelos usuários.

Domínios

No modelo de dados relacional, o conceito de tipo de dados está intimamente relacionado ao conceito de domínio, o que pode ser considerado um esclarecimento do tipo de dados.

Domínioé um conceito semântico. Um domínio pode ser pensado como um subconjunto de valores de algum tipo de dados que possuem um significado específico. O domínio é caracterizado pelas seguintes propriedades:

  • O domínio tem um nome exclusivo (dentro do banco de dados)
  • O domínio é definido em algum tipo de dados simples ou em outro domínio
  • Um domínio pode ter alguma condição lógica que lhe permita descrever um subconjunto de dados válido para um determinado domínio.
  • O domínio carrega um certo significado

Por exemplo, o domínio que significa "idade do funcionário" pode ser descrito como o seguinte subconjunto do conjunto de números naturais:

A diferença entre um domínio e o conceito de subconjunto é justamente que o domínio reflete a semântica definida pela área temática. Pode haver vários domínios que coincidem como subconjuntos, mas carregam significados diferentes. Por exemplo, os domínios "Peso da Peça" e "Quantidade Disponível" podem igualmente ser descritos como um conjunto de números inteiros não negativos, mas o significado destes domínios será diferente e serão domínios diferentes.

O principal significado dos domínios é que os domínios limitam as comparações. É logicamente incorreto comparar valores de domínios diferentes, mesmo que sejam do mesmo tipo. Isso revela a limitação semântica dos domínios. A solicitação sintaticamente correta “forneça uma lista de todas as peças cujo peso da peça é maior que a quantidade disponível” não corresponde ao significado dos conceitos “quantidade” e “peso”.

Comentário. O conceito de domínio ajuda a modelar corretamente a área temática. Ao trabalhar com um sistema real, em princípio, é possível uma situação em que você precisa responder à pergunta acima. O sistema dará uma resposta, mas provavelmente não terá sentido.

Comentário. Nem todos os domínios possuem uma condição lógica que limita os valores possíveis do domínio. Nesse caso, o conjunto de valores possíveis para o domínio é igual ao conjunto de valores possíveis para o tipo de dados.

Comentário. Nem sempre é óbvio como definir uma condição booleana que limite os valores possíveis de um domínio. Ficarei grato a qualquer pessoa que possa me fornecer uma condição para um tipo de dados string que especifique o domínio "Sobrenome do funcionário". É claro que as linhas que são sobrenomes não devem começar com números, caracteres de serviço, sinal suave, etc. Mas o sobrenome “Ggggggyyyyy” é aceitável? Por que não? Obviamente não! Ou talvez alguém se chame assim por despeito. Dificuldades deste tipo surgem porque o significado dos fenómenos reais nem sempre pode ser descrito formalmente. Acontece que nós, como todas as pessoas, entendemos intuitivamente o que é um sobrenome, mas ninguém pode dar uma definição tão formal que distinga sobrenomes de strings que não são sobrenomes. A saída para essa situação é simples - conte com a inteligência do funcionário que digita os nomes no computador.

Relações, atributos, tuplas de relação

Definições e exemplos

O conceito fundamental do modelo de dados relacional é o conceito relação. Na definição do conceito de relacionamento, seguiremos o livro de K. Date.

Definição 1. Atributo de relacionamento há alguns desse tipo<Имя_атрибута: Имя_домена>.
Os nomes dos atributos devem ser exclusivos no relacionamento. Freqüentemente, os nomes dos atributos de um relacionamento são iguais aos nomes dos domínios correspondentes.

Definição 2. Atitude, definido em vários domínios (não necessariamente diferentes), contém duas partes: um cabeçalho e um corpo.
Cabeçalho de relacionamento contém um número fixo de atributos de relação:

Relacionamento corporal contém muitas tuplas de relação. Todo relação de tupla representa um conjunto de pares da forma<Имя_атрибута: Значение_атрибута>:

de modo que o valor do atributo pertença ao domínio

O relacionamento geralmente é escrito como:

ou mais curto

,

ou apenas

O número de atributos em uma relação é chamado grau(ou -aridade) relação.
A cardinalidade de um conjunto de tuplas de uma relação é chamada poder relação.

Voltando ao conceito matemático de relação introduzido no capítulo anterior, podemos tirar as seguintes conclusões:

Conclusão 1: O núcleo da relação descreve o produto cartesiano dos domínios nos quais a relação é definida. O cabeçalho é estático; não muda durante o trabalho com o banco de dados. Se atributos forem alterados, adicionados ou excluídos em uma relação, o resultado será uma relação diferente (mesmo com o mesmo nome).

Conclusão 2: O corpo de uma relação é um conjunto de tuplas, ou seja, um subconjunto do produto cartesiano de domínios. Assim, o corpo de uma relação é na verdade uma relação no sentido matemático da palavra. O corpo do relacionamento pode mudar durante o trabalho com o banco de dados - as tuplas podem ser alteradas, adicionadas e excluídas.

Exemplo 1. Consideremos a relação “Funcionários” definida nos domínios “Número_Funcionário”, “Sobrenome”, “Salário”, “Número_Departamento”. Porque Como todos os domínios são diferentes, é conveniente nomear os nomes dos atributos de uma relação da mesma forma que os domínios correspondentes. O cabeçalho da relação se parece com:

Funcionários (Número_do Funcionário, Sobrenome, Salário, Número_do Departamento)

Deixe entrar no momento a relação contém três tuplas:

(1, Ivanov, 1000, 1)
(2, Petrov, 2000, 2)
(3, Sidorov, 3000, 1)

Tal relação é naturalmente representada na forma de uma tabela:

Tabela 1 Relacionamento “Funcionários”

Definição 3. Banco de dados relacional chamado de conjunto de relações.

Definição 4. Esquema de banco de dados relacional

Embora qualquer relacionamento possa ser representado como uma tabela, deve ficar claro que relacionamentos não são tabelas. Esses conceitos são próximos, mas não são os mesmos. As diferenças entre relacionamentos e tabelas serão discutidas abaixo.

Os termos nos quais o modelo de dados relacional opera têm sinônimos “tabulares” correspondentes:

Termo relacional

Termo "tabular" correspondente

Banco de dados Conjunto de mesas
Esquema de banco de dados Conjunto de cabeçalhos de tabela
Atitude Mesa
Cabeçalho de relacionamento Título da tabela
Relacionamento corporal Corpo da mesa
Atributo de relacionamento Nome da coluna da tabela
Tupla de relacionamento Linha da tabela
Grau (aridade) de relacionamento Número de colunas da tabela
Relação de potência Número de linhas da tabela
Domínios e tipos de dados Tipos de dados nas células da tabela

Propriedades dos relacionamentos

As propriedades das relações decorrem diretamente da definição de relação acima. Essas propriedades são as principais diferenças entre relacionamentos e tabelas.

  1. Não existem tuplas idênticas em uma relação. Na verdade, o corpo de uma relação é um conjunto de tuplas e, como qualquer conjunto, não pode conter elementos indistinguíveis (ver o conceito de conjunto no Capítulo 1). As tabelas, diferentemente dos relacionamentos, podem conter linhas idênticas.
  2. As tuplas não são ordenadas (de cima para baixo). Na verdade, apesar de termos representado a relação “Funcionários” na forma de uma tabela, não se pode dizer que o empregado Ivanov “precede” o empregado Petrov. A razão é a mesma: o corpo da relação é um conjunto e o conjunto não é ordenado. Esta é a segunda razão pela qual os relacionamentos e as tabelas não podem ser identificados – as linhas nas tabelas são ordenadas. O mesmo relacionamento pode ser representado por tabelas diferentes nas quais as linhas estão em ordens diferentes.
  3. Os atributos não estão ordenados (da esquerda para a direita). Porque Cada atributo possui um nome exclusivo dentro do relacionamento, então a ordem dos atributos não importa. Esta propriedade distingue um pouco uma relação da definição matemática de uma relação (ver Capítulo 1 - os componentes das tuplas são ordenados). Esta é também a terceira razão pela qual relacionamentos e tabelas não podem ser igualados – as colunas de uma tabela são ordenadas. O mesmo relacionamento pode ser representado por tabelas diferentes nas quais as colunas estão em ordens diferentes.
  4. Todos os valores de atributos são atômicos. Isso decorre do fato de que os atributos subjacentes possuem valores atômicos. Esta é a quarta diferença entre relacionamentos e tabelas - você pode colocar qualquer coisa nas células da tabela - arrays, estruturas e até outras tabelas.

Comentário. Das propriedades de uma relação segue-se que nem toda tabela pode definir uma relação. Para que uma tabela defina um relacionamento, a tabela deve ter uma estrutura simples (conter apenas linhas e colunas, cada linha tendo o mesmo número de campos), a tabela não deve ter linhas idênticas, qualquer coluna da tabela deve conter dados apenas um tipo, todos os tipos de dados usados ​​devem ser simples.

Comentário. Cada relacionamento pode ser considerado classe de equivalência de tabela, para o qual as seguintes condições são atendidas:

  • As tabelas têm o mesmo número de colunas.
  • As tabelas contêm colunas com os mesmos nomes.
  • Colunas com os mesmos nomes contêm dados dos mesmos domínios.
  • As tabelas possuem as mesmas linhas, mas a ordem das colunas pode variar.

Todas essas tabelas são representações diferentes da mesma relação.

Primeira forma normal

O mais difícil é definir coisas que todos entendam. Se você não der uma definição estrita e descritiva, sempre existe a possibilidade de sua interpretação incorreta. Se dermos uma definição formal estrita, então, via de regra, ela será trivial ou muito complicada. Esta é exatamente a situação com a definição de um relacionamento em Primeira Forma Normal(1NF). É impossível não falar sobre isso, porque... Com base na 1NF, são construídas formas normais superiores, que serão discutidas mais adiante no Capítulo. 6 e 7. É difícil definir 1NF devido à sua trivialidade. Portanto, vamos apenas dar algumas explicações.

Explicação 1. Diz-se que uma relação está em 1NF se satisfaz a Definição 2.

Isto, na verdade, é uma tautologia, porque da Definição 2 segue-se que não existem outras relações. Na verdade, a Definição 2 descreve o que é uma relação e o que não é, portanto, simplesmente não existem relações na forma normal não-primeira.

Explicação 2. Diz-se que uma relação está na 1NF se seus atributos contêm apenas valores escalares (atômicos).

Novamente, a Definição 2 depende do conceito de domínio, e os domínios são definidos em tipos de dados simples.

A forma normal não-primeira pode ser obtida assumindo que os atributos de uma relação podem ser definidos em tipos de dados complexos - arrays, estruturas ou mesmo outras relações. É fácil imaginar uma tabela na qual algumas células contenham arrays, outras células contenham estruturas complexas definidas pelo usuário e outras ainda contenham tabelas relacionais inteiras, que por sua vez podem conter os mesmos objetos complexos. Esses são os recursos fornecidos por alguns SGBDs pós-relacionais e de objetos modernos.

O requisito de que os relacionamentos devem conter apenas dados de tipos simples explica por que os relacionamentos são às vezes chamados mesas planas(mesa simples). Na verdade, as tabelas que definem relacionamentos são bidimensionais. Uma dimensão é especificada por uma lista de colunas, a segunda dimensão é especificada por uma lista de linhas. Um par de coordenadas (número da linha, número da coluna) identifica exclusivamente uma célula da tabela e o valor que ela contém. Se assumirmos que uma célula de tabela pode conter dados de tipos complexos (matrizes, estruturas, outras tabelas), então tal tabela não será mais plana. Por exemplo, se uma célula da tabela contém um array, então para acessar um elemento do array você precisa conhecer três parâmetros (número da linha, número da coluna, número do elemento no array).

Assim emerge uma terceira explicação da Primeira Forma Normal:

Explicação 3. Uma relação está em 1FN se for uma tabela plana.

Limitamo-nos deliberadamente a considerar apenas a teoria relacional clássica, na qual todas as relações têm apenas atributos atômicos e estão obviamente em 1NF.

Conclusões

O modelo de dados relacionais consiste em três partes:

  • Parte estrutural
  • Parte integrante
  • Parte de manipulação

No modelo relacional clássico, apenas tipos de dados simples (atômicos). Tipos de dados simples não possuem estrutura interna.

Domínios- São tipos de dados que possuem algum significado (semântica). Comparações de limite de domínios – é incorreto, embora possível, comparar valores de domínios diferentes.

Atitude consiste em duas partes - cabeçalho de relação E relacionamento corporal. O cabeçalho da relação é análogo ao cabeçalho da tabela. O cabeçalho da relação consiste em atributos. O número de atributos é chamado grau de relacionamento. O corpo de um relacionamento é análogo ao corpo de uma tabela. O corpo do relacionamento consiste em tuplas. Uma tupla de relação é análoga a uma linha de tabela. O número de tuplas de uma relação é chamado relação de potência.

A relação tem as seguintes propriedades:

  • Não existem tuplas idênticas em uma relação.
  • As tuplas não são ordenadas (de cima para baixo).
  • Os atributos não estão ordenados (da esquerda para a direita).
  • Todos os valores de atributos são atômicos.

Banco de dados relacional chamado de conjunto de relações.

Esquema de banco de dados relacional data é o conjunto de cabeçalhos de relacionamento incluídos no banco de dados.

O relacionamento está em Primeira Forma Normal(1NF) se contiver apenas valores escalares (atômicos).