¿Qué significa esta definición de una clave primaria?


8

Mi libro de texto ofrece la siguiente definición de una clave primaria en una base de datos relacional, que no entiendo completamente. La ayuda sería muy apreciada.

Deje ser una relación. Entonces, la clave principal para es un subconjunto del conjunto de atributos de , digamos , que satisface las siguientes dos propiedades:RRRK

  1. Singularidad de la propiedad: No hay dos tuplas distintas de tiene el mismo valor para .RK

  2. Propiedad de irreductibilidad: Ningún subconjunto adecuado de tiene la propiedad de unicidad.K

Me estoy perdiendo por la propiedad Irreducibilidad.


Cuidado: 1) más de un subconjunto de columnas puede satisfacer esas propiedades, por lo que eventualmente, la clave primaria es lo que la persona que define las claves primarias elige que sea; 2) en la práctica, los DBMS que admiten claves primarias aplican la propiedad 1, pero no la propiedad 2 (aunque no he verificado esto en muchos casos).
reinierpost

2
Nota: si el libro dice " la clave principal", entonces es engañoso. Es posible y no es raro que existan múltiples conjuntos de columnas diferentes que podrían tomarse como PK.
AnoE

Respuestas:


7

Considere la siguiente tabla:

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

Una clave es cualquier conjunto de atributos: cualquier subconjunto de {FirstName, LastName, Pet, FavColour}. La propiedad de unicidad dice que no hay dos registros que puedan tener los mismos valores para los atributos en una clave. Entonces, por ejemplo, {FavColour} es una clave que tiene la propiedad de unicidad: no hay dos registros que tengan el mismo valor. {Nombre, Apellido} también es único: no hay dos registros que tengan el mismo nombre y apellido. {Pet}, por otro lado, no es único, ya que los registros primero y segundo tienen el mismo valor para ese atributo.

Ahora, {FirstName, LastName, Pet, FavColour} también es una clave única: no hay dos registros que tengan el mismo valor para todos los atributos. Pero esa es una especie de llave tonta, ¿verdad? La irreductibilidad dice que, si elimina cualquiera de los atributos de su clave, deja de ser único. Por lo tanto, {Nombre, Apellido, Mascota, FavColour} no es irreducible porque, si elimina FavColour, obtiene la clave {Nombre, Apellido, Mascota}, que todavía tiene unicidad. Y eso no es irreducible porque puedes tirar Pet y obtener {FirstName, LastName}, que aún es único. Sin embargo, {Nombre, Apellido} es irreducible porque ni {Nombre} ni {Apellido} son únicos: hay dos personas con el mismo nombre y dos personas con el mismo apellido.


tl; dr: el conjunto de columnas más pequeño que puede identificar de forma única un registro
DForck42

1
@ DForck42 No, un conjunto de columnas más pequeño que puede identificar de forma única cada registro.
David Richerby

La pregunta está redactada en términos de bases de datos, que entendería que significan esquema, no una sola instancia de relación. Las claves de un esquema de relación no se pueden determinar examinando datos de muestra. Los datos de muestra pueden indicarnos conjuntos de atributos que NO son claves (por ejemplo, {Pet} no es una clave en este caso), pero las dependencias funcionales son la única base sólida para determinar las claves reales.
nvogel

14

Tenga en cuenta cómo KPuede ser un conjunto de columnas. La irreductibilidad significa que debe elegir conjuntos mínimos de columnas.

Nota bene: Deben requerirK.

Por ejemplo, considere esta relación.

A   B   C

1   4   4
2   4   6
3   6   6

Investiguemos todas las claves posibles.

  1. A - Único e irreducible.
  2. B -- no es único.
  3. C -- no es único.
  4. A,B- reducible a A.
  5. A,C- reducible a A.
  6. B,C - Único e irreducible.
  7. A,B,C- reducible a A.

Por lo tanto, hay dos opciones para las claves primare aquí: Ay B,C.


55
Re: "Deberían requerir K": Eso no me parece necesario. Si la relación está vacía o contiene solo una tupla, entonces podría decirse que es la clave principal; y si la relación contiene más de una tupla, entoncesno satisface la propiedad de unicidad.
ruakh

@ruakh Punto tomado.
Raphael

1

La irreductibilidad simplemente se refiere a un conjunto mínimo de atributos que no podemos seguir a continuación sin perder la unicidad. Por ejemplo, en una tabla de personas, podemos encontrar que (Apellido, Nombre) son únicos, mientras que (Apellido) y (Nombre) no lo son.

Una vez que tenemos la unicidad, podemos seguir agregando atributos sin perderla, por lo que la irreductibilidad resuelve ese problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.