różnica między kluczem podstawowym a kluczem unikatowym

252

Korzystam z bazy danych mysql. Mam pomyłkę między kluczem podstawowym a kluczem unikatowym.

Pomóż mi, gdzie powinienem utworzyć klucz podstawowy i unikalny. Mam na myśli, w której sytuacji tworzymy unikalny klucz lub klucz podstawowy.

Anuj
źródło
9
wrt null-zdolność dobrym sposobem na rozróżnienie PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
czarno

Odpowiedzi:

233

Klucz podstawowy:

  • W tabeli może znajdować się tylko jeden klucz podstawowy
  • W niektórych DBMS tak nie jest NULL- np. MySQL dodajeNOT NULL
  • Klucz podstawowy to unikalny identyfikator klucza rekordu

Unikalny klucz:

  • Może być więcej niż jednym unikalnym kluczem w jednej tabeli
  • Unikalny klucz może mieć NULLwartości
  • Może to być klucz kandydujący
  • Unikalny klucz może być NULL; wiele wierszy może mieć NULLwartości i dlatego nie może być uważane za „unikalne”
Pan KB
źródło
11
Chcesz również dodać, że ten klucz podstawowy można utworzyć w wielu kolumnach, np. Klucz podstawowy (CustomerID, ProductID). Nazywa się to złożonym kluczem podstawowym. Ma to na celu wyjaśnienie pierwszego punktu, ponieważ może to zająć takie, jakie jest (czytaj jeden klucz => jedna kolumna) przez nowego przybysza do sql:)
Ken 10'14
1
Co masz na myśli mówiąc „może być kluczem kandydującym”?
1
„dozwolony jest tylko pojedynczy null” - to nie jest prawda, przynajmniej nie dla MySQL.
Jānis Elmeris
69
Unikalny klucz może być pusty i może nie być unikalny. Oznacza ?
Pratik
20
@PratikCJoshi Prawdopodobnie oznacza, że ​​może to być wiele wierszy o wartości NULL na unikatowym kluczu.
John
77

Unikalny klucz (Wielka Brytania) : jest to kolumna lub grupa kolumn, które mogą zidentyfikować niepowtarzalność z rzędu.

Primary Key (PK) : To też kolumna lub grupa kolumn, które mogą zidentyfikować unikalność w wierszu.

Tak więc klucz podstawowy to po prostu inna nazwa klucza unikalnego, ale domyślna implementacja w SQL Server jest inna dla klucza podstawowego i unikalnego.

Domyślnie:

  1. PK tworzy indeks klastrowany, a Wielka Brytania tworzy indeks klastrowany.
  2. Wartość PK nie jest równa null, ale Wielka Brytania zezwala na wartości null (Uwaga: domyślnie)
  3. Na stole może znajdować się tylko jedna PK, ale może być wiele brytyjskich
  4. Możesz zastąpić domyślną implementację w zależności od potrzeb.

To naprawdę zależy od tego, jaki jest twój cel przy podejmowaniu decyzji o utworzeniu Wielkiej Brytanii czy PK. Wynika to z analogii: „Jeśli jest zespół trzech osób, więc wszyscy są rówieśnikami, ale będzie jeden z nich, który będzie parą rówieśników: PK i UK mają podobny związek”. Sugerowałbym przeczytanie tego artykułu: Przykład podany przez autora może nie wydawać się odpowiedni, ale spróbuj uzyskać ogólny pomysł.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html

dhi
źródło
przeczytaj około 10 stron internetowych, które mówią, że PK może zawierać więcej niż jedną kolumnę. Więc jak może być jeden i tylko jeden PK na stole?
@android PK z więcej niż jedną kolumną działa jak pojedyncza kolumna ze względu na wyjątkowość. Przynajmniej w PostgreSQL oznacza to, że nowa [table_name]_pkeytabela ( z domyślną nazwą ) jest dodawana do tabeli (słyszałem, że jest to nazywane kluczem zastępczym). Źródło: postgresqltutorial.com/postgresql-primary-key Jestem nowy w tym wszystkim, więc doceniłbym bardziej kompetentny plakat, aby wskazać niuanse, które przegapiłem.
Poik
Okej, to nie jest kolumna. Źle przeczytałem. To jest przeciwwaga, a nie kolumna. Nadal istnieje indeks klastrowy, ale ma on ponad dwie kolumny zamiast jednej. I każda kolumna w nim sama nie jest kluczem podstawowym, zamiast tego cały zestaw jest kluczem podstawowym. W tych przypadkach nie ma więcej niż jednego PK.
Poik
46

W przypadku organizacji lub firmy istnieje tak wiele podmiotów fizycznych (takich jak ludzie, zasoby, maszyny itp.) I podmiotów wirtualnych (ich zadania, transakcje, działania). Zazwyczaj firma musi rejestrować i przetwarzać informacje o tych podmiotach gospodarczych. Te podmioty gospodarcze są identyfikowane w całej domenie biznesowej za pomocą klucza.

Według prospektywnego RDBMS klucz (zwany również kluczem kandydującym) to wartość lub zestaw wartości, które jednoznacznie identyfikują jednostkę.

W przypadku tabeli DB istnieje tyle kluczy, które mogą kwalifikować się do klucza podstawowego. Aby wszystkie klucze, klucz podstawowy, klucz unikalny itp. Były wspólnie nazywane kluczem kandydującym. Jednak DBA wybrał klucz z klucza kandydata do wyszukiwania rekordów nazywa się kluczem podstawowym.

Różnica między kluczem podstawowym a kluczem unikalnym

1. Zachowanie: Klucz podstawowy służy do identyfikacji wiersza (rekordu) w tabeli, podczas gdy klucz unikalny służy do zapobiegania duplikowaniu wartości w kolumnie (z wyjątkiem wpisu zerowego).

2. Indeksowanie: Domyślnie silnik SQL tworzy Indeks klastrowany na kluczu podstawowym, jeśli nie istnieje, oraz Indeks nieklastrowany na kluczu unikatowym.

3. Nullability: klucz podstawowy nie zawiera wartości Null, podczas gdy klucz unikalny może.

4. Istnienie: Tabela może mieć najwyżej jeden klucz podstawowy, ale może mieć wiele unikalnych kluczy.

5. Modyfikowalność: Nie możesz zmieniać ani usuwać wartości pierwotnych, ale wartości Unikalnego klucza mogą.

Aby uzyskać więcej informacji i przykładów:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html

nayeemDotNetAuthorities
źródło
7
W piątym punkcie mówisz, że nie możemy zmienić ani usunąć podstawowych wartości. z pewnością możemy zmienić podstawowe wartości w tabeli za pomocą instrukcji aktualizacji.
Kapil
3
@Kapil robi to więcej niż cel używania klucza podstawowego.
Gokigooooks
2
indeks klastrowany: wiersze są fizycznie przechowywane na dysku w tej samej kolejności co indeks
Duy Đặng
26

Klucz podstawowy musi być unikalny.

Unikalny klucz nie musi być kluczem podstawowym - patrz klucz kandydujący .

Oznacza to, że w tabeli może znajdować się więcej niż jedna kombinacja kolumn, która może jednoznacznie identyfikować wiersz - tylko jedną z nich można wybrać jako klucz podstawowy. Pozostałe, choć unikalne, to klucze kandydujące.

Oded
źródło
17

Różnica między kluczem podstawowym a kluczem unikalnym

+-----------------------------------------+-----------------------------------------------+
|                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.                       |
+-----------------------------------------+-----------------------------------------------+

Szczegółowe informacje można znaleźć na stronie :
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html

Omer K.
źródło
16

Klucz podstawowy ma semantyczną identyfikację wiersza bazy danych. Dlatego może istnieć tylko jeden klucz podstawowy dla danej tabeli, podczas gdy może istnieć wiele unikalnych kluczy.

Również z tego samego powodu kluczem podstawowym nie może być NULL (przynajmniej w Oracle, nie jestem pewien co do innych baz danych)

Ponieważ identyfikuje wiersz, nigdy nie powinien się nigdy zmieniać. Zmiana kluczy podstawowych z pewnością spowoduje poważny ból i prawdopodobnie wieczne potępienie.

Dlatego w większości przypadków potrzebujesz jakiegoś sztucznego identyfikatora klucza podstawowego, który nie jest używany do niczego poza identyfikacją pojedynczych wierszy w tabeli.

Z drugiej strony unikalne klucze mogą się zmieniać tak, jak chcesz.

Jens Schauder
źródło
22
+1 za wzmiankę o ryzyku wiecznego potępienia. Czas wprowadzić teologię do teorii relacyjnych baz danych.
Neville Kuyt
PK nie może mieć również wartości NULL w SQL Server
mrd3650
7

Klucz podstawowy jest unikalnym kluczem.

Każda tabela musi mieć co najwyżej JEDEN klucz podstawowy, ale może mieć wiele unikatowych kluczy. Klucz podstawowy służy do jednoznacznej identyfikacji wiersza tabeli. Klucz podstawowy nie może być, NULLponieważ NULLnie jest wartością.

Buhake Sindi
źródło
6
  • Pomyśl, że nazwa tabeli jest zatrudniona.
  • Klucz podstawowy
  • Klucz podstawowy nie może przyjmować wartości zerowych. klucz podstawowy wymusza unikatowość kolumny. Możemy mieć tylko jeden klucz podstawowy w tabeli.
  • Unikalny klucz
  • Unikalny klucz może przyjmować wartości zerowe. unikalny klucz wymusza także unikatowość kolumny. możesz pomyśleć, że jeśli unikalny klucz zawiera wartości null, to dlaczego może być unikalny? tak, chociaż może przyjmować wartości null, wymusza unikalność kolumny. wystarczy spojrzeć na zdjęcie. tutaj Emp_ID jest podstawowy, a Citizen ID jest unikalny. Nadzieję, że rozumiecie. Możemy użyć wielu unikalnych kluczy w tabeli. wprowadź opis zdjęcia tutaj
Mahedi Hasan Durjoy
źródło
1
nie możemy wstawić więcej niż jednej wartości NULL w kluczu Unique i nie pozwoli to również na duplikaty.
Masum
@ mahedi-hasan Czy kolumna klucza Unique nie powinna mieć tylko jednej wartości NULL? Dlaczego dwa ostatnie wiersze w Citizen ID NULL? Czy coś mi umyka?
supernowa,
Właśnie otrzymałem odpowiedź na mój komentarz powyżej. Wygląda na to, że MySQL zezwala na wiele wartości NULL w unikatach, więc wygląda na to, że @Mahedi_Hasan używał MySQL. stackoverflow.com/questions/3712222/…
supernova
6

Wiem, że to pytanie ma kilka lat, ale chciałbym udzielić odpowiedzi na to wyjaśnienie, a nie jak

Cel klucza podstawowego : jednoznaczna identyfikacja wiersza w bazie danych => Wiersz reprezentuje pojedyncze wystąpienie typu encji modelowane przez tabelę. Klucz podstawowy wymusza integralność jednostki, AKA Entity Integrity. Klucz podstawowy byłby indeksem klastrowym, tzn. Określa kolejność fizycznego przechowywania danych w tabeli.

Cel unikalnego klucza : Ok, dzięki kluczowi głównemu mamy sposób na unikalną identyfikację wiersza. Ale potrzebuję takiej działalności, że inna kolumna / zestaw kolumn powinna mieć unikalne wartości. Technicznie, biorąc pod uwagę, że ta kolumna (kolumny) jest unikalna, może być kandydatem do egzekwowania integralności jednostki. Ale z tego co wiemy, ta kolumna może zawierać dane pochodzące z organizacji zewnętrznej, co do których mam wątpliwości, że jestem wyjątkowa. Nie mogę ufać, że zapewni integralność jednostki. Po prostu sprawiam, że jest to unikalny klucz do spełnienia moich wymagań biznesowych.

Proszę bardzo!

Manuri Perera
źródło
1

Jeśli projekt bazy danych jest taki, że nie wymaga klucza obcego, możesz przejść do klucza unikalnego ( ale pamiętaj, że klucz unikalny pozwala na pojedynczą wartość zerową ).

Jeśli baza danych wymaga klucza obcego, to wychodzisz bez wyboru, musisz iść z kluczem podstawowym.

Aby zobaczyć różnicę między kluczem unikalnym a kluczem podstawowym, odwiedź tutaj

użytkownik2903536
źródło
1

Unikatowy klucz: - Należy go używać, gdy trzeba podać niepowtarzalną wartość. W przypadku niepowtarzalnego klucza oznacza to, że dozwolone są również wartości zerowe. Niepowtarzalne klucze to klucze, które są unikalne i nie są podobne w tej kolumnie, jak na przykład imię twojego zwierzaka .it może być niczym null, a jeśli pytasz w kontekście bazy danych, należy zauważyć, że każdy null różni się od innego null w bazie danych. Z WYJĄTKIEM SQL Server gdzie null = null ma wartość true


