Apa definisi kunci primer ini?

8

Buku teks saya memberikan definisi kunci primer berikut dalam basis data relasional, yang saya tidak sepenuhnya mengerti. Bantuan akan sangat dihargai.

Biarkan menjadi relasi. Kemudian kunci utama untuk adalah himpunan bagian dari set atribut , katakan , memenuhi dua sifat berikut:RRRK

  1. Keunikan Properti: Tidak ada dua tupel yang berbeda dari memiliki nilai yang sama untuk .RK

  2. Properti yang Tidak Dapat Ditarik: Tidak ada subset tepat yang memiliki properti keunikan.K

Saya tersesat oleh properti Irreducibility.

FutureSci
sumber
Hati-hati: 1) lebih dari satu subset kolom dapat memenuhi sifat-sifat tersebut, jadi pada akhirnya, kunci primer adalah apa yang dipilih oleh orang yang mendefinisikan kunci primer; 2) dalam prakteknya, DBMSes yang mendukung kunci primer memberlakukan properti 1, tetapi bukan properti 2 (meskipun saya belum memeriksa ini banyak).
reinierpost
2
Catatan: jika buku itu mengatakan " the primary key" maka itu menyesatkan. Adalah mungkin dan tidak jarang untuk beberapa set kolom yang berbeda yang ada yang dapat diambil sebagai PK.
AnoE

Jawaban:

7

Pertimbangkan tabel berikut:

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

Kunci adalah serangkaian atribut apa pun: subset apa pun dari {FirstName, LastName, Pet, FavColour}. Properti keunikan mengatakan bahwa tidak ada dua catatan yang dapat memiliki nilai yang sama untuk atribut dalam kunci. Jadi, misalnya, {FavColour} adalah kunci yang memiliki properti keunikan: tidak ada dua catatan yang memiliki nilai yang sama untuk itu. {Firstname, Lastname} juga unik: tidak ada dua catatan yang memiliki nama depan dan belakang yang sama. {Pet}, di sisi lain, tidak unik, karena catatan pertama dan kedua memiliki nilai yang sama untuk atribut itu.

Sekarang, {FirstName, LastName, Pet, FavColour} juga merupakan kunci unik: tidak ada dua catatan yang memiliki nilai yang sama untuk semua atribut. Tapi itu semacam kunci konyol, kan? Irreducibility mengatakan bahwa, jika Anda menghapus salah satu atribut dari kunci Anda, itu berhenti menjadi unik. Jadi {Firstname, LastName, Pet, FavColour} tidak dapat direduksi karena, jika Anda menghapus FavColour, Anda mendapatkan kunci {FirstName, LastName, Pet}, yang masih memiliki keunikan. Dan itu tidak dapat direduksi karena Anda dapat membuang Pet dan mendapatkan {FirstName, LastName}, yang masih unik. Namun, {FirstName, LastName} tidak dapat direduksi karena {FirstName} maupun {LastName} tidak unik: ada dua orang dengan nama depan yang sama dan dua orang dengan nama belakang yang sama.

David Richerby
sumber
tl; dr: kumpulan kolom terkecil yang dapat secara unik mengidentifikasi catatan
DForck42
1
@ DForck42 ada, satu set terkecil dari kolom yang secara unik dapat mengidentifikasi setiap record.
David Richerby
Pertanyaannya dirangkum dalam hal basis data, yang saya pahami artinya skema, bukan contoh hubungan tunggal. Kunci skema hubungan tidak dapat ditentukan dengan memeriksa data sampel. Data sampel dapat memberi tahu kami set atribut yang bukan kunci (misalnya {Pet} bukan kunci dalam hal ini), tetapi dependensi fungsional adalah satu-satunya dasar yang kuat untuk menentukan kunci yang sebenarnya.
nvogel
14

Perhatikan bagaimana dapat menjadi kumpulan kolom. Irreducibility artinya Anda harus memilih kumpulan kolom minimal .K

Catatan: Mereka harus meminta .K

Sebagai contoh, pertimbangkan hubungan ini.

A   B   C

1   4   4
2   4   6
3   6   6

Mari kita selidiki semua kunci yang mungkin.

  1. A - unik dan tidak dapat direduksi.
  2. B -- tidak unik.
  3. C -- tidak unik.
  4. A,B- dapat direduksi menjadi A.
  5. A,C- dapat direduksi menjadi A.
  6. B,C - unik dan tidak dapat direduksi.
  7. A,B,C- dapat direduksi menjadi A.

Oleh karena itu, ada dua pilihan untuk kunci primare di sini: Adan B,C.

Raphael
sumber
5
Re: "Mereka harus meminta ": Itu sepertinya tidak perlu bagi saya. Jika relasi kosong atau hanya berisi satu tuple, maka bisa dibilang adalah kunci utama; dan jika relasinya berisi lebih dari satu tuple, maka tidak memenuhi properti keunikan. K
ruakh
@ruakh Point diambil.
Raphael
1

Irreducibility hanya mengacu pada sekumpulan atribut minimum yang tidak bisa kita masuki tanpa kehilangan keunikan. Misalnya, dalam tabel orang, kita mungkin menemukan (Nama Belakang, Nama Depan) unik sedangkan (Nama Belakang) dan (Nama Depan) tidak.

Setelah kami memiliki keunikan, kami dapat terus menambahkan atribut tanpa kehilangannya, jadi alamat dapat mengatasi masalah tersebut.

KWillets
sumber