Método comum de identificação de domínio: definir um tipo

23 

Full text

(1)

ABORDAGEM

ENTIDADE

RELACIONAMENTO

Introdução

Domínios

Tabelas

Valores vazios

Chaves

(2)

Proposta de Ted Codd (1970)

Principal modelo usado nos sistemas de gerência

de banco de dados do tipo relacional

Existência de outros tipos de sistemas no mercado, além dos SGBD relacionais

Claro predomínio dos SGBD relacionais

Surgimento de conceitos usados no projeto de um

banco de dados em combinação com a

abordagem relacional, como a

normalização

Composição de um modelo relacional:

tabelas

ou

relações

Tabela: terminologia mais comum nos produtos comerciais e na prática

Relação: mais comum na área acadêmica e nos livros texto (utilizada na literatura original sobre a abordagem relacional)

Conjunto de valores atômicos

Atomicidade: cada valor no domínio é indivisível em se tratando de modelo relacional formal

Método comum de identificação de domínio: definir um tipo de dadodo qual são retirados os valores de dados que formam o domínio

Especificação de nome de domínio: auxílio na intepretação de seus valores

Exemplos de definições

!"# $ % & "&'() &'$: conjunto de números de telefone com dez dígitos válidos no Brasil

'*'!# "+ !! '"%)!)(': conjunto de números de CPF com onze dígitos

!: conjunto de sequência de caracteres que representam nomes de pessoas

!"* +' #' &# "'('* )( : conjunto de nomes (sequências de caracteres) de departamentos de uma instituição acadêmica

(3)

Associação de um tipo de dadoou formato para cada domínio

Exemplos

!"# $ % & "$ ('$: cadeias ou sequências de

caracteres no formato , onde cada é um

dígito e os dois primeiros dígitos representam um código de área de telefone válido

!: cadeias ou sequências de caracteres

*'* !: números inteiros entre 15 e 80

Definição: conjunto não ordenado de

linhas

(

tuplas

, na terminologia acadêmica)

Cada linha é composta por uma série de campos(valor de atributo, na terminologia acadêmica)

Correspondência entre linhas e ocorrências de entidades e relacionamentos de um DER

Cada campo é identificado por

nome de campo

(

nome de atributo

, na terminologia acadêmica)

Especificação da forma de interpretação dos valores de dados de cada linha

O conjunto de campos das linhas de uma tabela que possuem o mesmo nome formam uma coluna

(4)

Exemplo: representação gráfica

Cada linha é uma representação de dados específicos de um aluno (uma ocorrência particular da entidade) Nomes de colunas: usados para indicar como são interpretados os valores de dados em cada linha, com base na coluna em que cada valor se encontra

(5)

,

Esquema relacional: usado para descrição textual de uma tabela ou relação

Sintaxe: R(A1, A2, ..., An) R: nome da tabela ou relação

Campo ou atributo An: nome de um papel desempenhado por algum domínio Dno esquema da tabela ou relação R

Domínio de An: indicado por dom(An)

Representação gráfica (diagrama) de esquema relacional: exemplo

Grau(ou aridade) de tabela ou relação: número de campos ou atributos n do esquema da relação

Exemplo

ALUNO (Nome, CPF, Endereco, Telefone)

Variante da sintaxe: acréscimo de definição de tipos de dados usados

ALUNO (Nome: string, CPF: string, Endereco: string, Telefone: string)

,

Relação(ou estado de relação) r de um esquema relacional R(A1, A2, ..., An): conjunto de n linhas ou tuplas

Sintaxe: r = {t1, t2, ..., tn}

Tuplatn: lista ordenada de n valores t = <v1, v2, ..., vn>

Cada valor vi, 1 ≤ i ≤ n, é um elemento de dom(Ai)ou é um valor especial NULL

Valor i6ésimona tuplat(correspondente ao atributo A i):

referenciado como t[Ai]ou t.Ai(ou t[i]se usarmos a notação posicional)

Subtupla de valores de t correspondentes aos atributos Au,

(6)

,

Exemplo

Tupla#= -. '&) $ '/)*! &01 .233 444 35367801 . / &)*' *'

'91 32:301 ;

#< =ou # = -. '&) $ '/)*! &0;

#< 1 $ % & 1 &* ( =ou # > 1 $ % & 1 &* ( ?=

-.233 444 35367801 1 . / &)*' *' '91 32:30;

Análise comparativa: tabela x arquivo convencional

)#@ ) 'A $' B )/

