Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 GUID внешний ключ на несколько таблиц  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Vitalic_Hekto,

все уходят от giud а вы решили к ним придти:) очередной валисапед
13 янв 17, 13:31    [20102554]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
WarAnt
Vitalic_Hekto,

все уходят от giud а вы решили к ним придти:) очередной валисапед

кто уходит? куда? почему?
13 янв 17, 13:33    [20102564]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Vitalic_Hekto
Member

Откуда:
Сообщений: 60
WarAnt,
Если уходят для уменьшения размера базы и скорости вставки, то это не сильно критично для меня.
Размеры справочников не слишком большие. Пара тысяч строк. Таблица Калькуляция будет немного побольше. Insret будет не слишком частым...все таки не трейдинговая компания :)
13 янв 17, 13:39    [20102596]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Vitalic_Hekto
WarAnt,
Если уходят для уменьшения размера базы и скорости вставки, то это не сильно критично для меня.
Размеры справочников не слишком большие. Пара тысяч строк. Таблица Калькуляция будет немного побольше. Insret будет не слишком частым...все таки не трейдинговая компания :)

а цель то какая этого?
13 янв 17, 13:42    [20102613]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Vitalic_Hekto
Member

Откуда:
Сообщений: 60
Очень жаль что это будет не полноценный foreign key. И проверку целостности придется решать подручными средствами.
13 янв 17, 13:42    [20102615]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Vitalic_Hekto
WarAnt,
Если уходят для уменьшения размера базы и скорости вставки, то это не сильно критично для меня.
Размеры справочников не слишком большие. Пара тысяч строк. Таблица Калькуляция будет немного побольше. Insret будет не слишком частым...все таки не трейдинговая компания :)


в чем тогда вопрос состоит?
13 янв 17, 13:42    [20102617]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Vitalic_Hekto
Member

Откуда:
Сообщений: 60
TaPaK,
Не придется плодить таблиц. Логика клиентского приложения тоже попроще будет. Не надо будет делать вкладки или менять источники данных.
13 янв 17, 13:44    [20102626]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Vitalic_Hekto,

бред какой-то... сделайте в таблице калькуляция 2 поля СырьёИД, УпаковкаИД итдИД FK ключи и вперёд
13 янв 17, 13:45    [20102630]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9161
Vitalic_Hekto,

не слишком хорошее решение, т.к. Вы не можете гарантировать, что не появятся новые атрибуты, специфичные для Сырье, Упаковка, Трудозатраты.
13 янв 17, 13:45    [20102637]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Vitalic_Hekto
Member

Откуда:
Сообщений: 60
TaPaK,
Этот вариант тоже рассматривал. В принципе все равно потом union делать.
Спасибо за наставления :)
13 янв 17, 13:49    [20102663]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Vitalic_Hekto
TaPaK,
Этот вариант тоже рассматривал. В принципе все равно потом union делать.
Спасибо за наставления :)

какой в ж... union... удачи
13 янв 17, 13:50    [20102667]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Vitalic_Hekto
Member

Откуда:
Сообщений: 60
TaPaK,
чтобы вывести общую карточку по калькуляции. Будет все те же три запроса каждый к своему справочнику, только в этом случае нормализированый по ФК. а дальше собрать воедино
13 янв 17, 13:53    [20102685]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Vitalic_Hekto
Есть СУБД MS SQL. В Ней таблицы, допустим, Сырье, Упаковка, Трудозатраты с одинаковой структурой:
id int increment
name nvarchar(50)
Сделайте
id int increment
record_type tinyint
name nvarchar(50)
И в "Калькуляция" аналогично. Соответственно, FK будет по двум столбцам.
13 янв 17, 13:56    [20102713]     Ответить | Цитировать Сообщить модератору
 Re: GUID внешний ключ на несколько таблиц  [new]
Vitalic_Hekto
Member

Откуда:
Сообщений: 60
invm,
спасибо, отличная мысль! :)
13 янв 17, 13:57    [20102730]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить