Я пытаюсь назначить первичный ключ, но некоторые данные дублируются? Как мы можем хранить данные, но все еще иметь первичный ключ?Первичные ключи с дублированными данными?
ответ
Первичный ключ - это серия уникальные значения. Таким образом, вы можете хранить свои дублированные данные или иметь первичный ключ, но не тот и другой.
В качестве альтернативы вы можете использовать суррогатный ключ, добавив столбец идентификатора в таблицу и заполнив его из последовательности. Конечно, в этой ситуации «primaruy key» бессмысленен, потому что вы не применяете уникальность бизнес-ключа. Но по крайней мере вы можете обмануть себя, что у вас есть реальная целостность.
Из того, что я могу догадаться, у вас есть данные, и вы пытаетесь назначить столбец в качестве первичного ключа, однако данные имеют повторяющиеся значения для этого столбца.
Первичные ключи должны быть уникальными. Это базы данных 101. Если единственное, что работает в качестве первичного ключа, это дубликат, вы не правильно структурируете свои таблицы.
Вы можете вручную создать не уникальный индекс по столбцам быть ограничены, а затем добавить ограничение первичного ключа с пунктом novalidate
, например:
create table t1 (x number);
insert into t1 (x) values (1);
insert into t1 (x) values (1);
commit;
create index t1_pk on t1 (x);
alter table t1 add (
constraint t1_pk primary key (x) novalidate
);
я должен подчеркнуть, однако, что, хотя возможно, это обычно плохой дизайн!
Единственный раз, когда я столкнулся с этим за 17 лет работы с базой данных, был вызван ошибкой в данных. Один клиент был введен дважды, с тем же идентификатором, в таблицу, у которой не было первичного ключа.
Когда было необходимо объявить первичный ключ, сначала необходимо сначала очистить ошибку данных, чтобы иметь возможность использовать наиболее логический столбец в качестве первичного ключа.
Итак, мой совет заключается в том, чтобы увидеть, соответствуют ли все данные в вашей таблице бизнес-правилам, а также проверяет, подразумевают ли бизнес-правила использование этого столбца в качестве первичного ключа.
Первичные ключи уникальны, поэтому, если вы хотите иметь дубликаты данных в определенном столбце, этот же столбец не может быть основным кеем этой таблицы.
- 1. Первичные ключи и внешние ключи?
- 2. Первичные ключи с Apache Spark
- 3. Зачем использовать первичные ключи?
- 4. Отрицательные первичные ключи
- 5. Хранение связанных Первичные ключи
- 6. Сменные, составные первичные ключи
- 7. Индексы и первичные ключи
- 8. Первичные ключи Oracle
- 9. Возможны незначительные первичные ключи?
- 10. Первичные ключи AppEngine
- 11. Squeryl: Введенные Первичные ключи
- 12. Дублирующие первичные ключи?
- 13. Первичные ключи и ограничения
- 14. Первичные ключи в MySQL
- 15. Первичные ключи UUID и Memcached
- 16. SQL первичные ключи и внешние ключи одновременно
- 17. Первичные ключи - родные, последовательные или GUID-ключи?
- 18. SQL множественные внешние ключи как первичные ключи
- 19. Комбинированные и первичные ключи DataGridView
- 20. Действительно ли запрашивает первичные ключи?
- 21. SQL Игнорировать повторяющиеся первичные ключи
- 22. NHibernate и первичные ключи строки
- 23. Первичные ключи и пользовательские интерфейсы
- 24. SQL запрос - фильтровать первичные ключи
- 25. SqlBulkCopy Не перезаписывать первичные ключи
- 26. Первичные ключи для операции Join?
- 27. Первичные/внешние ключи SQL Server
- 28. Первичные ключи Bigtable и Compal
- 29. Композитные внешние и первичные ключи
- 30. Наследование EF и первичные ключи
Исправить данные. Какой смысл хранить одну и ту же информацию более одного раза? – sqlvogel
По определению данные в столбце первичного ключа должны быть уникальными –