Показать сообщение отдельно
Старый 17.05.2011, 11:51   #20  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Стоит напомнить, что любая "обычная" таблица может стать временной либо за счет манипуляций в коде, либо за счет отключения конфигурационного ключа, к которому она привязана.
С моей точки зрения, это просто вариант программного создания временной таблицы взяв за образец структуру обычной таблицы. То, что получится, будет НЕ постоянная таблица с особыми свойствами, а новый объект. Просто созданный не в AOT, а программно. Естесственно, что объект, созданный программно, может иметь произвольное имя.

Насчет отключения конфигурационного ключа. Это из разряда забавных фич, которые крайне не желательно использовать при разработке приложения.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Так что указание "Tmp" в названии таблицы служит лишь для того, чтобы проще было отличать "перманентно временные" таблицы от "конфигурируемо временных"
Вопрос "зачем?" в голову не приходил? Если, как Вы утверждаете, между "перманентно временной" или же "конфигурируемо временной" нет никакой разницы, то зачем их вообще как-то отделять друг от друга?

Т.е., с точки зрения Best Practices разница таки есть. Раз специально предусмотрено их выделение в отдельную "группу". Причем разделение сделано таким образом, чтобы максимально удалить их друг от друга. Разнести в AOT "по разным углам"

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Ни разу это не другой тип объектов: свойства, поля, индексы, методы - все то же самое.
То, что сейчас набор свойств временной таблицы совпадает с набором свойств обычной таблицы не означает, что так и должно быть. Если бы временные таблицы выделили в отдельную ветку AOT, то, очевидно, часть свойств просто выбросили бы в виду их бессмысленности для временных таблиц.

Ну, например, какой смысл для временных таблиц в свойствах Created... и Modified...? А свойство CacheLookup? Вызывает большое сомнение необходимость ключей для временных таблиц. Да Ваши же собственные слова о том, что часть свойств не указывается для временных таблиц! В общем, есть что повыбрасывать...

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Раньше времянки еще в базе не хранились, так в 2012-й появился тип временных таблиц, хранящихся в tempdb - и где же другой тип?
Ну, это не серьезно. Вы действительно считаете что временные таблицы MS SQL тот же самый объект, что и постоянные? То, что временные таблицы "свопятся" в базу временных данных MS SQL никак не означает, что это постоянные таблицы. Это просто технология хранения временных данных.

И, кстати, фраза "тип временных таблиц" звучит многообещающе! Временные таблицы уже начали и по типам делиться?

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Стоит напомнить также, что с точки зрения Dict-классов Map, View, обычная и временная таблица отличаются друг от друга лишь парой свойств. "Не умножайте сущности без необходимости".
Проблема в том, что сущности уже сейчас "умножены без необходимости". Для временных таблиц часть свойств - лишние.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Еще одна ценность следованию Best Practices - облегчение другим программистам, знакомым с ними, понимание кода и вообще модификаций, хотя насколько эта возможность ценна, каждый решает для себя сам.
Проблема в том, что следование рекомендациям Best Practices в данном случае - усложняет поиск нужных объектов в AOT. Это подробно обсуждалось в теме про префиксы.

Выделение Tmp в начало приводит к тому, что постоянная таблица и временная таблица сделанная по ее "образцу" (или логически связанная) оказываются далеко разнесенными друг от друга в AOT. Т.е., например, при внесении изменений в постоянную таблицу можно просто забыть изменить еще и временную (если это необходимо, конечно)

Да и вообще, именование временных таблиц выбивается из общей схемы именования объектов AOT. Т.е. нужно заранее знать, что ищем именно временную таблицу. Следовательно, с точки зрения Best Practices - это все-таки отдельный объект! Отдельная сущность.