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.
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.
Odpowiedzi:
Klucz podstawowy:
NULL
- np. MySQL dodajeNOT NULL
Unikalny klucz:
NULL
wartościNULL
; wiele wierszy może mieć NULL
wartości i dlatego nie może być uważane za „unikalne”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:
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
[table_name]_pkey
tabela ( 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.
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:
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.
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
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.
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ć, NULL
ponieważ NULL
nie jest wartością.
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!
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
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
różnica między kluczem podstawowym a kluczem unikalnym
Oba Primary key
i Unique Key
służą do jednoznacznego zdefiniowania wiersza w tabeli.
Primary Key
tworzy a clustered index
kolumny, podczas gdy a Unique creates an unclustered index of the column
.
A Primary Key
nie zezwala NULL value
, jednak a Unique Key
zezwala one NULL value
.
Po prostu klucz podstawowy jest unikatowy i nie może być zerowy, unikatowy może być zerowy i może nie być niepowtarzalny.
may not be unique
znaczy tutaj?
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:
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:
źródło: tutaj
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.
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT