Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Миграция ключей / 22 сообщений из 22, страница 1 из 1
27.12.2006, 17:52
    #34228762
schauma
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
Добрый день или вечер (За окном темно).
Помогите, пожалуйста.
Есть три таблицы В каждой составной ключ. ПРичем атрибуты этого ключа сами по себе не уникальны(id, eff_start_date, eff_end_date), а уникален только сам составной ключ.
Как сделать так чтобы при миграции в дочернюю таблицу мигрировал только id
...
Рейтинг: 0 / 0
27.12.2006, 18:23
    #34228841
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
что ж в ней дочернего, если она не включает ключ родителя?
Просто перетащите атрибут не создавая ER-связи.
...
Рейтинг: 0 / 0
27.12.2006, 18:51
    #34228908
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
> В каждой составной ключ

Меняйте дизайн. Это плохое решение.
...
Рейтинг: 0 / 0
28.12.2006, 10:14
    #34229625
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
guest_20040621> В каждой составной ключ

Меняйте дизайн. Это плохое решение.А может и нормальное. Судя по названиям полей это что-то темпоральное / журнальное. Возможно, "дочерняя" таблица логически связана с данной условием на даты (например дата дочки должна попадать в диапазон дат родителя) и введение суррогата ничем не помогает - процедурный контроль диапазонов остается.
...
Рейтинг: 0 / 0
28.12.2006, 10:38
    #34229715
schauma
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
забыла для наглядности картинку приложить
...
Рейтинг: 0 / 0
28.12.2006, 11:20
    #34229881
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
Поищите про темпоральные (исторические) базы данных.
На поверхности:
1)Имена лучше давать в одном стиле - раз адрес и контакт, то человек а не люди.
2)Факт существования объекта и его история - разные сущности.
Историю можно фиксировать как журнал событий, изменящих данные, или как статусы за период.
People -> Pesron(неизменеямые со временем данные) + PersonStatus(изменяемые).
3)Для PersonStatus логично иметь в ключе дату начала, но не дату окончания периода, иначе сам ключ уже допускает два периода, начинающиеся с одной даты.

Далее, связи между темпоральными сущностями могут быть постронеы по-разному:
должна ли скажем история адреса быть синхронизирована с PersonStatus или она независима от него и родителем для нее является Person?
...
Рейтинг: 0 / 0
28.12.2006, 12:13
    #34230083
schauma
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
ModelRПоищите про темпоральные (исторические) базы данных.
На поверхности:
1)Имена лучше давать в одном стиле - раз адрес и контакт, то человек а не люди.
2)Факт существования объекта и его история - разные сущности.
Историю можно фиксировать как журнал событий, изменящих данные, или как статусы за период.
People -> Pesron(неизменеямые со временем данные) + PersonStatus(изменяемые).
3)Для PersonStatus логично иметь в ключе дату начала, но не дату окончания периода, иначе сам ключ уже допускает два периода, начинающиеся с одной даты.

Далее, связи между темпоральными сущностями могут быть постронеы по-разному:
должна ли скажем история адреса быть синхронизирована с PersonStatus или она независима от него и родителем для нее является Person?

Замечания приняла. По поводу состава таблицы
набазу новую запись " 123-Иванова Ирина Владимировна - 01.01.06 - (здесь пишится максимальаня дата)".
Затем девушка выходит замуж и меняет фамилию ,и для того чтобы не заводить новый ID Делаем так "123 - Иванова Ирина Владимировна - 01.01.06 - 30.05.06"
создается новая запись
"123 - Петрова Ирина Владимировна - 30.05.06 - (и опять же макс. дата)"
А в адресе и контакте нужен только ID для внешнего ключа
...
Рейтинг: 0 / 0
28.12.2006, 13:38
    #34230339
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
> А может и нормальное.

Очень сильно вряд ли. Я не могу придумать структуры, для которой составной ключ мог бы быть единственно правильным решением.
...
Рейтинг: 0 / 0
28.12.2006, 13:40
    #34230354
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
> По поводу состава таблицы

Кривовато Вы задачу решили. Подумайте о декомпозиции.
...
Рейтинг: 0 / 0
28.12.2006, 15:41
    #34230862
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
guest_20040621> А может и нормальное.

Очень сильно вряд ли. Я не могу придумать структуры, для которой составной ключ мог бы быть единственно правильным решением.А у меня вызывают подозрения структуры, где в каждой таблице единственное ограничение уникальности ID <тип> Pimary key.
...
Рейтинг: 0 / 0
28.12.2006, 16:22
    #34230987
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
> А у меня вызывают подозрения структуры, где в каждой таблице единственное ограничение
> уникальности ID <тип> Pimary key.

