Господа, помогите справиться с такой задачкой:
Имеем таблицы "Персона", "Компания" и "Адрес". Чтобы не плодить поля в "Персона" и "Компания" логично вынести их в "Адрес" и связать реляцией. Адресов как у персоны, так и у компании м.б. несколько (регистрация, адр. проживания и т.п.). Соответственно, эти адреса д.б. связаны т.н. "multi-criteria relationshp" (терминах FM).
Мне хочется вынести их в Layout на Tab Control, чтобы на соотв. вкладке появился тот или иной адрес.
Просто уже переклинило, как реализовать это. По какому событию адрес может добавляться или удаляться...
Multi-criteria relationshp. Использование.
Re: Multi-criteria relationshp. Использование.
У вас связь многие ко многим. Так что вам нужна вспомогательная таблица, в которой будет хранится связь между таблицей компаний и таблицей адресов. Хранят обычно id записей. То есть в таблице (назовем к примеру адреса_компаний) будет все два поля:
id_компании
id_адрес
реляции от компании к адресе будут соотвествующие через эту таблицу.
Чтобы установить связь добавляем запись и прописываем соотвествующие id_компании и id_адрес, чтобы удалить связь, удаляем запись в этой вспомогательной таблице.
Для Персон делаем аналогично. В принципе, можно использовать одну и туже вспомогательную таблицу, просто добавим там поле id_персона
id_компании
id_адрес
реляции от компании к адресе будут соотвествующие через эту таблицу.
Чтобы установить связь добавляем запись и прописываем соотвествующие id_компании и id_адрес, чтобы удалить связь, удаляем запись в этой вспомогательной таблице.
Для Персон делаем аналогично. В принципе, можно использовать одну и туже вспомогательную таблицу, просто добавим там поле id_персона
-
- Сообщения: 106
- Зарегистрирован: 21 сен 2017, 18:48
- Откуда: Минск
Re: Multi-criteria relationshp. Использование.
Я бы порекомендовал взять одну из промышленных моделей данных, например Party Role и Contact Mechanism. Если по-русски, то надо перейти от Организация Персона Адрес к Сторона и ее Роль и Способ связи со стороной
например, из книги Len Silverston ( The Data Model Resource Book, Volumes 1 & 3; and/or vol 2 for specific industries )
Примеры способов связи: рабочий адрес, домашний адрес, домашний телефон, телефон соседа, электронный адрес личный, рабочий и т.п.
Примеры ролей: Поставщик, работник, покупатель, производитель
Примеры сторон Организация, Персона, Индивидуальный предприниматель, ,
Что это даст -схему не надо будет менять когда надо будет добавлять новые способы связи с людьми и организациями (например несколько адресов электронной почты или чат в Viber или Телеграм)
- вы будете пользоваться схемой, похожей на ту что использует Apple или Google
- под эту схему попадает большинство жизненных ситуаций, не надо будте придумывать "костылей"
Что бы быстро начать посмотрите презентацию и готовый файл с примером, которую в 2017 году на DevCon сделал Дейв Грэхем
ADV007 - Data Modeling That Scales - Dave Graham. (модель данных, которая маштабируется)
https://community.filemaker.com/docs/DOC-8358 По технике реализации вам потребуются промежуточная таблица.
Если все это излишне сложно, то второй способ организовать связи многие ко многим -- использовать для связи таблиц текстовоые поля с множественными значениями или поля с повторяющимися значениями. Это особенность FileMaker и это проще реализовать "по-быстрому"
например, из книги Len Silverston ( The Data Model Resource Book, Volumes 1 & 3; and/or vol 2 for specific industries )
Примеры способов связи: рабочий адрес, домашний адрес, домашний телефон, телефон соседа, электронный адрес личный, рабочий и т.п.
Примеры ролей: Поставщик, работник, покупатель, производитель
Примеры сторон Организация, Персона, Индивидуальный предприниматель, ,
Что это даст -схему не надо будет менять когда надо будет добавлять новые способы связи с людьми и организациями (например несколько адресов электронной почты или чат в Viber или Телеграм)
- вы будете пользоваться схемой, похожей на ту что использует Apple или Google
- под эту схему попадает большинство жизненных ситуаций, не надо будте придумывать "костылей"
Что бы быстро начать посмотрите презентацию и готовый файл с примером, которую в 2017 году на DevCon сделал Дейв Грэхем
ADV007 - Data Modeling That Scales - Dave Graham. (модель данных, которая маштабируется)
https://community.filemaker.com/docs/DOC-8358 По технике реализации вам потребуются промежуточная таблица.
Если все это излишне сложно, то второй способ организовать связи многие ко многим -- использовать для связи таблиц текстовоые поля с множественными значениями или поля с повторяющимися значениями. Это особенность FileMaker и это проще реализовать "по-быстрому"
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Multi-criteria relationshp. Использование.
в контексте данной темы хотел бы в очередной раз напомнить о том, что вообще таблицы можно связывать по двум реляциям.
Для того, чтобы это работало, каждой физической таблице следует присвоить уникальный идентификатор и хранить его в поле, например table_ref
в связанной таблице должно быть два поля для реляции:
parent_id будет хранить ссылку на идентификатор родительской записи
parent_ref будет хранить ссылку на идентификатор родительской таблицы
parent_id = id
parent_ref = table_ref
Скрипт добавления записи в подчиненную таблицу будет одинаковым для любого родителя, если использовать параметры и передавать в них List(id; table_ref)
Для того, чтобы это работало, каждой физической таблице следует присвоить уникальный идентификатор и хранить его в поле, например table_ref
в связанной таблице должно быть два поля для реляции:
parent_id будет хранить ссылку на идентификатор родительской записи
parent_ref будет хранить ссылку на идентификатор родительской таблицы
parent_id = id
parent_ref = table_ref
Скрипт добавления записи в подчиненную таблицу будет одинаковым для любого родителя, если использовать параметры и передавать в них List(id; table_ref)
Re: Multi-criteria relationshp. Использование.
Спасибо за подсказки!!! Буду изучать эти примеры. Главное, чтоб всё в голове уложилось .