Ordenamento Linhas não estão

ordenadas (ordem de recuperação arbitrária,

a menos que a

instrução de consulta especifique a)

Aplicativos responsáveis pela

manutenção dos dados mantêm

controle sobre ordem de

armazenamento, com possibilidade de referenciamento de registros por sua posição relativa

Valores de campos

e Possibilidade de campos

compostos por outros campos

(“itens de grupo”) e campos

multivalorados (“arrays”, em uma linguagem de programação, por exemplo)

Acesso

envolvendo os campos de uma ou mais linhas

: estrutura auxiliar usada para recuperação

de registros por determinados

critérios, evitando a leitura

(7)

C

Conceito de que o valor de um determinado campo ou atributo em uma linha específica é desconhecido ou inexistente (ou ainda não foi especificado)

Terminologia: uso da expressões “nulo” ou “null” (esta última, a palavra em inglês)

Exemplo: o campo de telefone é vazio ou nulo para a linha referente ao aluno Daniel Davidson

Campos obrigatórios: campos para os quais não são admitidos valores vazios ou nulos nas linhas

Campos opcionais: campos nos quais podem aparecer valores vazios ou nulos nas linhas

D

Conceito básico para estabelecer relações entre

linhas de tabelas

Tipos de chaves

E'/ + ) F )' E'/ '$# &'#)/'

(8)

D

Superchave

: coluna ou combinação de colunas

cujos valores distinguem uma linha das demais

dentro de uma tabela

Restrição de exclusividade

Dados duas tuplas distintas quaisquerst1e t2em uma relação r do esquema relacional R, t1[Superchave] ≠ t2[Superchave]

E'/

: superchave com a propriedade adicional

de que a remoção de qualquer coluna deixa um

conjunto de colunas que não é mais uma

Superchave mínima

Propriedade invariávelno tempo: permanecer verdadeira quando for inserido uma nova linha ou tupla

Toda chave é uma superchave, mas não o contrário Tabelas com mais de uma chave: cada uma das chaves é chamada de chave candidata

D

Chave primária: chave candidata designada para identificação de linhas em uma tabela, a partir dos valores das colunas envolvidas na referida chave

Campos que compõem a chave primária de uma tabela são normalmente obrigatórias (ao contrário dos demais) Convenção: nomes de colunas da chave são sublinhadas

Exemplo: indicação de como chave primária da tabela ALUNO

O valor de CPF 305.610.243 51 identifica exclusivamente a linha ou tupla correspondente à Bruno Baga na tabela

(9)

D

Exemplo: tabela

VEICULO

Duas chaves candidatas: Placae Numero_chassi

Não é admitido a existência de dois veículos com a mesma placa ou o mesmo número de chassi

Escolha de Placacomo chave primária

D

Exemplo: tabela

DEPENDENTE

Chave primária : constituída por mais de um campo ou atributo

Um dos campos que compõe a chave não é suficiente para distinguir uma linha ou tupla das demais

É possível a existência de dois ou mais dependentes com o

mesmo número de dependente, mas vinculados a

funcionários distintos(de códigos de funcionários distintos)

Determinado código de funcionário (campo Codigo_Func)

pode aparecer em diferentes linhas, assim como um

determinado número de dependente (Numero_Depen)

(10)

D

H

Coluna ou combinação de colunas, cujos valores

aparecem necessariamente na chave primária de uma tabela

Mecanismo que permite a implementação de relacionamentos em um banco de dados relacional Exemplo: Codigo_Deptcomo chave estrangeira em relação à chave primária da tabela DEPARTAMENTO

Interpretação: todo funcionário estará associado a um departamento

D

H

Imposição de uma série de restrições a serem

garantidas em diversos tipos de operações, quando realizadas em um banco de dados

Restrição relacionada à inclusão de uma linha na tabela que contém a chave estrangeira: garantia da existência do valor da chave estrangeira em alguma linha, na coluna da chave primária referenciada

Exemplo: é possível incluir um funcionário de nome João Paulo, lotado no departamento D5, na tabela

(11)

D

H

Restrição relacionada à alteração do valor da chave

estrangeira: garantia da existência do novo valor em alguma linha, na coluna da chave primária referenciada

Exemplo: é possível alterar o departamento de lotação do funcionária Antônio Soares, para indicar que ela está, a partir de então, vinculado a um departamento que atende pelo código D5?

D

H

Restrição relacionada à exclusão de uma linha da tabela que contém a chave primária referenciada pela chave estrangeira: garantia da não existência de nenhuma linha em que apareça, na coluna da chave estrangeira, o valor da chave primária especificado na linha a ser excluída

(12)

D

H

Uso do termo “estrangeira” para denominar este tipo de chave: possibilidade de ser enganoso

Sugestão de que uma chave estrangeira sempre referencia uma chave primária de outratabela

Restrição inexistente: uma chave primária pode referenciar a chave primária da própria tabela

Exemplo: campo Codigo_Chefecomo chave estrangeira em relação à chave primária da própria tabela FUNCIONARIO

Coluna Codigo_Chefe: código de um outro funcionário, o chefe do funcionário correspondente ao funcionário da linha em questão Intepretação: qualquer funcionário que responder a um chefe, este chefe é também um funcionário

D

Existência de mais de uma coluna ou combinações de colunas (chave) para distinção de uma linha das demais em uma tabela, em alguns casos

Seleção de uma coluna (ou combinação de colunas) como chave primária

Demais colunas ou combinações de colunas: denominadas chaves alternativas

Exemplo: uma segunda versão da tabela FUNCIONARIO

Tanto a coluna Codigo_Funcquanto a coluna CPFpodem ser usadas para distinguir uma linha das demais

(13)

I

H

&# G )*'* * *'* !: os dados de um banco de dados

íntegro refletem corretamente a realidade representada pelo banco de dados

Também denominadas de !# )JK ! A'! '*'! !B '!ou

!# )JK ! L+$M()#'!

Um dos objetivos primordiais de um SGBD

Geralmente especificadas através de uma linguagem de definição de dados (DDL)

!# )JN * )&# G )*'* : mecanismo oferecido pelos SGBDs

para tentar garantir a integridade de um banco de dados Regra de consistência de dados garantida pelo próprio SGBD Classificação de restrições de integridade

&# G )*'* * * M&)

&# G )*'* * /'$ /'9) O& $ &# G )*'* * (E'/

&# G )*'* % &()'$

Restrições garantidas automaticamente por um SGBD relacional

Sem necessidade de elaboração de procedimentos e rotinas específicas para garanti las explicitamente, quando do desenvolvimento de uma aplicação

I

H

&# G )*'* * * M&) : restrições deste tipo especificam que o valor de um campo deve obedecer a definição de valores admitidos para o campo (o domínio da coluna)

SGBD relacionais comerciais: uso apenas de domínios pré definidos (número inteiro, número real, alfanumérico de tamanho definido, data, entre outros)

Impossibilidade de uso de domínios próprios de aplicações de usuários (por exemplo, o domínio dos dias da semana ou das unidades da federação)

(14)

I

H

&# G )*'* * /'9) O& $ : definição do campo como

A )G'#P ) ou +() &'$

Possibilidade da admissão ( ) de valores vazios/nulos em linhas naquele coluna

Campos que compõe a chave primária são normalmente obrigatórios

Exemplo 01: é possível incluir um novo funcionário sem especificar seu código, sabendo se que o campo

Codigo_Funcé obrigatório?

I

H

Exemplo 02: é possível alterar a linha referente à funcionária

