Я використовую базу даних mysql. У мене плутанина між первинним і унікальним ключем.
Будь ласка, допоможіть мені, де я повинен створити первинний та унікальний ключ. Я маю на увазі, в якій ситуації ми створюємо унікальний ключ або первинний ключ.
Я використовую базу даних mysql. У мене плутанина між первинним і унікальним ключем.
Будь ласка, допоможіть мені, де я повинен створити первинний та унікальний ключ. Я маю на увазі, в якій ситуації ми створюємо унікальний ключ або первинний ключ.
Відповіді:
Первинний ключ:
NULL
- наприклад, додається MySQLNOT NULL
Унікальний ключ:
NULL
значенняNULL
; кілька рядків можуть мати NULL
значення, і тому їх не можна вважати "унікальними"Унікальний ключ (Великобританія) : це стовпчик або група стовпців, які можуть ідентифікувати унікальність підряд.
Первинний ключ (ПК) : це також стовпчик або група стовпців, які можуть ідентифікувати унікальність підряд.
Отже, Первинний ключ - це ще одне ім'я унікального ключа, але реалізація за замовчуванням у SQL Server відрізняється від первинного та унікального ключа.
За замовчуванням:
Це дійсно залежить, яка ваша мета, вирішуючи, чи створити Великобританію чи ПК. Звідси випливає аналогія на кшталт "Якщо є команда з трьох людей, тож усі вони є однолітками, але знайдеться одна з них, яка буде парою однолітків: ПК та Великобританія мають подібне відношення". Я б запропонував прочитати цю статтю: Приклад, поданий автором, може здатися не підходящим, але спробуйте отримати загальну думку.
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
до таблиці додається новий стовпець (з ім'ям за замовчуванням ) (я чув, що це називається сурогатним ключем). Джерело: postgresqltutorial.com/postgresql-primary-key Я новачок у всьому цьому, тому вдячний би більш обізнаним плакатом, щоб вказати на пропущені нюанси.
Для організації чи бізнесу існує стільки фізичних осіб (таких як люди, ресурси, машини тощо) та віртуальних утворень (їх Завдання, операції, діяльність). Зазвичай бізнесу потрібно записувати та обробляти інформацію цих суб'єктів господарювання. Ці суб’єкти господарської діяльності ідентифікуються в межах цілого домену бізнесу.
Згідно з перспективою RDBMS, Key (він же - Candidate Key) - це значення або набір значень, що однозначно ідентифікує сутність.
Для таблиці DB-таблиць існує так багато ключів, і вони можуть бути придатними для первинного ключа. Таким чином, що всі ключі, первинний ключ, унікальний ключ тощо називаються разом як ключем кандидата. Однак DBA, який обрав ключ від кандидата для пошуку записів, називається Первинний ключ.
Різниця між первинним і унікальним ключем
1. Поведінка: первинний ключ використовується для ідентифікації рядка (запису) в таблиці, тоді як Unique-ключ - це запобігання повторюваних значень у стовпці (за винятком нульового запису).
2. Індексація: за замовчуванням SQL-механізм створює кластерний індекс на первинному ключі, якщо його немає, і некластеризований індекс на унікальному ключі.
3. Нульовість: Первинний ключ не включає нульових значень, тоді як унікальний ключ може.
4. Наявність: Таблиця може мати максимум один первинний ключ, але може мати кілька унікальних ключів.
5. Модифікація: Ви не можете змінити або видалити первинні значення, але значення Унікального ключа можуть.
Для отримання додаткової інформації та прикладів:
Первинний ключ повинен бути унікальним.
Унікальний ключ не повинен бути первинним ключем - див. Ключ-кандидат .
Тобто на столі може бути більше однієї комбінації стовпців, яка може однозначно ідентифікувати рядок - лише один із них може бути обраний як основний ключ. Інші, хоча й унікальні, - це ключі кандидатів.
Різниця між первинним ключем та унікальним ключем
+-----------------------------------------+-----------------------------------------------+ | 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. | +-----------------------------------------+-----------------------------------------------+
Детальну інформацію можна знайти на веб-сайті : http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-bet between-Primary-Key-and-Unique-
Key.html
Первинний ключ має семантику ідентифікації рядка бази даних. Тому для даної таблиці може бути лише один первинний ключ, а унікальних ключів може бути багато.
Також з тієї ж причини первинний ключ не може бути NULL (принаймні, в Oracle, не впевнений в інших базах даних)
Оскільки він визначає рядок, він ніколи не повинен змінюватися. Зміна первинних ключів обов'язково заподіює серйозний біль і, ймовірно, вічне прокляття.
Для цього в більшості випадків потрібно створити штучний ідентифікатор для основного ключа, який використовується не для чого, крім визначення окремих рядків у таблиці.
Унікальні клавіші з іншого боку можуть змінюватися настільки, наскільки ви хочете.
Первинний ключ - це унікальний ключ.
Кожна таблиця повинна мати не більше одного первинного ключа, але вона може мати кілька унікальних ключів. Первинний ключ використовується для унікального визначення рядка таблиці. Первинним ключем не може бути, NULL
оскільки NULL
це не значення.
Мені відомо, що це питання вже кілька років, але я хотів би дати відповідь на це пояснення, чому, а не як
Призначення первинного ключа : однозначно ідентифікувати рядок у базі даних => рядок являє собою окремий екземпляр типу сутності, змодельований таблицею. Первинний ключ забезпечує цілісність суб'єкта господарювання, цілісність об'єднання AKA. Первинний ключ - це кластерний індекс, тобто він визначає порядок фізичного зберігання даних у таблиці.
Призначення унікального ключа : Гаразд, з Первинним ключем у нас є спосіб однозначно визначити рядок. Але в мене є потреба в бізнесі така, що інший стовпчик / набір стовпців повинен мати унікальні значення. Ну, технічно, враховуючи, що цей стовпець (и) є унікальним, він може стати кандидатом для забезпечення цілісності сутності. Але, наскільки ми знаємо, цей стовпець може містити дані, що походять від зовнішньої організації, у мене можуть бути сумніви щодо унікальності. Я не можу довіряти йому, щоб забезпечити цілісність сутності. Я просто роблю це унікальним ключем для виконання моєї бізнес-вимоги.
Ось так!
Якщо дизайн Вашої бази даних такий, що в них немає потреби в зовнішньому ключі, тоді Ви можете перейти з унікальним ключем ( але пам’ятайте, що унікальний ключ допускає єдине нульове значення ).
Якщо у вашій базі даних вимагається зовнішній ключ, тоді ви не залишаєте іншого вибору, вам доведеться переходити з первинним ключем.
Щоб побачити різницю між унікальним та первинним ключем, відвідайте тут
Унікальний ключ: - Він повинен використовуватися, коли ви повинні надати унікальне значення. У разі унікального ключа це означає, що нульові значення також дозволені. Унікальні клавіші - це ті ключі, які є унікальними і не схожими в цьому стовпчику, наприклад, наприклад, ім'я вашого улюбленця .it може бути не таким, як null, і якщо ви запитуєте в контексті бази даних, то слід зазначити, що кожен null відрізняється від іншого null в базі даних. EXCEPT-SQL Server, де null = null є істинним
первинний ключ: - Його слід використовувати, коли вам потрібно однозначно вказати row.primary є ключовим елементом, який є унікальним для кожного рядка в обмеженні бази даних - це те, що він не дозволяє в ньому нулю. Отже, ви могли бачити, що база даних мати стовпчик, який збільшується автоматично, і це первинний ключ таблиці. плюс він може бути використаний в якості зовнішнього ключа в іншій таблиці. Приклад можна замовитиId у таблиці замовлень , billId у вексельній таблиці .
тепер повертаємось до ситуації, коли ним користуватися: -
1) первинний ключ у стовпці, який не може бути нульовим у таблиці, і ви використовуєте як зовнішній ключ в іншій таблиці для створення відносин
2) унікальний ключ у таблиці, де це не впливає на таблицю чи всю базу даних, чи берете ви нуль для конкретного стовпця, як закуски в ресторані, можливо, ви не приймаєте закусок у ресторані
різниця між первинним ключем та унікальним ключем
І те, Primary key
і Unique Key
інше використовується для однозначного визначення рядка в таблиці.
Primary Key
створює clustered index
колонку, тоді як a Unique creates an unclustered index of the column
.
A Primary Key
не дозволяє NULL value
, проте a Unique Key
дозволяє one NULL value
.
Просто первинний ключ є унікальним і не може бути нульовим, унікальний може бути нульовим, а може і не унікальним.
may not be unique
тут означає?
Основне призначення первинного ключа - забезпечити засіб для ідентифікації кожного запису в таблиці.
Первинний ключ забезпечує засіб ідентифікації рядка, використовуючи дані всередині рядка. Первинний ключ може базуватися на одному або декількох стовпцях, таких як ім’я та прізвище; однак у багатьох проектах первинний ключ - це автоматично створене число зі стовпця ідентичності.
Первинний ключ має такі характеристики:
Унікальний ключ також називають унікальним обмеженням. Унікальне обмеження може бути використане для забезпечення унікальності рядків у базі даних.
Хіба ми вже не робимо це за допомогою первинного ключа? Так, ми маємо, але в таблиці може бути кілька наборів стовпців, які вам потрібні унікальні.
У SQL Server унікальний ключ має такі характеристики:
джерело: тут
Основними характеристиками основного ключа є:
Він повинен містити унікальне значення для кожного рядка даних. Він не може містити нульових значень. Лише один первинний ключ у таблиці.
Основними особливостями Унікального ключа є:
Він також може містити унікальне значення для кожного рядка даних.
Він також може містити нульові значення.
Кілька унікальних клавіш у таблиці.
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT