Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Есть стандартная связь User-UserRoles-Roles. Вопрос, чем грозит подмена PK в таблице UserRoles (UserID, RoleID) на пару PK(UserRoleID) + unique index(UserID, RoleID)? По теории получается т.н. Non-identifying relationship. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 14:19 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Ну я обычно так и делаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 14:56 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Ничем особым не грозит. Только некрасивостью структуры - лишним сурроатным ключом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 14:59 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
НАсколько понял, связку Код: plaintext Вы хотите создать для быстрого поиска по имени пользователя? лучше создайте для этого дополнительный индекс. Возможно место будет и больше занимать(но не факт), но красивее будет точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2004, 19:14 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Нет, здесь именно подмена PK(UserID,RoleID) на ключ, состоящий из одного поля - UserRoleID плюс альтернативный ключ (уник. индекс ) АК(UserID,RoleID) Подобная же практика сделана для всех FK таблиц - подмена какого-нить (OrderId(FK),LineNo) на PK(LineID) + AK(OrderId(FK),LineNo). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 09:31 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
структура PK(UserRoleID) + unique index(UserID, RoleID) нужна когода хочешь, что бы на эту таблицу кто-то ссылался (по UserRoleID), иначе структура должна быть PK(UserID, RoleID) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 12:30 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
авторPK(UserRoleID) + unique index(UserID, RoleID) нужна когода хочешь, что бы на эту таблицу кто-то ссылался (по UserRoleID) А что, этому кому-то религия не позволяет ссылаться по составному ключу (UserID, RoleID)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 13:17 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2ЛП Да! Именно так! Это - вопрос скорее религии, чем чего-то еще ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 13:45 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
А что, этому кому-то религия не позволяет ссылаться по составному ключу (UserID, RoleID)? Да! Именно так! Это - вопрос скорее религии, чем чего-то еще ;-))) Да это не совсем вопрос религии, это теор. вопрос - хотите, что бы у вас хранились избыточные данные, пожайлуста делайте составной ключ, особенно это будет заметно, если у вас на эту таблицу ссылаются более 2ух таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 14:34 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2 bas\r Избыточные данные - это как раз введение суррогатного ключа\r А уж использование (для ссылок) суррогатного ключа вместо естественного - легко может привести к нежелательным артефактам. Вспомни топик Нормальные формы - там именно использование составного ключа (в таблице IDXS) избавляло от артефактов, имеющим место быть при нарушениях 4НФ\r \r Так что это действительно вопрос не религии, а теории. Если с таблицей связей нет и не будет - да хоть какой ключ. Если связи есть - уже надо смотреть, что это за связи такие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 14:52 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
А уж использование (для ссылок) суррогатного ключа вместо естественного - легко может привести к нежелательным артефактам. Вспомни топик Нормальные формы - там именно использование составного ключа (в таблице IDXS) избавляло от артефактов, имеющим место быть при нарушениях 4НФ Не хочется вспоминать - слишком много пришлось писать.... В том топике шла речь о сурогатном ключе(ссылки) из одной таблицы, что как раз получиться если таблица будет ссылаться на таблицу-связку по составному ключу, т.е. t1(t1_id), t2(t2_id) t3(t1_id, t2_id) t4(t4_id, t1_id, t2_id, text) -- вот это уже нарушение как раз получается, если следовать тому топику а если сделать так: t1(t1_id), t2(t2_id) t3(t3_id, t1_id, t2_id) t4(t4_id, t3_id, text) -- то все нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 16:03 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Так... Все это весьма спорно. Мне думается, что применительно к данному топику не следует забывать еще про unique index(UserID, RoleID). если сделать так: t1(t1_id), t2(t2_id) t3(t3_id, t1_id, t2_id) t4(t4_id, t3_id, text) -- то все нормально Если t4 зависит от t3, то получается, что t3 - самоценная сущность, и у нее должен быть собственный ключ... С другой стороны, если t3 не рассматривается как самостоятельная сущность, а служит только своей единственной цели обеспечить M:M... t1(t1_id), t2(t2_id) t3(t1_id, t2_id) t4(t4_id, t1_id, t2_id, text) -- вот это уже нарушение как раз получается, если следовать тому топику - то это все построение или вырождается в t1(t1_id), t2(t2_id) t3(t1_id, t2_id, text) или же t4 можно рассматривать как не зависимую от t3 сущность, которая существует наравне с t3 и, кстати, если есть t4_unique_index(t1_id, t2_id), вырождается в t3-подобие. ;-) Так же завися (или завиша ;-))) только от t1 и t2. С другой стороны, действительно, в процессе проектирования t3-подобные таблицы имеют неприятное свойство "внезапно" становиться самостоятельными сущностями, поэтому себе дешевле заранее запланировать суррогатный ключ типа t3_id. Вот и вся религия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 16:48 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2 bas авторt4(t4_id, t1_id, t2_id, text) -- вот это уже нарушение как раз получается, если следовать тому топику Откуда нарушение???????? Исходя из чего? если бы было Код: plaintext 1. 2. 3. 4. то было бы нарушение в t5 - при условии, что в t5 ссылка на t3 должна относится к тому же самому t1. если такого условия нет - то нарушения нихт. можно ссылаться по чему угодно. если условие есть - то дефект лечится именно структурой t5(t4_id, t1_id, t2_id) со связями c t4 по t4_id, t1_id и с t3 по t1_id, t2_id. и в этом случае t3_id не нужен, бесполезен и вреден. Запланировать его можно, а использовать для ссылок - нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 17:06 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2ЛП t5(t4_id, t1_id, t3_id) Так... А так делать не надо. С самого начала видно, что если t5 зависит от t3, то она уже зависит и от t1. (Если вспомнить топик про нормализацию, получается, что если поля в индексе зависят от суррогатного ключа индекса, то это автоматом делает их связанными с таблицей, на которой этот индекс (и тогда вязать с t1 не надо), а если, как в том топике, ключ был не суррогатный, то указанного построения здесь и не возникает ;-)). Вообще говоря, теорию мне тоже надо бы перечитать, но использовать суррогатные ключи я вряд ли перестану - даже если тем самым и буду рисковать нарушить 4НФ ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 18:14 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
С самого начала видно, что если t5 зависит от t3, то она уже зависит и от t1 Да вот как раз не видно. Ссылки на t3 и t1 - могут быть независимыми аттрибутами t5. А могут быть и зависимыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 18:26 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Сейчас нет время (и охоты) писать много и убеждать, как должно быть по теории (может я в чем и сам не прав).... ЛП, ты говоришь что всегда надо ссылаться по сурогатному ключу, но а если есть такая структура, ты то же все по составному ключу будешь делать??? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2004, 18:45 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2 bas ЛП, ты говоришь что всегда надо ссылаться по сурогатному ключу матьматьмать факфакфак епт слов нет, одни эмоции остались Я НЕ ГОВОРЮ ЧТО НАДО ССЫЛАТЬСЯ ПО СУРОГАТНОМУ КЛЮЧУ !!! я говорю как раз наоборот матьматьмать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 10:18 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
ЛПЯ НЕ ГОВОРЮ ЧТО НАДО ССЫЛАТЬСЯ ПО СУРОГАТНОМУ КЛЮЧУ !! bas...ты говоришь что всегда надо ссылаться по сурогатному ключу... Извиняюсь, по естесвенному ключу имелось ввиду.... Вот статья на эту тему, немного не наш случай, но объясняют, почуму надо использовать сурогатн. ключ и в чем его приемущества, так же сдесь интересен вопрос про НФ: Естественные ключи против искусственных ключей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 11:58 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2 bas Твоей бы ссылкой - да разработчиков аксапты по харе А то эти уроды все идентификаторы хранят в текстовых полях. Причем даже если это число - приводят к тексту и хранят как текст. И естественные ключи используют, так что переименование единицы измерения вызывает каскадное обновление всех таблиц. Руки оборвать по самую жопу. Но статья мало относится к теме обсуждения. Против таких суррогатных ключей - нечего возразить. А вот заменять составной первичный ключ суррогатным - это бред имхо. Мне вот в наследство база досталась, так ее разработчик видать эту статью прочитал и воспринял как руководство к действию. Научи дурака богу молиться... Пять таблиц, последовательно связанные отношениями один-ко-многим - и везде ключи-счетчики... Поубивал бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 13:38 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
P.S. Но и всегда использовать только составные ключи - тоже бред. У меня вон недавно в подобной связке (t1_id, t2_id) одно поле стало необязятельным. Использовал бы составной ключ для связи - была бы развлекуха. В общем эта... По ситуации смотреть надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 13:52 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
ЛП, ладно закончим на этом, главное, на что я надеюсь, что автор понял, что в его случае не нужен сурогатный ключ. А мы с тобой и так знаем как и что в каких ситуациях делать и спорить из-за неодназначной ситуации и раздувать флейм на 10 страниц нет времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 14:58 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
bas&Urri правы - несоставной (именно несоставной - суррогатным он быть не обязан) ключ имеет смысл ввести если эта таблица не просто реализует связь - но, так же, соответствует какой-то сущности в системе. ЛП Про разработчиков Axapt'ы - смешно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 17:53 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Вся фигня в том, что у меня в базе везде такие синтетические ключи - счетчики. В итоге Order - OrderLine связаны только через FK и строки заказа нумеруются насквозь через Identity. Я объяснить не смог, что это бред :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2004, 16:18 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
Кому объяснить не смог??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2004, 16:23 |
|
||
|
Синтетический ключ для таблицы many-to-many
|
|||
|---|---|---|---|
|
#18+
2 Романыч Вся фигня в том, что у меня в базе везде такие синтетические ключи - счетчики. В итоге Order - OrderLine связаны только через FK и строки заказа нумеруются насквозь через Identity. Я объяснить не смог, что это бред :-( Я тоже не понимаю почему это бред - поясни Понимаю, что можно делать по разному, но почему бред ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2004, 16:34 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32441980&tid=1546569]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 338ms |
| total: | 616ms |

| 0 / 0 |
