В Oracle использует последовательности для суррогатных первичных ключей, считающихся стандартными - PullRequest
2 голосов
/ 24 сентября 2010

Предостережения:

Позвольте мне сначала уточнить, что речь не идет о том, использовать ли первичные ключи суррогатов или нет.

Кроме того, это НЕ связано с идентификацией (SQL Server) / последовательностями (Oracle) и их плюсами / минусами. Я действительно получил представление об этом благодаря , , , и ,

Вопрос:

Я пришел из SQL Server и всегда использовал столбцы идентификаторов в качестве суррогатных первичных ключей для большинства таблиц.

Основываясь на моих знаниях Oracle, я обнаружил, что ближайший эквивалент в Oracle - это SEQUENCES, которые можно использовать для имитации чего-то похожего на Identity в SQL-сервере.

Поскольку я новичок в Oracle и в моей базе данных более 100 таблиц, главное, что меня беспокоит: -

Учитывая, что мне нужно создать последовательность для каждой таблицы в Oracle ( почти ), будет ли это стандартная принятая реализация для симуляции Identity или есть лучший / более простой способ достижения этого вида внедрения в Oracle? Существуют ли какие-либо конкретные GOTCHA, связанные с наличием стольких последовательностей в Oracle?

Система поддерживает Oracle 10G и 11G

Ответы [ 2 ]

2 голосов
/ 25 сентября 2010

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

Даже возможно иметь больше последовательностей, чем таблиц - в отличие от столбцов идентификаторов в других СУБД, последовательности могут использоваться не только для создания значений суррогатного ключа.

Альтернативой является использование GUID - в Oracle вы можете вызвать SYS_GUID для генерации уникальных значений.

Хорошая статья с комментариями с плюсами и минусами для обоих подходов: http://rwijk.blogspot.com/2009/12/sysguid.html

2 голосов
/ 24 сентября 2010

Учитывая, что мне нужно создать последовательность для каждой таблицы в Oracle (почти), будет ли это общепринятой реализацией для симуляции Identity, или есть лучший / более простой способ реализации такого рода реализации в Oracle?

Да, в Oracle очень типично создавать последовательность для каждой таблицы.Можно использовать одну и ту же последовательность для нескольких таблиц, но вы рискуете сделать ее узким местом, используя одну последовательность для многих / всех таблиц: см. Этот AskTom q / a

Существуют ли какие-либо специфические GOTCHA, связанные с наличием в Oracle стольких последовательностей?

Ни один из них, о котором я могу думать.

...