Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
Sparklz
Member

Откуда:
Сообщений: 19
Есть таблица Персоны(с ключом - id) и есть таблицы Агенты, Застройщики, Клиенты, которые должны наследовать свойства первой. При этом их столбцы id - должны быть уникальными во всех трех. Как это реализовать?
25 май 17, 21:12    [20512906]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33700
Блог
https://msdn.microsoft.com/ru-ru/library/ff878091.aspx
25 май 17, 21:18    [20512921]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33700
Блог
вы ООП что-ли хотите применять при проектировании БД?
25 май 17, 21:18    [20512924]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
Sparklz
Member

Откуда:
Сообщений: 19
Критик, ну да. Потому что в этих трех таблицах много общих свойств. Не понимаю как использовать последовательность в создании уникальных идентификаторов для таблиц. Для профана объясните поподробнее пожалуйста.
26 май 17, 08:49    [20513447]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20538
Sparklz
есть таблицы Агенты, Застройщики, Клиенты, которые должны наследовать свойства первой. При этом их столбцы id - должны быть уникальными во всех трех.
Ну то есть Вы даже мысли не допускаете, что Агент может быть ещё и Клиентом, например... а зря.

Sparklz
в этих трех таблицах много общих свойств.
И они, надо понимать, располагаются в таблице Персоны, а то, что индивидуально для типа - в соответствующей частной таблице.
Если так - то какая тебе разница, дублируются частные данные для одной персоны или нет? лишняя запись? да сколько она съест, та запись... а вот констрейнт, чтобы блюсти эту уникальность и не позволять таких дублей, встанет в копеечку - и по коду, и по исполнению (не, я понимаю, что при интерактивном вводе это ерунда, но сам факт...). А без констрейнта, чисто на доверии - так ведь оно и вручную поправить можно так, что плакала твоя "целостность", а подсистема контроля даже не пошевелится.

Имхо - плюнь ты на эту "уникальность", толку с неё ноль (всё равно отображать или обрабатывать ты будешь только тот частный блок, который в данный момент нужен).
26 май 17, 08:59    [20513460]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
Sparklz
При этом их столбцы id - должны быть уникальными во всех трех.
Можно сделать в Персонах поле "тип", включить его в ПК.
В подчинённых таблицах тоже сделать такой же составной ПК
Ну и сделать в подчинённых таблицах констрейны на значение типа.

Второй вариант, без составного ПК - сделать диапазоны значений ключа. Первые 100 миллионов - Агенты, вторые - Застройщики и т.д.
И опять же в подчинённых таблицах чек констрейны на занчения.
26 май 17, 10:27    [20513725]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность идентификатора в разных таблицах, наследованных от одной  [new]
Владислав Колосов
Member

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

таблицы представления Агенты, Застройщики, Клиенты, которые должны наследовать свойства выбирать записи первой
26 май 17, 11:21    [20513992]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить