Если мне не нужен первичный ключ, я должен добавить его в базу данных?Нельзя ли использовать основной ключ, если мне не нужен
ответ
Первичный ключ уникально идентифицирует строку в вашей таблице.
Тот факт, что он проиндексирован и/или сгруппирован, является проблемой физической реализации и не связан с логическим дизайном.
Вам нужен один для таблицы, чтобы иметь смысл.
Если вам не нужен первичный ключ, не используйте его. Обычно у меня есть необходимость в первичных ключах, поэтому я обычно их использую. Если у вас есть связанные таблицы, вам, вероятно, нужны первичные и внешние ключи.
+1 короткий и сладкий :) – James
Первичный ключ всегда будет помогать в выполнении запросов. Поэтому, если вам когда-либо понадобится запрос с использованием «ключа» к «внешнему ключу» или используется как поиск, тогда да, используйте внешний ключ.
Не понимаю, что первичные ключи помогают с производительностью? Если они вам не нужны, вы не будете искать записи, используя один. Таким образом, нет никакой пользы. – brainfck
Для чего будет использоваться таблица? в основном нам нужна таблица для хранения некоторой информации, и вы будете искать ее. –
Luke101 должен опубликовать свой прецедент, и мы увидим, если он понадобится. – brainfck
Да, но только в том же смысле, что не стоит использовать ремень безопасности, если вы не планируете попадать в аварию. То есть, это небольшая цена, чтобы заплатить за большую выгоду, когда вам это нужно, и даже если вы считаете, что вам не нужны, вы будете в будущем. Разница в том, что у вас много скорее всего потребуется первичный ключ, чем попасть в автомобильную аварию.
Вы также должны знать, что некоторые системы баз данных создают для вас первичный ключ, если вы этого не сделаете, поэтому вы не сохраняете это с точки зрения того, что происходит в двигателе.
Я не согласен. Я отказываюсь носить ремни безопасности, так как они препятствуют мне полный доступ к моему пиву. Но я никогда не создам стол без pk. –
@Rev Gonzo, вам нужен более стратегически расположенный держатель пива. C'mon 2010 год. – JeffO
Вам нужен первичный ключ. Вы этого еще не знаете.
Я когда-то думал, что мне не нужен первичный ключ ... Теперь я знаю лучше. – MiseryIndex
+1 Потому что это наиболее точно отражает реальность. Я вижу случаи, когда вам может не понадобиться один, но мало и далеко друг от друга. – Murph
За исключением случаев, когда вам не нужен первичный ключ, и вы знаете его сейчас. Это необычный случай. Лучше играть в нее безопасно и ошибаться в пользу ПК. – MarkPflug
Я не знаю. Я использовал пару таблиц, где есть только одна строка и один столбец. Всегда будет только одна строка и один столбец. Внешних ключей нет.
Почему я должен поставить первичный ключ?
Зачем нужен стол для этого ????? –
Вам нужно сохранить отдельную информацию? Что-то вроде системного предпочтения? Все нуждаются в этой части данных, но вы не хотите создавать совершенно новую вещь, чтобы получить только одну часть данных. – ElGringoGrande
Ах. Но вам нужен первичный ключ в этой таблице. И ограничение проверки, которое ограничивает этот первичный ключ единственным значением. Потому что в противном случае вы вернетесь через 6 месяцев и обнаружите, что кто-то добавил еще одну строку для вас, и какой из ваших приложений набирает произвольное ... –
Первичный ключ в основном формально определен, чтобы помочь референциальной целостности, однако, если таблица очень мала или вряд ли содержит уникальные данные, тогда это ненужные накладные расходы. Определение индексов в таблице обычно может использоваться для обозначения первичного ключа без официального объявления. Однако вы должны учитывать, что определение ключа Primary может быть полезным для разработчиков и создания схем или инструментов SQL Dev, поскольку метаданные помогают понять, а некоторые инструменты полагаются на это, чтобы правильно определить отношения первичного/внешнего ключа в модели.
Ну ...
Каждая таблица в реляционной БД нужен первичный ключ. Как уже отмечалось, первичный ключ - это данные, которые однозначно идентифицируют запись ...
Возможно, у вас не будет поля «ID», если у вас есть таблица NM, которая объединяет две разные таблицы, но вы можете однозначно идентифицируйте запись по значениям из обоих столбцов, к которым вы присоединяетесь. (Композитный первичный ключ)
Имея таблицу без первичного ключа является нарушением первой нормальной форме, и не имеет ничего общего с реляционной БД
Нет, если вы не можете найти пример, «Эта база данных будет работать намного лучше, если table_x не имеет первичного ключа.«
Вы можете сделать аргумент, чтобы никогда не использовать первичный ключ, если производительность, целостность данных и нормализация не требуются. Безопасность и возможности резервного копирования/восстановления могут не понадобиться, но в конце концов вы надеваете своего большого мальчика брюки и присоединиться к реальному миру реализации базы данных.
Да, таблица должна ВСЕГДА иметь первичный ключ ... если вам не нужно однозначно идентифицировать записи в нем. (Мне нравится делать абсолютные утверждения и сразу противоречат им)
Когда вам не нужно однозначно идентифицировать записи в таблице? Почти никогда. Я делал это раньше, но для таких вещей, как таблицы журналов аудита. Данные, которые не будут обновляться или удалены, и не будут ограничиваться каким-либо образом. Существенно структурированное протоколирование.
У вас всегда должен быть первичный ключ, даже если он находится только на ID. Возможно, NoSQL - это то, за чем вы после этого (просто спрашиваете)?
Это очень зависит от того, насколько вы уверены, что вы не можете этого сделать. Если у вас есть хоть малейшие сомнения, добавьте один - вы поблагодарите себя позже. Индикатор, если хранящиеся данные могут быть связаны с другими данными в вашей БД в одной точке.
Один из вариантов использования, о котором я могу думать, является журнальным видом таблицы, в которой вы просто выгружаете одну запись за другой (чтобы правильно их обработать позже). Вам, вероятно, не нужен первичный ключ, если вы храните достаточно данных для фильтрации соответствующих сообщений (например, даты). Конечно, сомнительно использовать СУРБД для этого.
Вряд ли в любом случае вам не нужен первичный ключ. В принципе, если таблица не имеет первичного ключа, это не таблица - это просто куча данных. –
Возможно, это не относится к вашему вопросу, но мне нужно спросить: * Почему бы вам не почувствовать, что вам это нужно? * –
Можете ли вы дать нам больше информации о ситуации, с которой вы имеете дело? Первичные ключи не всегда необходимы, но если бы мы знали, что вы пытаетесь сделать, мы могли бы дать вам несколько советов. – TLiebe