2012-05-13 2 views
1

Могу ли я узнать, могу ли я иметь 6 первичных ключей в моем проекте базы данных. Я только начинаю создавать свой проект базы данных и знаю, что один и два возможны, но не уверены в 6. Любая помощь, пожалуйста!6 Первичные ключи в базе данных

+0

выглядит дубликат http://stackoverflow.com/questions/217945/can-i-have-multiple-primary-keys-in-a-single-table – ravi

ответ

2

Да, вы можете иметь несколько ключей в таблице, и вы можете иметь несколько атрибутов в каждом ключе. Каждый ключ по определению должен быть неприводимым, что означает, что он содержит минимальный набор столбцов, необходимых для поддержания уникальности этого ключа.

Основываясь на ваших комментариях, я подозреваю, что вы действительно интересуетесь наличием ключа ONE с несколькими атрибутами, а не с несколькими ключами. Разница важна, и вы должны это понимать. Возможно, вам захочется изучить книгу или пройти курс по основам базы данных, чтобы помочь вам ответить на такие вопросы, как эта.

+0

Огромное спасибо, что ваш ответ очень помог, теперь я уменьшу свое требование на 3keys, поскольку это не большое упражнение. Еще раз спасибо :) – niki

+0

Ключи не имеют никакого отношения к размеру упражнения и всему, что связано с целостностью данных. – sqlvogel

2

В тот момент, когда вы говорите больше, чем один, он становится составным. Технически вы можете иметь составной ключ с более чем одним столбцом. Но мне очень хотелось бы знать, что такое прецедент, который удовлетворяет такое требование иметь 6 ключей в виде составного ключа в таблице.

+0

У нас есть таблицы с большим количеством атрибутов (иногда даже около ста), где составные первичные ключи сделаны из даты, времени, имени системы, имени подсистемы, типа периода, имен устройств и т. д. Другими словами, часто более шести. Иногда боль управляется, но считается необходимой для наших целей. – paxdiablo

+0

, но я бы сказал, что у вас отдельная 32-битная строка в качестве первичного ключа, и у вас есть ограничения для этих полей, потому что наличие такого сложного составного ключа может замедлить время вставки записи .. на самом деле ее проектная перспектива ... хорошо знать ваши использование кейс .. спасибо @paxdiablo – raddykrish

+0

Большое спасибо за ваш ответ. Мне нужно несколько первичных в таблицах, которые я установил сначала Customer_num в одной таблице и 2 ключах во втором Selling item_num и Hiring item_num как составной, но не был уверен, что это будет хорошо (или, может быть, они будут?), Поэтому я настроил дополнительный стол с 3-мя первичными ключами для пункта найма (только что указано, что эти элементы являются??) и еще один для продажи item_num, и вид выглядит лучше, но я не уверен, что это нормально, чтобы иметь 3 в одной таблице. Или я оставлю его, как только я установил? Если у вас есть время, то ваш ответ будет чрезвычайно оценен. Большое спасибо – niki

2

Я собираюсь угадать, что вы пытаетесь спросить, как иметь несколько первичных ключей в таблице, а не в базе данных. (Строго говоря, это делает его составным ключом).

Вы, безусловно, можете это сделать. Например, синтаксис в MySQL является:

CREATE TABLE tbl_name (
    col1 int, 
    col2 int, 
    col3 int, 
    col4 int, 
    col5 int, 
    col6 int, 
    col7 int, 
    col8 int, 
    col9 int, 
    PRIMARY KEY (col1, col2, col3, col4, col5, col6)); 

Сказав, что, если вы действительно не знаете, что вы делаете это, вероятно, не то, что вы должны делать. Я, конечно, работал с очень сложными бизнес-моделями с большими составными ключами.

(Например, один клиент имел много таблиц с 5 полей составного ключа, например, представляющий salesOrganizationNumber, salesRepNumber, locationId, styleNumber, styleType по некоторым пунктам инвентаризации/упорядочения строк.)

Но ваш вопрос настолько базовый, я подозреваю, что вы, вероятно, должны задать гораздо более подробный вопрос о том, как разработать схему, и вы, вероятно, обнаружите, что ваши первичные ключи будут намного меньше.

+0

Большое спасибо за ваш ответ. Да, мне нужно несколько первичных в таблицах, сначала создать Customer_num в одной таблице и 2 ключах во втором Selling item_num и Hiring item_num как составной, но не был уверен, что это будет хорошо работать (или, может быть, они будут?), Поэтому я настраиваю дополнительные стол с 3-мя первичными ключами для пункта найма (только что указано, что эти элементы являются??) и еще один для продажи item_num, и вид выглядит лучше, но я не уверен, что это нормально, чтобы иметь 3 в одной таблице. Или я оставлю его, как только я установил? Если у вас есть время, то ваш ответ будет чрезвычайно оценен. Большое спасибо – niki

+0

Я немного теряюсь в описании ваших таблиц. Я бы предложил поместить сокращенную версию ваших операторов определения таблицы в ваш вопрос, и мы можем посмотреть на нее оттуда. –

2

В базе данных вы можете иметь столько первичных ключей, сколько таблиц - вам разрешен только один первичный ключ в таблице.

Конечно, вы можете иметь несколько индексов за стол, но они не считаются первичными ключами.

Вы также можете создать первичный ключ из нескольких столбцов (столько столбцов, сколько хотите), но это по-прежнему один первичный ключ, только составной.

Он сильно отличается от нескольких первичных ключей, поскольку первый позволяет дублировать составные части ключа, пока полный ключ уникален. Последнее (если разрешено) требует, чтобы каждая часть была уникальной, поскольку это свойство первичного ключа.

3

Что вы подразумеваете под несколькими первичными ключами? Вы можете объяснить? Если в базе данных вы запрашиваете более одного первичного ключа, то в этом случае вы можете занять первичный ключ таблицы. но в одной таблице два или более первичных ключей невозможно.

Таблица может содержать только один первичный ключ и более одного уникального ключа, который будет вашим составным ключом.

пример: -Employee стол

 EmpID(Not null) ManagerID(null) 
    001    001 
    002    002 

здесь EmpId ваш первичный ключ и менеджер Id Ваш составной ключ.

Нравится программа? Поделись с друзьями!

Смежные вопросы