NAIARA SANTOS, de modo que seu código (campo

(15)

I

H

&# G )*'* * (E'/ : definição de que os valores de chaves primárias e alternativas devem ser únicos

Exemplo 01: é possível incluir um novo funcionário, de nome RENATO MAURÍCIO, com o mesmo código (campo Codigo_Func) da funcionária MARIA SOUZA?

I

H

Exemplo 02: é possível alterar a linha referente à ANTÔNIO SOARES, de modo que o código do funcionário (campo

Codigo_Func) seja o mesmo definido para a funcionária

(16)

I

H

&# G )*'* % &()'$: garantia da existência dos valores

dos campos que compõe uma chave estrangeira na chave primária de linhas da tabela referenciada (vide páginas 21, 22 e 23)

I

H

Existência de outras restrições de integridade não enquadradas em nenhuma das categorias

mencionadas anteriormente

Normalmente não são garantidas pelo SGBD

Denominações atribuídas a esses tipos de restrições:

!# )JK ! A'! '*'! &' '+$)('JN ou !# )JK ! ! Q&#)('!ou !# )JK ! * & GP() !

Implementação através da elaboração de procedimentos e rotinas específicas, quando do desenvolvimento de uma aplicação

Exemplo: atribuição apenas de códigos entre 1 e 100

(campo Codigo_Func) para funcionários, quando da

(17)

I

H

Tipos de operações de um modelo relacional

Recuperação

Atualização

( + 'JN

: uso de expressões da álgebra

relacional para

de informações em um

banco de dados

# '$)9'JN

: modificação do estado das tabelas

de um banco de dados

Operações básicas

Inserção: inserção de um ou mais linhas em uma tabela

Exclusão: exclusão de linhas ou tuplas

Alteração(ou modificação): alteração dos valores de alguns campos nas linhas ou tuplas existentes

Garantia de que as restrições de integridade

especificadas sobre o esquema de banco de dados relacional não devem ser violadas, quando da execução de qualquer operação

I

H

+ 'JN * )&! JN : fornecimento de uma relação de valores de campo para inserção de uma nova linha em uma tabela

Violação de qualquer um dos quatros tipos de restrições discutidos anteriormente

!# )JN * * M&) : violada, quando for atribuído um valor de campo que não é do tipo de dado apropriado designado para o domínio

!# )JN * /'9) O& $ : violada, quando for atribuído o valor vazio/nulo a um campo obrigatório

!# )JN * (E'/ : violada, quando for atribuído um valor de chave na nova linha que já exista em alguma outra linha na tabela

!# )JN % &()'$: violada, quando o valor de qualquer chave estrangeira na nova linha se referir a uma linha que não existe na tabela referenciada

Opção padrão, quando da violação de uma ou mais restrições: rejeição da inserção

Outra opção: correção do motivo da rejeição da inserção

(18)

I

H

+ 'JN * L($ !N : especificação de uma

condição sobre os campos ou atributos da tabela para identificação de linha(s) ou tupla(s) a ser(em) excluídas

Exemplo: exclusão de todas as linhas da tabela

FUNCIONARIOem que o código do funcionário (campo

Codigo_Func) é inferior a 3

Violação apenas da integridade referencial

Opções disponíveis, quando da violação de alguma restrição referencial por uma operação de exclusão

!# )(#: rejeição da exclusão (padrão)

'!('*

# & $$ou # * %' $#

SGDBs: possibilidade de especificação da opção a ser aplicada no caso de uma violação da restrição de integridade referencial, quando da definição da mesma no banco de dados

I

H

+JN * L($ !N '!('# > ('!('#'?: de propagação da exclusão

Exclusão da linha é acompanhada da exclusão prévia de outras linhas que referenciam a referida linha

Exemplo: exclusão em cascata da linha referente ao

departamento RHprovocaria a exclusão das linhas

relacionadas aos funcionários ANTÔNIOe MARIA, já que

(19)

I

H

+JN *

L($ !N

#

$$

#

%' $#

:

de modificação dos valores de campos

em outras linhas que referenciam a linha a ser

excluída

Valor a ser usado: vazio/nulo ou algum que referencie outra linha da tabela na qual ocorre a operação de exclusão

Impeditivos

Se o campo referenciado objeto da violação compõe uma ou mais chaves primárias de outras tabelas, não é possível o uso do valor vazio/nulo para modificação das linhas que referenciam a linha a ser excluída (possível incidência de violação de restrição de chave)

Aplica se o mesmo raciocínio se o campo objeto da violação for referenciado em campos obrigatórios (possível incidência de violação de restrição de vazio/nulo)

Se o valor a ser usado referencia uma linha inexistente na tabela na qual ocorre a operação de exclusão, o mesmo também não poderá ser usado (possível incidência de violação de restrição referencial)

I

H

Opção de Exclusão Set Null: exemplo

Exclusão da linha referente ao departamento RHprovocaria

a modificação das linhas relacionadas aos funcionários

ANTÔNIOe MARIA, com a atribuição do valor vazio/nulo ao

campo Codigo_Dept, já que ambas referenciam a linha

(20)

I

H

+ 'JN * '$# 'JN : alteração dos valores de um ou

mais campos ou atributos em uma linha (ou linhas) de alguma tabela

Especificação de condição sobre os campos ou atributos para identificação da linha ou linhas a serem modificadas

Exemplo: alteração do departamento de lotação para D3(campo

Codigo_Dept) em todas as linhas da tabela FUNCIONARIOnas quais o funcionário referenciado se encontra no departamento de código D2

Atualização de campos que não compõe a chave primária da tabela ou que estejam referenciados em chaves estrangeiras de outras tabelas: em geral não causa problemas

Tipos de violações: domínio e vazio/nulo

Atualização dos valores de campos que compõe a chave primária: semelhante à exclusão de uma linha seguida da inserção de outra em seu lugar, já que a chave primária é usada para identificação de linhas

Violações, da forma como discutidas para as operações de inserção e exclusão, se aplicam igualmente aqui

SGBDs: inclusão de opções semelhantes às discutidas para as operações de alteração, quando do tratamento de violações de

!# )(#: rejeição da exclusão (padrão) '!('*

# & $$ou # * %' $#

I

H

+JN * $# 'JN '!('# > ('!('#'?: de propagação da alteração

Alteração dos valores dos campos que compõe a chave primária é acompanhada da alteração dos mesmos valores em outras linhas que referenciam a referida linha

Exemplo: alteração em cascata do código (campo

Codigo_Dept) do departamento RH(de D2para D5) provocaria a alteração do mesmo código nas linhas

relacionadas aos funcionários ANTÔNIOe MARIA, já que

(21)

I

H

+JN * $# 'JN # $$ # %' $#: de

modificação dos valores de campos em outras linhas que referenciam a linha a ser alterada

Valor a ser usado: vazio/nulo ou algum que referencie outra linha da tabela na qual ocorre a operação de alteração

Impeditivos idênticos aos existentes em relação à operação de exclusão ou , conforme discutido anteriormente Exemplo: alteração Set null do código (campo Codigo_Dept) do departamento RH(de D2para D5) implicaria na alteração do valor do mesmo campo para NULLnas linhas relacionadas aos

funcionários ANTÔNIOe MARIA, já que ambas referenciam a linha referente ao departamento RH

Especificação de um banco de dados relacional com as seguintes definições, no mínimo

'A $'!

' + ! + ! &# ! ('*' #'A $' !# )JK ! * )&# G )*'*

Existência de diversas notações, com variantes de um SGBD para o outro

Exemplo: os tipos de domínios pré definidos variam de SGBD para SGBD

Notação textual (Heuser, 2009) Reconhecidamente incompleta

Uso de notação de esquema relacional para definição de tabelas e campos (vide pág. 9)

Definição de chaves estrangeiras de cada tabela após definição da mesma, da forma

-& (' + (E !# '&G ) '; % &()' -& #'A $';

quando tratar se de uma chave estrangeira composta de um único campo, ou na forma:

>-& (' + ;41-& (' + ;31R? % &()' -& #'A $';

(22)

Exemplo: notação textual para um banco de dados constituído pelas tabelas FUNCIONARIOe DEPENDENTE

Notação gráfica (Elmasri; Navathe, 2011):

Uso de notação de esquema relacional para definição de tabelas e campos (vide pág. 9)

Definição de chaves estrangeiras: representação de arcos direcionados de cada campo que compõe uma chave estrangeira para a tabela referenciada

Ponta da seta apontada o chave primária da tabela referenciada, para maior clareza

Exemplo: mesmo banco de dados constituído pelas tabelas

(23)

S

H

ELMASRI, Ramez; NAVATHE, Shamkant B. )!# '! * '&( * '* !. 6.ed. São Paulo: Person Addison Wesley, 2011.

Figure

Updating...

References

Updating...

Download now (23 página)