klucz podstawowy: - Należy go użyć, gdy trzeba jednoznacznie zidentyfikować wiersz. podstawowy to klucz, który jest unikalny dla każdego wiersza w ograniczeniu bazy danych, ponieważ nie pozwala na wartość null. więc mógłbyś zauważyć, że baza danych mają kolumnę, która jest auto-inkrementem i jest kluczem podstawowym tabeli. plus może być użyty jako klucz obcy w innej tabeli. przykład może być orderId w tabeli zamówień , billId w tabeli rachunków .

teraz wracam do sytuacji, kiedy go użyć: -

1) klucz podstawowy w kolumnie, który nie może mieć wartości NULL w tabeli i używasz jako klucza obcego w innej tabeli do tworzenia relacji

2) unikalny klucz w tabeli, który nie wpływa na tabelę lub całą bazę danych, niezależnie od tego, czy weźmiesz wartość null dla konkretnej kolumny, jak przekąski w restauracji, możliwe, że nie bierzesz przekąsek w restauracji

ayushs27
źródło
1

różnica między kluczem podstawowym a kluczem unikalnym

Oba Primary keyi Unique Keysłużą do jednoznacznego zdefiniowania wiersza w tabeli. Primary Keytworzy a clustered indexkolumny, podczas gdy a Unique creates an unclustered index of the column.

A Primary Keynie zezwala NULL value, jednak a Unique Keyzezwala one NULL value.

Gufran Hasan
źródło
0

Po prostu klucz podstawowy jest unikatowy i nie może być zerowy, unikatowy może być zerowy i może nie być niepowtarzalny.

Mohammed F. Ghazo
źródło
„unikatowy może być pusty i może nie być unikalny”. Co to may not be uniqueznaczy tutaj?
Yusuf Hassan
0

Klucze podstawowe

Głównym celem klucza podstawowego jest zapewnienie sposobu identyfikacji każdego rekordu w tabeli.

Klucz podstawowy umożliwia identyfikację wiersza przy użyciu danych w wierszu. Klucz podstawowy może być oparty na jednej lub więcej kolumnach, takich jak imię i nazwisko; jednak w wielu projektach kluczem podstawowym jest automatycznie wygenerowany numer z kolumny tożsamości.

Klucz podstawowy ma następujące cechy:

  1. Może istnieć tylko jeden klucz podstawowy dla tabeli.
  2. Klucz podstawowy składa się z jednej lub więcej kolumn.
  3. Klucz podstawowy wymusza integralność encji tabeli.
  4. Wszystkie zdefiniowane kolumny muszą być zdefiniowane jako NOT NULL.
  5. Klucz podstawowy jednoznacznie identyfikuje wiersz.
  6. Klucze podstawowe powodują domyślnie unikatowe indeksy CLUSTERED.

Unikalne klucze

Unikalny klucz jest również nazywany ograniczeniem unikalnym. Można zastosować unikalne ograniczenie, aby zapewnić unikalność wierszy w bazie danych.

Czy nie robimy tego już z kluczem podstawowym? Tak, robimy, ale tabela może zawierać kilka zestawów kolumn, które chcesz wyjątkowy.

W SQL Server unikalny klucz ma następujące cechy:

  1. W tabeli może znajdować się wiele unikalnych kluczy.
  2. Unikalne klucze powodują domyślnie NIEKLUSTEROWANE unikalne indeksy.
  3. Jedna lub więcej kolumn tworzy unikalny klucz.
  4. Kolumna może mieć wartość NULL, ale dozwolona jest jedna NULL na kolumnę.
  5. Unikatowe ograniczenie może odnosić się do ograniczenia klucza obcego.

źródło: tutaj

Manish Vadher
źródło
0

Główne cechy klucza podstawowego to:

Musi zawierać unikalną wartość dla każdego wiersza danych. Nie może zawierać wartości null. Tylko jeden klucz podstawowy w tabeli.

Główne cechy Unikalnego klucza to:

Może także zawierać unikalną wartość dla każdego wiersza danych.

Może także zawierać wartości null.

Wiele unikalnych kluczy w tabeli.

Nischal Tyagi
źródło