Какова цель иметь таблицу с одним столбцом (столбец идентификаторов)? Есть ли хороший вариант использования?
Это действительно хорошая практика?
Какова цель иметь таблицу с одним столбцом (столбец идентификаторов)? Есть ли хороший вариант использования?
Это действительно хорошая практика?
Я думаю, что люди используют это, чтобы воспроизвести ПОСЛЕДОВАТЕЛЬНОСТЬ Oracle. По сути, им нужен единый уникальный идентификатор для любой сущности, которую они создают в своей системе, поэтому у них есть что-то вроде этого:
CREATE PROCEDURE dbo.GenerateIdentifier
@Identifier INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.SingleColumnTable DEFAULT VALUES;
SET @Identifier = SCOPE_IDENTITY();
END
GO
Теперь всякий раз, когда они хотят добавить новый контакт, клиента, заказ и т. д., они сначала вызывают эту процедуру и получают новый идентификатор. Тогда только одна сущность в системе будет иметь идентификатор = 1, либо 2 и т.д.
Если вы нормализуете прошлое 3-й нормали, вы можете исключить несколько отношений «многие ко многим» в одной таблице. Это трудно объяснить без примера схемы, но я попробую...
Чтобы устранить множественные связи «многие ко многим» с одной таблицей, потребуется использовать суррогатный PK, общий для нескольких таблиц. (Это дает вам одно соединение «многие ко многим» вместо одного для каждой таблицы.) В крайнем случае вы получите таблицу с одним столбцом, предоставляющую другим таблицам ничего, кроме FK, которые они могут использовать как чистый FK или ПК. Думайте об этом как о нескольких таблицах, наследующих отношение «многие ко многим» от одного родительского столбца, но не более того. Хорошая вещь в этом заключается в том, что таблица с одним столбцом выпадает из любых реальных запросов, поскольку вы можете использовать (унаследованный) FK для присоединения к таблице «многие ко многим», к которой она подключается.
Хм, таблица с одним столбцом, который является идентификатором и не более того, для этого не может быть много применений.
Я могу придумать один: если вам нужно, чтобы несколько таблиц имели значения идентификаторов, но вы не хотели, чтобы эти значения конфликтовали друг с другом, вы могли бы использовать централизованную таблицу, в которой был только один столбец (идентификатор), и это использовалось для создания числа.
При переходе с баз данных Oracle вам нужен способ эмуляции последовательностей Oracle... Таблицы с одним столбцом идентификаторов — это то, что вам нужно.
Эта таблица может служить генератором уникальных идентификаторов для всего предприятия, где все приложения (включая устаревшие) будут полагаться на систему записи.
Может быть для служебной таблицы Numbers в SQL Server ‹ 2005. Проверьте это сообщение в блоге об этом.
В любом случае, таблица только со столбцом идентификаторов обычно используется для преодоления некоторых препятствий SQL Server, которые либо сложнее сделать иначе, либо замедляются с использованием других (т.е. встроенных) методов.
Другое использование также может иметь логический характер, поскольку наличие ключа в таблице pkey с одним столбцом указывает на истинную оценку предиката для некоторой бизнес-логики.
Это означает, что значение pkey в этой специальной таблице может быть внешним ключом для другой таблицы. Хотя я не уверен, покупает ли это что-то более битовое в этой другой таблице.
Но это определенно хорошая практика в качестве подсчета или таблицы чисел.