powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Шаблоны применения
25 сообщений из 57, страница 2 из 3
Шаблоны применения
    #35702649
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_LЯ тут говорил про смену фамилии потому, что интересно как это реализуют другие. Честно скажу, лень расписывать по шаблону автора топика, но идея такая.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table Person(
  idPerson  int, -- PK
  Surname  varchar( 30 ),
  Name  varchar( 20 ),
  Secname varchar( 25 ),
  idPrevious int, -- FK
  StartDate  dateTime
)


Если убрать сурогатный обвес, то останется

Код: plaintext
1.
2.
3.
4.
create table Person(
  Surname  varchar( 30 ),
  Name  varchar( 20 ),
  Secname varchar( 25 )
)

Т.е. таблица, состоящая из одного только первичного ключа. Такие таблицы как правило не нужны совсем. Да и не Person это на самом деле. Это скорее Person_ID, коих у реального человека может быть много (ФИО на национальном языке, девичья ФИО, ФИО в n'ом браке, ФИО в загранпаспорте МВД, ФИО в загранпаспорте МИД, ФИО в международном водительском удостоверении, ФИО в авиабилете билете (допускают три ошибки), ...).
Если речь о том, чтобы длинным значениям (Surname, Name, Secname) присвоить короткие номера -Id (сделать типа словаря), то нужно просто запретить изменение Id и этих полей в таблице.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703317
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expla,

Вы меня не поняли. Да и я был немногословен. :) Поясняю.

В таблице сущность "Персона" не изменяется, а дополняется. Поле idPrevious содержит ссылку на Person.idPerson, где содержатся данные до смены фамилии/имени/(да можно и отчества:)). Зря вы idPrevous выкинули в "суррогатный" обвес.
Что то наподобии древа, но на idPerson накладывается уникальный индекс и, в результате, получаем связанный список. Все "ипостаси" личности (не знаю я как назвать совокупность атрибутов имя/фамилия назвать) хранятся в таблице, вместе со ссылками на предыдущую.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703395
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
триада ( Name, Surname, Secname ) не может быть первичным ключём, бывают, знаете-ли, полные тёзки
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703501
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_L,

я не вижу смысла выстраивать цепочки из ФИО, ведь чел может одновременно называть себя или проходить по документам и Ивановым и Петровым.

ИМХО, должно быть личное дело человка (типа таблица) и к этой таблице прицеплены разные учётные данные, такие как многочисленные ФИО (старые, новые, в разных транслитерациях, подтверждённые документально или предполагаемые системой выявления мошенников и т.п.).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
table Личное_дело (
  ID,
  <текущие данные>
) ;

table ФИО (
   фамилия,
   имя ,
   отчество,
   личное_дело references личное_дело,
   unique (личное_дело, фамилия, имя,отчество)
);

ФИО может содержать и другие данные, которые обычно используются в документах. ФИО может быть представлением (и материализованным), из разных документов, в которых фигурируют персональные данные и есть ссылка на личное дело.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703511
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorychтриада ( Name, Surname, Secname ) не может быть первичным ключём, бывают, знаете-ли, полные тёзки

Смотря в каком реляционном отношении. В таблице паспортов - согласен. В таблице/справочнике имён - почему бы нет?
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703553
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explaSenya_L,

я не вижу смысла выстраивать цепочки из ФИО, ведь чел может одновременно называть себя или проходить по документам и Ивановым и Петровым.Одновременно человек не может называть себя двумя фамилиями. Равно как и иметь разные паспорта. Зато он может в различные промежутки времени обладать, например, правом подписи и как Иванов, и как Петров.

Конечно, не считая случая загранпаспорта, где может быть те же фамилия/имя, но латиницей. С таким случаем дела не имел и, имхо, его надо рассматривать как особый.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703658
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_LexplaSenya_L,

я не вижу смысла выстраивать цепочки из ФИО, ведь чел может одновременно называть себя или проходить по документам и Ивановым и Петровым.Одновременно человек не может называть себя двумя фамилиями.

Ты плохо знаешь людей. А серьёзно, смена фамилии процедура сложная и длительная. И система некоторое время должна принимать человека и с его старой фамилией и с новой, а в архивных документах старая фамилия может отаться навеки. Может быть ты пытаешься притянуть сюда жизненный цикл паспорта. Типа, старый паспорт изымают, новый выдают. Но даже в этом случае чел может потерять паспорт, потом найти его и нелегально пользоваться.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703728
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_Lгде может быть те же фамилия/имя, но латиницей. С таким случаем дела не имел и, имхо, его надо рассматривать как особый.

пример, кстати, любопытный - правила написания имен латиницей не совпадают с обычными правилами прочтения фамилии на иностранных языках - это особая нотация - здравым смыслом не берется, фамилии при прочтении бывают даже не созвучны

т.е. можно сказать что это те же фамили и имя того же человека, только вот и визуально и аудиально они могут не совпадать ни разу...

арабские, французские, русские имена и фамилии
примеры приводить не стану - попалюсь пулей
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703732
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имелось в виду "в загран.паспортах и визах зарубежных иноязычных стран"
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703779
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explaМожет быть ты пытаешься притянуть сюда жизненный цикл паспорта. Не то что притянуть, а именно в соответствии с паспортом и должен фигурировать человек в документах, либо на основании документа его заменяющего. Случай мошеничества не рассматривается.

Вообще, что мы к этим паспортам привязались, в самом деле. Давайте на вопрос смотреть ширше :) Допустим, назовем шаблон "Сущности с изменяемыми атрибутами". Это могут данные о руководителе отдела, это цены на проданные товары, это ... список можно продолжать долго. Но всех их объединяет то, что при выборке важно знать состояние сущности на определенный интервал времени. Сразу же укажу альтернативный способ решения: лог изменений. Мне лично больше нравится вышеуказанный подход. Однако, могу указать и слабые места. Во-первых, можно получить значительное падение производительности в случае когда атрибуты изменяются очень часто. Во-вторых, на СУБД, где операции с курсором "дороги" есть вероятность "тормозов", когда не получается уложиться в один запрос.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703793
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafДанный шаблон может применяться, например, для курсов валют или цен товаров.Кстати, хотелось бы покритиковать этот шаблон. В нем трудно организовать CONSTRAINT на непересекаемость интервалов.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703870
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_LexplaМожет быть ты пытаешься притянуть сюда жизненный цикл паспорта. Не то что притянуть, а именно в соответствии с паспортом и должен фигурировать человек в документах, либо на основании документа его заменяющего.

Это твои фантазии. Документы могли быть составлены хрен знает когда, так что ни паспорта ни документа его заменяющего, который использовался при составлениии документов, уже не существует в природе.


Senya_L Случай мошеничества не рассматривается.

Напрасно. Тогда система не жизненная будет. Сферический конь в вакууме.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35703876
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_LNafДанный шаблон может применяться, например, для курсов валют или цен товаров.Кстати, хотелось бы покритиковать этот шаблон. В нем трудно организовать CONSTRAINT на непересекаемость интервалов.

Да он вообще то не рабочий.

В контексте триггера OnAfterInsert функция DimensionSlice(new.Point, new.<Измерения>) на оракле будет поднимать исключение, типа таблица мутирует.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35704405
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explaДа он вообще то не рабочий.

В контексте триггера OnAfterInsert функция DimensionSlice(new.Point, new.<Измерения>) на оракле будет поднимать исключение, типа таблица мутирует. Да что вы чУдите бесплатно! Автор привел образец врменного "среза" в SELECT'е, а не пример использования в Оракле.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35704420
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L,
Да избыточность имеет место. Ограничения с помощью триггеров. Запросы на изменения не должны на прямую содержать значения EndPeriod.
Можно привести реализацию этого же шаблона без избыточности. Конец периода - начало следующего. Но Select там гораздо сложнее.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35704463
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafSenya_L,
Да избыточность имеет место. Ограничения с помощью триггеров. Запросы на изменения не должны на прямую содержать значения EndPeriod.
Можно привести реализацию этого же шаблона без избыточности. Конец периода - начало следующего. Но Select там гораздо сложнее.Не совсем избыточность. Я тут подумал, все же EndPeriod нужен, если периоды не стыкуются и есть "разрывы".
NafНо Select там гораздо сложнее.В случае, например, изменения цен на товар ни капли не сложней. В заказе будет содержаться ссылка на ID правильной записи, и дальше - просто, чисто конкретный, JOIN :)
...
Рейтинг: 0 / 0
Шаблоны применения
    #35706098
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafSenya_L,
Да избыточность имеет место. Ограничения с помощью триггеров. Запросы на изменения не должны на прямую содержать значения EndPeriod.
Можно привести реализацию этого же шаблона без избыточности. Конец периода - начало следующего. Но Select там гораздо сложнее.

