Sto usando il database mysql. Ho una confusione tra chiave primaria e chiave univoca.
Aiutatemi dove devo creare la chiave primaria e unica. Voglio dire in quale situazione creiamo chiave unica o chiave primaria.
Sto usando il database mysql. Ho una confusione tra chiave primaria e chiave univoca.
Aiutatemi dove devo creare la chiave primaria e unica. Voglio dire in quale situazione creiamo chiave unica o chiave primaria.
Risposte:
Chiave primaria:
NULL
, ad esempio MySQL aggiungeNOT NULL
Chiave unica:
NULL
valoriNULL
; più righe possono avere NULL
valori e pertanto non possono essere considerate "uniche"Chiave unica (Regno Unito) : è una colonna o un gruppo di colonne che può identificare un'unicità in una riga.
Chiave primaria (PK) : è anche una colonna o un gruppo di colonne che può identificare un'unicità in una riga.
Quindi la chiave primaria è solo un altro nome per chiave unica, ma l'implementazione predefinita in SQL Server è diversa per chiave primaria e unica.
Di default:
Dipende davvero qual è il tuo obiettivo quando decidi se creare un Regno Unito o un PK. Segue un'analogia come "Se c'è una squadra di tre persone, quindi tutti sono pari, ma ci sarà uno di loro che sarà una coppia di pari: PK e UK hanno una relazione simile". Suggerirei di leggere questo articolo: L'esempio fornito dall'autore potrebbe non sembrare adatto, ma cerca di avere un'idea generale.
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
) viene aggiunta alla tabella (ho sentito che si parla di chiave surrogata). Fonte: postgresqltutorial.com/postgresql-primary-key Sono nuovo in tutto questo, quindi apprezzerei un poster più informato per sottolineare le sfumature che mi sono perso.
Per un'organizzazione o un'azienda, ci sono così tante entità fisiche (come persone, risorse, macchine, ecc.) Ed entità virtuali (i loro compiti, transazioni, attività). In genere, le aziende devono registrare ed elaborare le informazioni di tali entità aziendali. Queste entità aziendali sono identificate in un intero dominio aziendale da una chiave.
Secondo la prospettiva RDBMS, Key (aka Candidate Key) è un valore o un insieme di valori che identifica in modo univoco un'entità.
Per una DB-Table, esistono così tante chiavi che potrebbero essere idonee per la chiave primaria. In modo che tutte le chiavi, la chiave primaria, la chiave univoca, ecc. Siano chiamate collettivamente come Candidate Key. Tuttavia, DBA ha selezionato una chiave dalla chiave candidata per la ricerca dei record è chiamata chiave primaria.
Differenza tra chiave primaria e chiave unica
1. Comportamento: la chiave primaria viene utilizzata per identificare una riga (record) in una tabella, mentre la chiave univoca serve a prevenire valori duplicati in una colonna (ad eccezione di una voce nulla).
2. Indicizzazione: per impostazione predefinita, il motore SQL crea l'indice cluster sulla chiave primaria se non esiste e l'indice non cluster sulla chiave univoca.
3. Nullability: la chiave primaria non include i valori Null, mentre la chiave unica può.
4. Esistenza: una tabella può avere al massimo una chiave primaria, ma può avere più chiavi univoche.
5. Modificabilità: non è possibile modificare o eliminare i valori primari, ma i valori con chiave univoca possono.
Per ulteriori informazioni ed esempi:
Una chiave primaria deve essere unica.
Una chiave univoca non deve essere la chiave primaria - vedi chiave candidata .
Cioè, ci può essere più di una combinazione di colonne su una tabella che può identificare in modo univoco una riga - solo una di queste può essere selezionata come chiave primaria. Gli altri, sebbene unici, sono chiavi candidate.
Differenza tra chiave primaria e chiave univoca
+-----------------------------------------+-----------------------------------------------+ | Primary Key | Unique Key | +-----------------------------------------+-----------------------------------------------+ | Primary Key can't accept null values. | Unique key can accept only one null value. | +-----------------------------------------+-----------------------------------------------+ | By default, Primary key is clustered | By default, Unique key is a unique | | index and data in the database table is | non-clustered index. | | physically organized in the sequence of | | | clustered index. | | +-----------------------------------------+-----------------------------------------------+ | We can have only one Primary key in a | We can have more than one unique key in a | | table. | table. | +-----------------------------------------+-----------------------------------------------+ | Primary key can be made foreign key | In SQL Server, Unique key can be made foreign | | into another table. | key into another table. | +-----------------------------------------+-----------------------------------------------+
Puoi trovare informazioni dettagliate da: http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-b Between-Primary-Key-and-Unique-
Key.html
Una chiave primaria ha la semantica di identificare la riga di un database. Pertanto, può esistere una sola chiave primaria per una determinata tabella, mentre possono esserci molte chiavi univoche.
Inoltre, per lo stesso motivo, una chiave primaria non può essere NULL (almeno in Oracle, non sicuro di altri database)
Dal momento che identifica la riga non dovrebbe mai cambiare. La modifica delle chiavi primarie è destinata a causare gravi dolori e probabilmente dannazione eterna.
Pertanto, nella maggior parte dei casi, si desidera un ID artificiale per la chiave primaria che non viene utilizzato per l'identificazione di singole righe nella tabella.
Le chiavi univoche d'altra parte possono cambiare quanto vuoi.
Una chiave primaria è una chiave univoca.
Ogni tabella deve avere al massimo UNA chiave primaria ma può avere più chiavi univoche. Una chiave primaria viene utilizzata per identificare in modo univoco una riga della tabella. Una chiave primaria non può essere NULL
poiché NULL
non è un valore.
So che questa domanda ha diversi anni, ma mi piacerebbe fornire una risposta a questo spiegando perché piuttosto che come
Scopo della chiave primaria : identificare una riga in un database in modo univoco => Una riga rappresenta una singola istanza del tipo di entità modellata dalla tabella. Una chiave primaria impone l'integrità di un'entità, AKA Entity Integrity. La chiave primaria sarebbe un indice cluster, ovvero definisce l'ordine in cui i dati vengono archiviati fisicamente in una tabella.
Scopo della chiave univoca: ok, con la chiave primaria abbiamo un modo per identificare in modo univoco una riga. Ma ho un'esigenza aziendale tale che un'altra colonna / un insieme di colonne dovrebbe avere valori univoci. Bene, tecnicamente, dato che questa colonna è unica, può essere un candidato per far rispettare l'integrità dell'entità. Ma per quanto ne sappiamo, questa colonna può contenere dati provenienti da un'organizzazione esterna di cui potrei avere dei dubbi sull'essere univoco. Potrei non fidarmi di esso per fornire l'integrità dell'entità. L'ho solo reso una chiave unica per soddisfare le mie esigenze aziendali.
Ecco qua!
Se la progettazione del tuo database è tale che non è necessaria una chiave esterna, puoi scegliere la chiave univoca ( ma ricorda che la chiave univoca consente un valore null singolo ).
Se il database richiede una chiave esterna, si esce senza possibilità di scelta con la chiave primaria.
Per vedere la differenza tra chiave univoca e chiave visita qui
Chiave univoca: - Dovrebbe essere usata quando devi dare un valore univoco. Nel caso di una chiave univoca significa che sono ammessi anche valori null. Le chiavi uniche sono quelle chiavi che sono uniche e non simili in quella colonna come ad esempio il nome del tuo animale domestico .it può essere niente come null e se lo si sta chiedendo nel contesto del database, si deve notare che ogni null è diverso da un altro null nel database. EXCEPT-SQL Server dove null = null è true
chiave primaria: - Dovrebbe essere usata quando devi dare univocamente identificare una riga.primary è la chiave che univoca per ogni riga in un vincolo di database è che non consente null in it.so, potresti aver visto che il database avere una colonna che è autoincremento ed è la chiave primaria della tabella. inoltre può essere utilizzato come chiave esterna in un'altra tabella. l'esempio può essere orderId in una tabella ordini , billId in una tabella fatture .
ora tornando alla situazione quando usarlo: -
1) chiave primaria nella colonna che non può essere nulla nella tabella e che stai usando come chiave esterna in un'altra tabella per creare una relazione
2) chiave univoca nella tabella in cui non influisce sulla tabella o nell'intero database se si prende il valore nullo per la colonna specifica come snack nel ristorante, è possibile che non si facciano spuntini in un ristorante
differenza tra chiave primaria e chiave univoca
Entrambi Primary key
e Unique Key
vengono utilizzati per definire in modo univoco una riga in una tabella.
Primary Key
crea una clustered index
colonna mentre a Unique creates an unclustered index of the column
.
A Primary Key
non consente NULL value
, tuttavia a Unique Key
consente one NULL value
.
Semplicemente la chiave primaria è univoca e non può essere nulla, unica può essere nulla e potrebbe non essere unica.
may not be unique
significa qui?
Lo scopo principale della chiave primaria è fornire un mezzo per identificare ciascun record nella tabella.
La chiave primaria fornisce un mezzo per identificare la riga, usando i dati all'interno della riga. Una chiave primaria può essere basata su una o più colonne, come nome e cognome; tuttavia, in molti progetti, la chiave primaria è un numero generato automaticamente da una colonna identità.
Una chiave primaria ha le seguenti caratteristiche:
Una chiave univoca viene anche chiamata vincolo univoco. È possibile utilizzare un vincolo univoco per garantire che le righe siano univoche all'interno del database.
Non lo facciamo già con la chiave primaria? Sì, lo facciamo, ma una tabella può avere diversi insiemi di colonne che desideri univoche.
In SQL Server la chiave univoca ha le seguenti caratteristiche:
fonte: qui
Le caratteristiche principali di una chiave primaria sono:
Deve contenere un valore univoco per ogni riga di dati. Non può contenere valori null. Solo una chiave primaria in una tabella.
Le caratteristiche principali di una chiave unica sono:
Può anche contenere un valore univoco per ogni riga di dati.
Può contenere anche valori null.
Più chiavi univoche in una tabella.
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT