Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
КурдльИ что значит "может измениться"? Ну да - в данном примере физ.лиц может лишиться гражданства или вступить в другое. И что за проблема? Удаляется одна запись и создаётся другая. Это вы сейчас думаете, что вам не нужна история, или что её можно просто удалить, через некоторое время окажется по-другому. Думать лучше не о том, как нажать поменьше кнопок при составлении модели, а о том, чтобы получить лучший результат. Почему результат получится хуже, уже достаточно всякой информации приведено, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 16:55 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
SvDevЭто вы сейчас думаете, что вам не нужна история, или что её можно просто удалить, через некоторое время окажется по-другому. Думать лучше не о том, как нажать поменьше кнопок при составлении модели, а о том, чтобы получить лучший результат. Почему результат получится хуже, уже достаточно всякой информации приведено, имхо. Мне пофиг, сколько кнопок нажимать - я не ленивый. Мне важно, чтобы логическая модель была максимально корректной и соответствующей предметной области. Минимальное "ручное вмешательство" в физическую модель избавляет меня от ошибок проектирования. Вариантность данных во времени - серьезное бизнес-требование. Если его моделировать каждый раз "на всякий случай", OLTP-стсиемы требовали бы в 10 раз больше дискового пространства. Однако для меня не очевиден Ваш постулат о том, что моя модель помешает накоплению истории. Добавьте к 2-м полям составного ключа третье - типа "Дата окончания актуальности"... Есть и другие паттерны вариантности во времени, которые также не требуют суррогатного ключа с одним полем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 17:22 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
Курдль, в чём сыр бор? В том чтобы добавить в таблу ещё PK: ГражданствоID_ФизЛицо numberГражданство varchar(2) со значениями ru\ka\gu\ss\kk Хотите, добавляйте. Хотите - нет. Если tabular работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 17:37 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
КурдльОднако для меня не очевиден Ваш постулат о том, что моя модель помешает накоплению истории. Добавьте к 2-м полям составного ключа третье - типа "Дата окончания актуальности"... Есть и другие паттерны вариантности во времени, которые также не требуют суррогатного ключа с одним полем. "Дата окончания актуальности" нельзя будет добавить в часть ключа, т.к. поле будет null-able, к тому же перестанут работать все DML (Например, delete будет удалять 2 записи, вместо одной, а select выбирать 2, вместо одной). Код: plsql 1. Это как раз тот пример, когда места будет занимать скорее меньше, чем больше. Достаточно оценить вероятность появления подчиненной таблицы (в кот., например, будет в 10 раз больше записей) и насколько меньше она будет занимать места с простым ключом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 18:11 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
SvDev"Дата окончания актуальности" нельзя будет добавить в часть ключа, т.к. поле будет null-able, к тому же перестанут работать все DML (Например, delete будет удалять 2 записи, вместо одной, а select выбирать 2, вместо одной). Я взрослый мальчик. И в проектировании БД не первый год. У меня в рукаве всегда есть паттерны, однозначно приводящие к успешному результату. Тот способ, что привёл в пример я, придуман не мной, но он как раз один из тех. Достаточно полю EXPIRE_DATE, являющемуся частью композитного ПК, присваивать при создании новой записи значение "31/12/9999". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 20:03 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
Если впиливать в ТЗ и Модель требование: Дата актуальности или Признак актуальности записи, то это вообще оффтоп. Т.к. там будет полное перепроектирование вплоть до OLAP\OLTP. Удачи ТС! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 20:13 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
Курдль, Вот и даты 31/12/9999 пошли... Кроме кучи мороки и пакостей от составных ключей, ничего полезного я от них не видел. Кроме тех аргументов, которые опровергаются. Из недостатков (при наличии составных внешних ключей и не только): - потребляют лишнее место - больше кода, который требует большего сопровождения - плохие планы запросов - хуже производительность - проблемы с модификацией строки - большие проблемы при изменении условий уникальности (что явление не редкое при доработке системы) - могут быть проблемы с отслеживанием истории изменения строки в аудите. - куча проблем при разработке интерфейса в приложениях, которые будут работать с такой БД (нужно выбирать несколько идентификаторов, вместо одного) под что многие компоненты не заточены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2017, 21:19 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
Благодаря этой теме еще раз убедился в необходимости сурогатных ключей. КурдльМне важно, чтобы логическая модель была максимально корректной и соответствующей предметной области. Минимальное "ручное вмешательство" в физическую модель избавляет меня от ошибок проектирования. Если CASE настроен правильно, при формировании логической модели, в физическую никаких правок не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 09:57 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
blkangelБлагодаря этой теме еще раз убедился в необходимости сурогатных ключей. Если CASE настроен правильно, при формировании логической модели, в физическую никаких правок не надо. Такого быть не может, как ничего идеального. :) Иначе Вы потратите больше времени на настройку, чем на результат. Приведу пример на модели со сделкой, в которой несколько участников. Case-инструмент, скорее всего, сгенерирует FK для сделки типа SUBJ_ID_1 SUBJ_ID_2 SUBJ_ID_3 SUBJ_ID_4 А вам по naming style положено называть SUBJ_ID_CRED SUBJ_ID_BORR SUBJ_ID_GTEE SUBJ_ID_GTOR Так что придется вмешаться ручками. Можно, конечно, обзывать осмысленными именами referenses, и настроить CASE на использование части их имен в имени поля. Но найдутся и другие грабли несоответствия лог. модели и физ. модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 12:29 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
КурдльblkangelБлагодаря этой теме еще раз убедился в необходимости сурогатных ключей. Если CASE настроен правильно, при формировании логической модели, в физическую никаких правок не надо. Такого быть не может, как ничего идеального. :) Иначе Вы потратите больше времени на настройку, чем на результат. Приведу пример на модели со сделкой, в которой несколько участников. Case-инструмент, скорее всего, сгенерирует FK для сделки типа SUBJ_ID_1 SUBJ_ID_2 SUBJ_ID_3 SUBJ_ID_4 А вам по naming style положено называть SUBJ_ID_CRED SUBJ_ID_BORR SUBJ_ID_GTEE SUBJ_ID_GTOR Так что придется вмешаться ручками. Можно, конечно, обзывать осмысленными именами referenses, и настроить CASE на использование части их имен в имени поля. Но найдутся и другие грабли несоответствия лог. модели и физ. модели. Вы же физическое название полей прописываете, почему не прописать название FK ключа, это не настройка. Привели редчайший случай. А откуда у вас сурогатный ключ, какой то subj_id? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 13:39 |
|
||
|
Custom MRU. Как отличить новую запись TF от старой не по PK (Null\Not Null)?
|
|||
|---|---|---|---|
|
#18+
blkangel, Пример тиснул с какого-то обучающего слайда, поэтому там не видны атрибуты сущностей типа идентификаторов с кодом subj_id, deal_id ... ОДнако в большинстве CASE-инструментов проектирования БД в логической модели FK и их поля не указываются. Подразумевается, что они есть, раз есть relationship. А вот при генерации физ.модели из логической, инструмент генерит и наименования полей для FK. И тут уж - как его настроишь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 14:00 |
|
||
|
|

start [/forum/topic.php?fid=50&msg=39394941&tid=1874441]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 367ms |

| 0 / 0 |
