Qual è la differenza tra chiave primaria e chiave super in DBMS


20

Sono nuovo di DBMS e sto ancora imparando la teoria.

Mi sto davvero confondendo con questo business chiave e dopo aver cercato su Google l'ho ridotto a solo 2 chiavi che non ottengo (chiave primaria e super).

Ho alcune domande su DBMS. Le sarei grato se potessi rispondere per me.

1) Qual è la differenza tra chiave primaria e chiave super in DBMS? Lo apprezzo molto se puoi usare un esempio completo per spiegare correttamente

2) La chiave primaria e la chiave eccellente possono entrambe avere più colonne combinate per formare la chiave primaria e la chiave eccellente?

3) La chiave primaria è un sottoinsieme di Superkey o viceversa?


1
Una cosa che è molto lucida è che la tupla (riga) stessa è una superkey. Poiché l'intento è di essere in grado di identificare in modo univoco la riga, ovvero di essere in grado di identificare in modo univoco la tupla contenente una particolare combinazione di valori, un modo per farlo è quello di avere già tutti i valori disponibili. Quindi la tupla è una superkey per se stessa, poiché una volta che conosciamo i valori nella tupla, allora chiaramente sappiamo come trovare la tupla con quei valori. All'inizio sembra sciocco, ma stabilisce un limite superiore a quello che può essere un superkey per una tupla: la tupla stessa.
Dave,

@Dave L'insieme di tutti i nomi di colonna di una relazione / tabella (e quindi ciascuna delle sue tuple / righe) ne è una superkey. Non "la tupla (riga) stessa".
philipxy,

@philipxy hai ragione e ho sbagliato a parlare - sto corretto. Grazie per aver aggiunto il chiarimento.
Dave

Risposte:


23

Una Super Key è semplicemente una Candidate Key non minimale , vale a dire una con colonne aggiuntive non strettamente necessarie per garantire l'univocità della riga.

Una chiave primaria è una chiave candidata minima , vale a dire che tutte le colonne costituenti sono strettamente necessarie per garantire l'univocità.

Come sviluppatore / progettista di database con 30 anni di esperienza, non avevo mai sentito il termine Super Key fino a quando non ho visto questa domanda e ho cercato. Il concetto di Super Key sembra più pertinente all'argomento delle prestazioni e della progettazione dello schema fisico poiché si associa direttamente al concetto di un indice non cluster unico con colonne aggiuntive per una migliore copertura delle query.


3
Questo è abbastanza impreciso. Stai usando superkey, CK e PK al posto di superkey, superkey e CK corretti. Un superkey è un set UNICO. (Un CK è un superkey "minimal". Non esiste alcuna nozione di "minimal CK". Ogni CK è un superkey. Quindi un superkey non deve avere più colonne di un CK. Un PK è un CK che si chiama PK. Se dovesse essere un "CK minimo", allora "minimo" dovrebbe significare "arbitrario".) SQL PK e UNIQUE NOT NULL dichiarano le superkey. (Un PK SQL potrebbe essere o meno un PK.) I superkey sono fondamentali per la definizione di CK, che è fondamentale per la progettazione, compresa la normalizzazione. Vedi la mia risposta
Philipxy,

1
Inoltre, è necessaria la comprensione di SK per utilizzare Boyce-Codd NF
Tanckom il

16

Tasti super: il tasto super rappresenta il superset di un tasto. Una super chiave è un insieme di uno o più attributi che sono presi collettivamente e possono identificare tutti gli altri attributi in modo univoco.

Ad esempio, stiamo avendo tabella

Book (BookId, BookName, Author)

Quindi in questa tabella possiamo avere

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Come la nostra chiave super. Ogni super chiave è in grado di identificare in modo univoco ogni tupla (record).

Chiavi candidate Le chiavi candidate sono una super chiave che non ha attributi ridondanti. In altre parole, le chiavi candidate sono super chiavi minime. Ad esempio, nell'illustrazione sopra

   (BookId)
   (BookName,Author)

Queste due chiavi possono essere chiavi candidate, poiché le chiavi rimanenti hanno attributi ridondanti. I mezzi nel record superkey (BookId, BookName) possono essere identificati in modo univoco solo da bookid e quindi Bookname è attributo ridondante

Chiave primaria: è una chiave candidata scelta dal progettista del database per identificare le entità in un set di entità. OPPURE Una chiave utilizzata per identificare in modo univoco ogni record è nota come chiave primaria.

Dall'alto Chiavi candidate qualsiasi può essere la chiave primaria. E l'altro che non è scelto come chiave primaria sarà conosciuto come chiave alternativa


Questo risponde alla domanda e merita una votazione.
aprile

Si noti inoltre che un altro nome per alternative keyè secondary keylo stesso. Bella risposta!
Wael Alshabani,

2

Da questa mia risposta stackoverflow.com :

Una chiave candidata è un insieme di colonne che identifica in modo univoco le righe e che non contiene alcun sottoinsieme ("corretto") di colonne che identifica in modo univoco le righe.

Un superkey è un insieme di colonne che identifica in modo univoco le righe. Quindi una chiave candidata è una superkey che non contiene superkey più piccole.

In SQL non è possibile dichiarare una chiave candidata vuota. Inoltre, UNIQUE NOT NULL e PRIMARY KEY (che in termini di vincoli significa solo UNIQUE NOT NULL) dichiarano superkey, non chiavi di per sé. Se il set di colonne di tale dichiarazione non contiene un set di colonne più piccolo dichiarato come superkey, il superkey che sta dichiarando è una chiave candidata.

Da questa mia risposta stackoverflow.com sono una tabella data:

Per i set di colonne X e Y possiamo scrivere X -> Y . Diciamo che X è l' insieme determinante e Y è l' insieme determinato di / in dipendenza funzionale ( FD ) X -> Y.

Diciamo che X determina funzionalmente Y e Y è funzionalmente determinato da X. Diciamo che X è il determinante di X -> Y. In {C} -> Y diciamo che C determina funzionalmente Y. In X -> {C} diciamo X determina funzionalmente C. Quando X è un superset di Y diciamo che X -> Y è banale .

Diciamo X -> Y vale nella tabella T quando ogni sottotitolo di valori per X appare sempre / solo con lo stesso sottotitolo di valori per Y. Oppure diciamo X -> Y è un FD di / in T. Quando X è un determinante di alcuni FD nella tabella T diciamo che X è un determinante di / in T.

Un superkey di una tabella T è un insieme di colonne che determina funzionalmente ogni attributo. Una chiave candidata ( CK ) è una superkey che non contiene superkey più piccole. Possiamo scegliere un CK come chiave primaria ( PK ) e quindi chiamare gli altri tasti alternativi CK . Una colonna è primaria quando è in alcuni CK.

(Come ho commentato lì, "Le quattro frasi in grassetto per FD, prese, superkey e CK sarebbero state sufficienti.")

(Una tabella con un CK vuoto è vincolata a contenere al massimo una riga. Un set di colonne determinato dal set vuoto è vincolato per avere lo stesso valore di sottotitolo in ogni riga.)


1

Chiave Una chiave è una singola o combinazione di più campi. Il suo scopo è di accedere o recuperare le righe di dati dalla tabella in base al requisito. Le chiavi sono definite nelle tabelle per accedere o sequenziare i dati memorizzati in modo rapido e fluido. Sono anche usati per creare collegamenti tra diverse tabelle.

Tipi di chiavi Le seguenti tabelle o relazioni verranno utilizzate per definire diversi tipi di chiavi.

Chiave primaria L'attributo o la combinazione di attributi che identifica in modo univoco una riga o un record in una relazione è noto come chiave primaria.

Chiave secondaria Un campo o una combinazione di campi che è la base per il recupero è noto come chiave secondaria. La chiave secondaria è un campo non univoco. Un valore chiave secondario può fare riferimento a molti record.

Chiave candidata o Chiave alternativa Una relazione può avere una sola chiave primaria. Può contenere molti campi o combinazioni di campi che possono essere utilizzati come chiave primaria. Un campo o una combinazione di campi viene utilizzato come chiave primaria. I campi o la combinazione di campi non utilizzati come chiave primaria sono noti come chiave candidata o chiave alternativa.

Chiave composita o chiave concatenata Una chiave primaria costituita da due o più attributi è nota come chiave composita.

Tasto di ordinamento o controllo Un campo o una combinazione di campi che viene utilizzato per sequenziare fisicamente i dati memorizzati chiamati tasto di ordinamento. È anche noto come tasto di controllo.

Una superkey è una combinazione di attributi che può essere utilizzata in modo univoco per identificare un record del database. Una tabella potrebbe avere molte superkey. Le chiavi candidate sono un sottoinsieme speciale di superkey che non contengono alcuna informazione estranea.

Esempio di super chiave: immagina una tabella con i campi Nome, Età, SSN e <Estensione telefono>. Questa tabella ha molte possibili superkey. Tre di questi sono SSN, estensione telefono e nome. Di quelli elencati, solo SSN è una chiave candidata, poiché gli altri contengono informazioni non necessarie per identificare in modo univoco i record.

Chiave esterna Una chiave esterna è un attributo o una combinazione di attributi in una relazione il cui valore corrisponde a una chiave primaria in un'altra relazione. La tabella in cui viene creata la chiave esterna viene definita tabella dipendente. La tabella a cui si riferisce la chiave esterna è nota come tabella principale.

per Minimal Super key fai riferimento a questo link è più chiaro lì http://www.answers.com/topic/superkey-1

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.