Нет там избыточности. Интервал, это два значения - начало и конец. То, что начало интервала может быть концом какого то другого интервала, это уже правило, внешнее по отношению к БД. Т.е. в случае хранения в записи начала и конца избыточным является это правило.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35706106
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senya_LexplaДа он вообще то не рабочий.

В контексте триггера OnAfterInsert функция DimensionSlice(new.Point, new.<Измерения>) на оракле будет поднимать исключение, типа таблица мутирует. Да что вы чУдите бесплатно! Автор привел образец врменного "среза" в SELECT'е, а не пример использования в Оракле.

Тогда пусть автор потрудится объяснить, что такое OnAfterInsert. И нафига такой шаблон, который неприменим к ораклу.
...
Рейтинг: 0 / 0
Шаблоны применения
    #35742274
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

К. Дж. Дейт "Введение в системы баз данных"

ISBN 5-8459-0788-8 (рус.)

Стараницы 915 - 970.

Это не подходит?
...
Рейтинг: 0 / 0
Шаблоны применения
    #36341163
Salimbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В AlData GOLD (собственно от AlData) и SAP for Retail (приезжали из Alpe consulting) используется именно этот механизм. Все действующие сейчас атрибуты обладают кроме даты начала еще и датой окончания. По умолчанию 2054г. Как происходит изменение, то Дата окончания обновляется указанной датой и создается новая запись с Датой начала = НашаДата и Дата окончания = 2054 г.
З.Ы. Для тех кто не в теме - это, типа, лучшие мировые решения в розничной торговле.
...
Рейтинг: 0 / 0
Шаблоны применения
    #36341192
Umberto_Eco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SalimbekВ AlData GOLD (собственно от AlData) и SAP for Retail (приезжали из Alpe consulting) используется именно этот механизм. Все действующие сейчас атрибуты обладают кроме даты начала еще и датой окончания. По умолчанию 2054г. Как происходит изменение, то Дата окончания обновляется указанной датой и создается новая запись с Датой начала = НашаДата и Дата окончания = 2054 г.
З.Ы. Для тех кто не в теме - это, типа, лучшие мировые решения в розничной торговле.А в каком виде хранятся атрибуты? Это самое интересное.
...
Рейтинг: 0 / 0
Шаблоны применения
    #36341390
Salimbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Umberto_EcoА в каком виде хранятся атрибуты? Это самое интересное.
К сожалению это были лишь презентации, детально пощщупать базы не удалось. Тут есть более детальные комментарии: http://www.1cpp.ru/forum/YaBB.pl?num=1223470922/1
...
Рейтинг: 0 / 0
Шаблоны применения
    #36341440
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Для тех кто не в теме - это, типа, лучшие мировые решения в розничной торговле.

Обычное дерьмо. Эпитет "лучший" применим исключительно к технологии вытрясания бабла из клиента.
...
Рейтинг: 0 / 0
Шаблоны применения
    #36341546
Salimbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> Для тех кто не в теме - это, типа, лучшие мировые решения в розничной торговле.

Обычное дерьмо. Эпитет "лучший" применим исключительно к технологии вытрясания бабла из клиента.
Ну, список внедрений внушаит, например у АлДата:
Carrefour - France and International, Retail, Grocery
Casino - France and International, Retail, Grocery
Leclerc Lecasud - France, Retail, Grocery
Migros - Switzerland, France and Germany, Retail, Grocery and Non-Food
Tesco - Central Europe, Retail, Grocery
Это из тех сетей, которые в 20-ку лучших в мире входят
...
Рейтинг: 0 / 0
Шаблоны применения
    #36341651
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Это из тех сетей, которые в 20-ку лучших в мире входят

Т. е. таких, из которых есть смысл вытрясать бабло, ибо оно у них есть. Логично.

Связь между технологичностью, правильностью решения и степенью его распространения скорее обратная: чем более тупо и криво, тем охотнее покупают и используют.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Шаблоны применения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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