Это стандартная, удобная, переносимая, однозначная идентификация. Должны быть очень веские причины, чтобы отказаться от такой схемы. Я таких причин не знаю; более того, их наличие склонен рассматривать как кривые руки архитектора.
...
Рейтинг: 0 / 0
28.12.2006, 16:55
    #34231072
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
2 guest_20040621 Вы обратили внимание на слово единственное?
...
Рейтинг: 0 / 0
28.12.2006, 17:16
    #34231138
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
ModelRА у меня вызывают подозрения структуры, где в каждой таблице единственное ограничение уникальности ID <тип> Pimary key.
А что еще м.б. Pimary key ? ИНН, ФИО, паспорт, номер документа ? Все это не надежно, а потому неверно.
...
Рейтинг: 0 / 0
28.12.2006, 17:23
    #34231166
schauma
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
У меня единственный вопрос, есть ли такая функция которая отключает мигрирование всех атрибутов (мне нужно чтобы мигрировал только ID)
...
Рейтинг: 0 / 0
28.12.2006, 17:41
    #34231217
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
> Вы обратили внимание на слово единственное?

;) Да. Фишка imho в том, что стандартный primary key - "архитектурная" гарантия уникальности, прочие ограничения уникальности - структурные, логические; т. е. я бы их не рассматривал на том же уровне, что и первичные ключи. Впрочем, это нюансы; формально возражений нет.
...
Рейтинг: 0 / 0
28.12.2006, 18:49
    #34231372
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
schaumaУ меня единственный вопрос, есть ли такая функция которая отключает мигрирование всех атрибутов (мне нужно чтобы мигрировал только ID)Нет
...
Рейтинг: 0 / 0
28.12.2006, 18:54
    #34231380
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
модА что еще м.б. Pimary key ? ИНН, ФИО, паспорт, номер документа ? Все это не надежно, а потому неверно.Кто сказал Pimary ? уникальный. Для Person действительно ничего. А для PersonStatus пара (PersonId,StartDate) обязана быть уникальной. Вне завизимости, создан ли Primary PersonStatusId.
...
Рейтинг: 0 / 0
29.12.2006, 01:57
    #34231735
Миграция ключей
schaumaДобрый день или вечер (За окном темно).
Помогите, пожалуйста.
Есть три таблицы В каждой составной ключ. ПРичем атрибуты этого ключа сами по себе не уникальны(id, eff_start_date, eff_end_date), а уникален только сам составной ключ.
Как сделать так чтобы при миграции в дочернюю таблицу мигрировал только id
Если есть уникальный id, зачем тогда в первичном ключе остальные атрибуты? Если id не уникален, тогда зачем он там? Если же id не уникален?!, тогда нельзя его использоват в качестве форин кея в другой таблице..
...
Рейтинг: 0 / 0
29.12.2006, 10:09
    #34232047
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
ModelR А для PersonStatus пара (PersonId,StartDate) обязана быть уникальной.
А вот это интересный вопрос. PersonStatus можно трактовать как факт изменения статуса, тогда этот факт должен иметь собственный ID, не зависящий от StartDate. А контроль уникальности (PersonId,StartDate) - это дополнительная фича - может быть, а может и не быть.
...
Рейтинг: 0 / 0
29.12.2006, 10:44
    #34232155
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
мод ModelR А для PersonStatus пара (PersonId,StartDate) обязана быть уникальной.
А вот это интересный вопрос. PersonStatus можно трактовать как факт изменения статуса, тогда этот факт должен иметь собственный ID, не зависящий от StartDate. Приведен был именно вариант статуса, не журнала событий (было бы PersonEvent):
авторИсторию можно фиксировать как журнал событий, изменящих данные, или как статусы за период.
People -> Pesron(неизменеямые со временем данные) + PersonStatus(изменяемые).А почему факт должен иметь собственный ID? Может, это 100% терминал и ссылок на него не бывает. модА контроль уникальности (PersonId,StartDate) - это дополнительная фича - может быть, а может и не быть.В контексте задачи ИМХО разные фамилии на одну дату - нонсенс. Хранение нонсенса как фича?
...
Рейтинг: 0 / 0
29.12.2006, 10:55
    #34232189
мод
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
ModelRА почему факт должен иметь собственный ID? Может, это 100% терминал и ссылок на него не бывает.
Собственно это и есть самое интересное. Я для себя взял за правило: всегда заводить ID в любой таблице. Как показала практика, ссылки рано или поздно, но появляются. Так зачем думать там где думать вредно - действуй по шаблону и все будет нормально.
...
Рейтинг: 0 / 0
29.12.2006, 14:42
    #34232847
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Миграция ключей
Согласен.
Наверно, большинство (я тоже) следует этому правилу.
Но есть еще одно - декларировать уникальность естественных ключей, если таковые имеются.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Миграция ключей / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]