Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
Добрый день. Есть мысль и хочу убедиться в его рациональности или наоборот. Чтобы не вышло проблемы X-Y опишу подробно: Есть СУБД MS SQL. В Ней таблицы, допустим, Сырье, Упаковка, Трудозатраты с одинаковой структурой: id int increment name nvarchar(50) и есть таблица калькуляций: КалькуцияСырья, КалькуляцияУпак, КалькуляцияТруд. с Внешними ключами на вышеуказанные справочники. Хочу переделать справочники с использованием GUID id uniqueidentifier name nvarchar(50) и сделать одну таблицу Калькуляция, где внешний ключ связан с этим GUID и использовать его в unner join к union всех этих трех справочников. На сколько такое решение имеет право на жизнь? как это повлияет на скорость выполнения запросов? возможны ли коллизии? |
13 янв 17, 13:24 [20102510] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
Vitalic_Hekto, все уходят от giud а вы решили к ним придти:) очередной валисапед |
13 янв 17, 13:31 [20102554] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
кто уходит? куда? почему? |
||
13 янв 17, 13:33 [20102564] Ответить | Цитировать Сообщить модератору |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
WarAnt, Если уходят для уменьшения размера базы и скорости вставки, то это не сильно критично для меня. Размеры справочников не слишком большие. Пара тысяч строк. Таблица Калькуляция будет немного побольше. Insret будет не слишком частым...все таки не трейдинговая компания :) |
13 янв 17, 13:39 [20102596] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
а цель то какая этого? |
||
13 янв 17, 13:42 [20102613] Ответить | Цитировать Сообщить модератору |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
Очень жаль что это будет не полноценный foreign key. И проверку целостности придется решать подручными средствами. |
13 янв 17, 13:42 [20102615] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
в чем тогда вопрос состоит? |
||
13 янв 17, 13:42 [20102617] Ответить | Цитировать Сообщить модератору |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
TaPaK, Не придется плодить таблиц. Логика клиентского приложения тоже попроще будет. Не надо будет делать вкладки или менять источники данных. |
13 янв 17, 13:44 [20102626] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Vitalic_Hekto, бред какой-то... сделайте в таблице калькуляция 2 поля СырьёИД, УпаковкаИД итдИД FK ключи и вперёд |
13 янв 17, 13:45 [20102630] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
Vitalic_Hekto, не слишком хорошее решение, т.к. Вы не можете гарантировать, что не появятся новые атрибуты, специфичные для Сырье, Упаковка, Трудозатраты. |
13 янв 17, 13:45 [20102637] Ответить | Цитировать Сообщить модератору |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
TaPaK, Этот вариант тоже рассматривал. В принципе все равно потом union делать. Спасибо за наставления :) |
13 янв 17, 13:49 [20102663] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
какой в ж... union... удачи |
||
13 янв 17, 13:50 [20102667] Ответить | Цитировать Сообщить модератору |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
TaPaK, чтобы вывести общую карточку по калькуляции. Будет все те же три запроса каждый к своему справочнику, только в этом случае нормализированый по ФК. а дальше собрать воедино |
13 янв 17, 13:53 [20102685] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
id int increment record_type tinyint name nvarchar(50)И в "Калькуляция" аналогично. Соответственно, FK будет по двум столбцам. |
||
13 янв 17, 13:56 [20102713] Ответить | Цитировать Сообщить модератору |
Vitalic_Hekto Member Откуда: Сообщений: 60 |
invm, спасибо, отличная мысль! :) |
13 янв 17, 13:57 [20102730] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |