Ответ
Нет, не может. Согласно реляционной модели, у таблицы может быть только один первичный ключ (PRIMARY KEY). Однако этот ключ может быть составным (composite key), то есть состоять из нескольких столбцов.
Составной первичный ключ гарантирует уникальность комбинации значений в этих столбцах.
Пример создания (SQL):
CREATE TABLE order_items (
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT,
PRIMARY KEY (order_id, product_id) -- Один ключ из двух полей
);
Почему только один PRIMARY KEY?
- Целостность: PRIMARY KEY — главный идентификатор строки для СУБД и логических связей (FOREIGN KEY).
- Индексация: Создаётся уникальный кластерный индекс.
Альтернатива: Вы можете создать дополнительные уникальные ограничения (UNIQUE CONSTRAINT) на другие наборы столбцов, которые будут функционально похожи на первичные ключи, но не являются ими.
Ответ 18+ 🔞
А, ну тут классика, блядь! Слушай, я тебе сейчас как на духу, без всяких этих заумных соплей. Ну не может, и всё тут! По реляционной модели, у таблицы может быть только один, блядь, первичный ключ (PRIMARY KEY). Один, как яйцо у курицы, понимаешь? Не два, не три — один!
Но, а вот тут, сука, прикол! Этот один ключ может быть составным, то есть собран, как лего, из нескольких столбцов. Составной первичный ключ — это гарантия, что комбинация значений в этих колонках будет уникальной, как отпечатки пальцев у мартышлюшки.
Вот, смотри, как это выглядит в коде, не трогаю его, как велено:
CREATE TABLE order_items (
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT,
PRIMARY KEY (order_id, product_id) -- Вот он, один ключ, но из двух полей! Хуй с горы, а не ключ!
);
А почему, блядь, только один PRIMARY KEY?
- Целостность, ёпта! PRIMARY KEY — это как паспорт для строки, главный документ, по которому её все ищут и с которым связываются другие таблицы (эти ваши FOREIGN KEY).
- Индексация: Под него автоматом создаётся уникальный кластерный индекс, чтоб всё быстро летало. Два таких индекса — это уже ёперный театр для базы.
Но если тебе прям овердохуища нужно ещё что-то уникальное? Ну, бля, сделай тогда уникальные ограничения (UNIQUE CONSTRAINT) на другие наборы столбцов. Они будут вести себя почти как ключи, но формально — не они. Как будто у тебя есть один главный паспорт, а остальные — это права, военник и пропуск в сортир. Вроде документы, но не паспорт, блядь! Вот и вся философия.