Multi-criteria relationshp. Использование.

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
OlegZ
Сообщения: 8
Зарегистрирован: 12 сен 2017, 08:21

Multi-criteria relationshp. Использование.

Сообщение OlegZ » 07 ноя 2018, 10:34

Господа, помогите справиться с такой задачкой:
Имеем таблицы "Персона", "Компания" и "Адрес". Чтобы не плодить поля в "Персона" и "Компания" логично вынести их в "Адрес" и связать реляцией. Адресов как у персоны, так и у компании м.б. несколько (регистрация, адр. проживания и т.п.). Соответственно, эти адреса д.б. связаны т.н. "multi-criteria relationshp" (терминах FM).
Мне хочется вынести их в Layout на Tab Control, чтобы на соотв. вкладке появился тот или иной адрес.
Просто уже переклинило, как реализовать это. По какому событию адрес может добавляться или удаляться...

Аватара пользователя
Arcady
Администратор
Сообщения: 201
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: Multi-criteria relationshp. Использование.

Сообщение Arcady » 08 ноя 2018, 06:28

У вас связь многие ко многим. Так что вам нужна вспомогательная таблица, в которой будет хранится связь между таблицей компаний и таблицей адресов. Хранят обычно id записей. То есть в таблице (назовем к примеру адреса_компаний) будет все два поля:

id_компании
id_адрес

реляции от компании к адресе будут соотвествующие через эту таблицу.
Чтобы установить связь добавляем запись и прописываем соотвествующие id_компании и id_адрес, чтобы удалить связь, удаляем запись в этой вспомогательной таблице.

Для Персон делаем аналогично. В принципе, можно использовать одну и туже вспомогательную таблицу, просто добавим там поле id_персона
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Alexei Sytch
Сообщения: 106
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: Multi-criteria relationshp. Использование.

Сообщение Alexei Sytch » 08 ноя 2018, 21:21

Я бы порекомендовал взять одну из промышленных моделей данных, например 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
PartyContactMethod.PNG
схема данных, которую реализовал Dave Graham, маркером выделена таблица, которая реализует связь многие ко многим
PartyContactMethod.PNG (48.17 КБ) 7622 просмотра
По технике реализации вам потребуются промежуточная таблица.

Если все это излишне сложно, то второй способ организовать связи многие ко многим -- использовать для связи таблиц текстовоые поля с множественными значениями или поля с повторяющимися значениями. Это особенность FileMaker и это проще реализовать "по-быстрому"

andrey volkov
Сообщения: 338
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: Multi-criteria relationshp. Использование.

Сообщение andrey volkov » 09 ноя 2018, 05:16

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

в связанной таблице должно быть два поля для реляции:
parent_id будет хранить ссылку на идентификатор родительской записи
parent_ref будет хранить ссылку на идентификатор родительской таблицы

parent_id = id
parent_ref = table_ref

Скрипт добавления записи в подчиненную таблицу будет одинаковым для любого родителя, если использовать параметры и передавать в них List(id; table_ref)

OlegZ
Сообщения: 8
Зарегистрирован: 12 сен 2017, 08:21

Re: Multi-criteria relationshp. Использование.

Сообщение OlegZ » 09 ноя 2018, 09:21

Спасибо за подсказки!!! Буду изучать эти примеры. Главное, чтоб всё в голове уложилось ;) .

Ответить