O que essa definição de chave primária significa?


8

Meu livro de texto fornece a seguinte definição de chave primária em um banco de dados relacional, que eu não entendo completamente. A ajuda seria muito apreciada.

Seja uma relação. Então a chave primária para é um subconjunto do conjunto de atributos de , digamos , satisfazendo as duas propriedades a seguir:RRRK

  1. Singularidade de propriedade: Não há duas tuplas distintas de tem o mesmo valor para .RK

  2. Propriedade de irredutibilidade: Nenhum subconjunto adequado de possui a propriedade de exclusividade.K

Estou me perdendo com a propriedade Irredutibilidade.


Cuidado: 1) mais de um subconjunto de colunas pode satisfazer essas propriedades; portanto, a chave primária é o que a pessoa que define as chaves primárias escolhe; 2) na prática, os DBMSs que suportam chaves primárias impõem a propriedade 1, mas não a propriedade 2 (embora eu não tenha verificado isso por muitos).
Reinierpost

2
Nota: se o livro diz " a chave primária", é enganoso. É possível e não incomum para vários conjuntos diferentes de colunas existentes que podem ser considerados como PK.
AnoE

Respostas:


7

Considere a seguinte tabela:

FirstName  LastName  Pet  FavColour
-----------------------------------
Alice      Jones     dog  red
Alice      Smith     dog  green
Bob        Smith     cat  blue

Uma chave é qualquer conjunto de atributos: qualquer subconjunto de {Nome, Sobrenome, Animal de estimação, FavColour}. A propriedade exclusividade diz que nenhum dois registros podem ter os mesmos valores para os atributos em uma chave. Assim, por exemplo, {FavColour} é uma chave que possui a propriedade de exclusividade: não existem dois registros com o mesmo valor. {Nome, Sobrenome} também é exclusivo: não há dois registros com o mesmo nome e sobrenome. {Pet}, por outro lado, não é exclusivo, pois o primeiro e o segundo registros têm o mesmo valor para esse atributo.

Agora, {FirstName, LastName, Pet, FavColour} também é uma chave exclusiva: não há dois registros com o mesmo valor para todos os atributos. Mas isso é uma chave boba, certo? A irredutibilidade diz que, se você remover qualquer um dos atributos da sua chave, ela deixará de ser exclusiva. Portanto, {FirstName, LastName, Pet, FavColour} não é irredutível porque, se você remover o FavColour, obtém a chave {FirstName, LastName, Pet}, que ainda possui exclusividade. E isso não é irredutível, porque você pode jogar fora o Pet e obter {FirstName, LastName}, que ainda é único. No entanto, {FirstName, LastName} é irredutível porque nem {FirstName} nem {LastName} são exclusivos: existem duas pessoas com o mesmo nome e duas pessoas com o mesmo sobrenome.


tl; dr: o menor conjunto de colunas que podem identificar exclusivamente um registro
DForck42

1
@ DForck42 Não, um menor conjunto de colunas que podem identificar exclusivamente cada registro.
David Richerby

A pergunta é formulada em termos de bancos de dados, que eu entenderia como esquema, não uma instância de relação única. As chaves de um esquema de relação não podem ser determinadas examinando dados de amostra. Os dados de amostra podem nos dizer conjuntos de atributos que não são chaves (por exemplo, {Pet} não é uma chave nesse caso), mas as dependências funcionais são a única base sólida para determinar as chaves reais.
Nvogel # 04/16

14

Observe como pode ser um conjunto de colunas. Irredutibilidade significa que você precisa escolher conjuntos mínimos de colunas.K

Nota bene: Eles devem exigir .K

Por exemplo, considere essa relação.

A   B   C

1   4   4
2   4   6
3   6   6

Vamos investigar todas as chaves possíveis.

  1. A - único e irredutível.
  2. B -- não Único.
  3. C -- não Único.
  4. A,B- redutível a A.
  5. A,C- redutível a A.
  6. B,C - único e irredutível.
  7. A,B,C- redutível a A.

Portanto, existem duas opções para chaves primárias aqui: Ae B,C.


5
Re: "Eles devem exigir ": Isso não parece necessário para mim. Se a relação é vazio ou contém apenas um tuplo, então indiscutivelmente é a chave primária; e se a relação contiver mais de uma tupla, então não satisfaz a propriedade de exclusividade. K
ruakh 16/09/16

@ruakh Ponto tomado.
Raphael

1

Irredutibilidade simplesmente se refere a um conjunto mínimo de atributos que não podemos seguir abaixo sem perder a exclusividade. Por exemplo, em uma tabela de pessoas, podemos encontrar (Sobrenome, Nome) são únicos, enquanto (Sobrenome) e (Nome) não são.

Uma vez que tenhamos exclusividade, podemos continuar adicionando atributos sem perdê-la, para que a irredutibilidade resolva esse problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.