Для чего нужна одна таблица столбцов (столбец идентичности)? Есть ли хороший вариант использования?Использование таблицы с одной колонкой (Identity)?
Действительно ли это хорошая практика?
Для чего нужна одна таблица столбцов (столбец идентичности)? Есть ли хороший вариант использования?Использование таблицы с одной колонкой (Identity)?
Действительно ли это хорошая практика?
Я думаю, что люди используют это, чтобы воспроизвести SEQUENCE 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 и т. Д.
Может быть для утилиты Numbers таблиц в SQL Server 2005. < Проверить this blog post об этом.
В любом случае таблица с идентификационным столбцом используется, как правило, для преодоления некоторых препятствий SQL Server, которые сложнее сделать иначе или замедлить использование других (т. Е. Встроенных) методов.
Хмм таблица с одним столбцом, который является личностью и не более того - для этого не может быть много применений.
Один из них, о котором я могу подумать: если вам нужны несколько таблиц, чтобы иметь значения идентичности, но они не хотели, чтобы эти значения столкнулись друг с другом, тогда вы могли бы использовать централизованную таблицу, в которой был только один столбец (идентификатор), и это было используется для создания чисел.
При переходе с баз данных Oracle вам нужен способ эмуляции последовательностей Oracle ... Таблицы с одиночными столбцами идентификации - это путь.
Другое использование также может быть логическим, поскольку наличие ключа в таблице столбцов с одним столбцом указывает на истинную оценку предикатов для некоторой бизнес-логики.
Значение, которое значение pkey в этой специальной таблице может быть внешним ключом к другой таблице. Хотя я не уверен, что он покупает что-либо над битом в этой другой таблице.
Но это определенно хорошая практика как таблица с таблицами или цифрами.
Эта таблица может служить уникальным генератором идентификаторов предприятия, в котором все приложения (включая устаревшие) будут полагаться как система запись.
Если вы нормализуете прошлое 3-го нормального, вы можете устранить множественные отношения многих из многих в одну таблицу. Это трудно объяснить без примера схемы, но я дам ему выстрел ...
Чтобы устранить множественное множество ко многим связям с одной таблицей, потребуется использование суррогатной ПК, которая является общей для нескольких таблиц. (Это дает вам одно-многое число, а не одно для каждой таблицы.) В крайнем случае вы получаете одну таблицу столбцов, которая ничего не дает, кроме FK, другим таблицам, которые они могут использовать как чистый FK или PK. Подумайте об этом как о нескольких таблицах, наследующих отношения многих и многих из одного родителя столбца, но ничего больше. Самое приятное в этом состоит в том, что одна таблица столбцов выпадает из любых актуальных запросов, так как вы можете использовать (унаследованный) FK для присоединения к много-многим таблицам, к которым он подключается.
Thanks Aaron .. это один возможный случай ... – RameshVel