powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение модели IDEF1X для семьи.
27 сообщений из 27, показаны все 2 страниц
Построение модели IDEF1X для семьи.
    #39565158
RED_Snail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здрасте. Не вдаваясь в суть всего задания, мне нужно сделать, скажем, генеалогическое древо. Я себе представляю это примерно как-то так:

Только знакомлюсь с БД, так что до конца не понимаю законно ли то, что я делаю.

Собственно мне суда надо ещё как-то прикрутить, что бы у пары был ребенок. И в этом главный вопрос.
Если моя модель ущербна, подскажите как ее исправить и как сделать ребенка(что бы он в дальнейшем сам мог стать семьянином)?

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565250
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RED_Snail,
поскольку картинку не видно, буду рассуждать абстрактно. Возможны, как минимум, две модели:
Человек — является родителем (либо ребенком, но чем-то одним) — Человека;

Человек — входит в состав — Семьи (в некотором качестве [отец, мать, ребенок, приемный…]), т.е. так же, как описываются Отделы и Сотрудники.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565261
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лобовое решение
create table pers (id int primary key, dad_id int references pers, mom_id int references pers)
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565269
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Биологически у человека есть отец и мать.
Социально человек может состоять в разных отношениях с другими людьми, причем во времени эти отношения могут меняться.

На какие именно вопросы должна отвечать информационная система и кто ей будет пользоваться?

Для курсовика наверное достаточно отца и матери
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565609
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Лобовое решение
create table pers (id int primary key, dad_id int references pers, mom_id int references pers)

Еще надо в явном виде описать семью. У семьи ведь может и не быть детей, а факт женитьбы зафиксировать надо.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565780
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherЕще надо в явном виде описать семью. У семьи ведь может и не быть детей, а факт женитьбы зафиксировать надо.
А еще можно наплодить детей, не создавая семьи :)
Поэтому идем к мормонам (гуглим GEDCOM) и нагло копируем нужные нам части их модели, т.е. примерно те, что я описал в начале:
Человек — является родителем (либо ребенком, но чем-то одним) — Человека;

Человек — входит в состав — Семьи (в некотором качестве [отец, мать, ребенок, приемный…]).
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565808
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2Человек — входит в состав — Семьи (в некотором качестве [отец, мать, ребенок, приемный…]).

Точнее говоря, в состав семьи человек входит как муж или жена (ну или ребенок, верно). А отцом он может быть ребенка из другой семьи, хотя в ту семью он сам не входит.

Осталось развернуть это все во времени, и получится прекрасная модель.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39565969
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher,
вот поэтому и нужны два вида связей (человек—человек и человек—семья): так мы учтем и биологическое, и социальное.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39566049
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharper Социально человек может состоять в разных отношениях с другими людьми, причем во времени эти отношения могут меняться.В лоб
Код: sql
1.
2.
create table family (id int primary key)
create table family_member (pers_id int references pers, family_id int references family, status int, dfrom date, dto date)


Целостность такой структуры (многоженство, приемные дети), а также чтобы dbirth<=dfrom и dto<=ddeath полностью ложится на прикладную программу, разве что можно будет добавить ключ
Код: sql
1.
alter table family_member add constraint primary key (pers_id, family_id)
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39566851
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всего 2 таблицы:

Персона:
id, name, surename

Отношения:
id_персоны1, id_персоны2, тип отношения, дата начала, дата конца


Тип отношения: жена, муж, отец, мать и т.д. Для оптимизации хранения можно сделать, чтобы обратные связи не хранить.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39566902
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serguei Тип отношения: жена, мужто есть две записи на женитьбу
Serguei отец, матьсын, дочь для каждого родителя?

И в чем выгода по сравнению с сущностью семья ?
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39566904
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Serguei Тип отношения: жена, мужто есть две записи на женитьбу
Serguei отец, матьсын, дочь для каждого родителя?
И в чем выгода по сравнению с сущностью семья ?
Все зависит от задачи, но по-хорошему нужно факт воспроизводства (биологическая составляющая) фиксировать для каждого родителя (и для отца, и для матери) либо ребенка — на выбор разработчика. А Семья существует параллельно как социальная составляющая (плюс разрешает ситуации типа «жили-были два брата женатых» без создания фиктивных Человеков).
Двумя таблицами (Человеки и Семьи) в общем случае не отделаться.

P.S. За время обсуждения уже много тысяч раз можно было нагуглить GEDCOM :)
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567456
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2 факт воспроизводства (биологическая составляющая)
21011911
Ы2А Семья существует параллельно как социальная составляющая
21015774
Ы2Двумя таблицами (Человеки и Семьи) в общем случае не отделаться.При каких обстоятельствах будет выгодно усложнение лобовой структруры из трех таблиц (человек, семья, члены семьи)?
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567812
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257При каких обстоятельствах будет выгодно усложнение лобовой структруры из трех таблиц (человек, семья, члены семьи)?
Тысячи их :) в зависимости от задачи, естественно.

Напр., если вам нужно учитывать только биологическое родство, хватит единственной таблицы Человеки (id, id_отца, id_матери, что-то еще).

Но если вы хотите приблизиться к реальности™… тут уже возможны варианты. Поскольку ТС уже тихо сдал свою лабораторную, можно позволить себе опуститься до вырожденных случаев, которыми реальная реальность™ кишмя кишит.

Пусть задача звучит примерно так: «в системе должна быть возможность отразить все известные факты о биологическом и социальном родстве учтенных персон».

В трехтабличную схему плохо укладываются, напр., следующие случаи из жизни:
брак — рождение детей — развод [— новый брак — еще дети];

супружеская пара с приемным ребенком, биологические родители которого а) известны, б) не создавали семьи;

мать-одиночка (отец известен, но совместного заявления не подавал);

незамужняя женщина рожает, потом выходит замуж за другого, рожает от него, разводится и выходит замуж за отца своего первого ребенка (там еще продолжение было).
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567876
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну давайте, не флейма ради
Сущность семья нужна только для объединения людей.
Для однообразия положим, что все люди должны состоять в семье даже если в ней только один член.

Ы2 брак — рождение детей — развод [— новый брак — еще дети];
1 брак
Одинокие семьи жениха и невесты закрываются (записи в family_member обновляют dto ).
Новая семья (запись в family добавляется), для новой семьи добавляются записи в family_member с открытой датой dto
2 рождение детей
Добавляется запись в family_member
3 развод
семья разбивается, создаются новые семьи
4 новый брак
Старые семьи закрываются, новые создаются

Ы2супружеская пара с приемным ребенком, биологические родители которого а) известны, б) не создавали семьи;
Биологические родители - это в таблице "человеки" с социальной семьей никак не связаны
>б) не создавали семьи
Смотри выше. Семья есть у всех, но у некоторых она вырожденая

Ы2 мать-одиночка (отец известен, но совместного заявления не подавал);
В семье два члена, мать и дитя. У отца своя семья.

Ы2 незамужняя женщина рожает, потом выходит замуж за другого, рожает от него, разводится и выходит замуж за отца своего первого ребенка (там еще продолжение было).
1 незамужняя женщина рожает
Дитя добавлен к ней в семью
2 потом выходит замуж за другого
Создается новая семья
3 рожает от него
Добавляем дитя в семью
4 разводится
Закрываем старую семью, организуем новые
5 выходит замуж за отца своего первого ребенка
Закрываем старую семью женщины и отца ребенка, организуем новую

Пока не вижу проблемы.
Еще одно - по достижению 18 лет молодые люди выходят из семьи родителей и получают свою собственную семью из одного члена.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567877
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2В трехтабличную схему плохо укладываются, напр., следующие случаи из жизни:
брак — рождение детей — развод [— новый брак — еще дети];

супружеская пара с приемным ребенком, биологические родители которого а) известны, б) не создавали семьи;

мать-одиночка (отец известен, но совместного заявления не подавал);

незамужняя женщина рожает, потом выходит замуж за другого, рожает от него, разводится и выходит замуж за отца своего первого ребенка (там еще продолжение было).


Не вижу проблем описать все эти случаи тремя таблицами - просто будет довольно много "типов семьи" и "ролей в семье". Ну и, конечно, никакого ограничения "человек [в текущий момент времени] входит только в одну семью" - но это и так имхо очевидно.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567886
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257
Ы2 мать-одиночка (отец известен, но совместного заявления не подавал);
В семье два члена, мать и дитя. У отца своя семья.

Итого информация о биологическом родстве потеряна - не очень хорошо.
Я бы создал 2 записи "семьи"
1. Тип "неполная семья", члены - мать, ребенок
2. Тип "биологическая (незарегистрированная) семья", члены - мать, отец, ребенок.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567910
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинИтого информация о биологическом родстве потерянаВовсе нет.
В таблице человеки у ребенка dad_id будет указывать на отца.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567915
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Кот МатроскинИтого информация о биологическом родстве потерянаВовсе нет.
В таблице человеки у ребенка dad_id будет указывать на отца.
Ok, суррогатную мать как будете хранить?
Я бы все-таки решал все это единообразным и идеально расширяемым способом - через "типы семьи" и "роли в семье".
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567918
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинSERG1257пропущено...

В семье два члена, мать и дитя. У отца своя семья.

Итого информация о биологическом родстве потеряна - не очень хорошо.
Я бы создал 2 записи "семьи"
1. Тип "неполная семья", члены - мать, ребенок
2. Тип "биологическая (незарегистрированная) семья", члены - мать, отец, ребенок.
И зачем усложнять модель сверх необходимого?

Тип семьи — это бирка, присваиваемая задним числом по обобщении результатов анализа.

Если вынуть данные о биологическом родстве из Человеков (мои дети никак не являются моими атрибутами), то получается простая и стройная модель:
Человек (id, как зовут, что-то еще);

Дети Человеков (id_Человека_1, id_Человека_2, что-то еще);

Семья (id, какие-то данные);

Члены Семей (id_Семьи, id_Человека, роль, что-то еще).
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39567927
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2Кот Матроскинпропущено...

Итого информация о биологическом родстве потеряна - не очень хорошо.
Я бы создал 2 записи "семьи"
1. Тип "неполная семья", члены - мать, ребенок
2. Тип "биологическая (незарегистрированная) семья", члены - мать, отец, ребенок.
И зачем усложнять модель сверх необходимого?

В смысле "зачем усложнять"? Вы говорите - "три таблицы не справятся, надо усложнять". Я говорю "Да нет, вполне справятся". И кто тут усложняет? :)
И "тип семьи", и "роль в семье" Вам все равно нужны - просто часть информации Вы хотите хранить не с их помощью,
а с помощью других, дополнительных механизмов.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39568035
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я нигде не писал, что на трех таблицах нельзя сделать. Можно-то можно, но работать со сделанным будет неудобно. Сам проверял :)

SERG1257Сущность семья нужна только для объединения людей.
Это даже в нашей умозрительной задаче не вполне так.

SERG1257Для однообразия положим, что все люди должны состоять в семье даже если в ней только один член.
Семейный кодекс с вами не согласен, да и социологи с антропологами тоже (предельно упрощая, полагается, что семья — это про связи между людьми, а не про минимальную ячейку). Не говоря уже, что одноместные семьи — просто куча лишней работы оператору/системе и бесполезная трата байтов: вы ничего не выигрываете, объявив холостых/незамужних семьями.

SERG12571 брак
Одинокие семьи жениха и невесты закрываются (записи в family_member обновляют dto ).
Новая семья (запись в family добавляется), для новой семьи добавляются записи в family_member с открытой датой dto
По-хорошему, брак, развод и т.п. — это события со своими атрибутами, но мы их не рассматривали. Вообще, создание семьи и регистрация брака совпадать не обязаны. С этим даже кодекс согласен.

SERG1257Еще одно - по достижению 18 лет молодые люди выходят из семьи родителей и получают свою собственную семью из одного члена.
Совершенно небоснованная затея. Я не помню, что думает по этому поводу Семейный кодекс, но реальная практика точно против вас: в Москве семья с тремя и более детьми считается многодетной до достижения младшим ребенком 16 (а при определенных обстоятельствах и 18) лет, соответственно, к этому времени старшим вполне может быть за 18, в некоторых эми-/иммиграционных случаях дети признаются членами семьи до 23 включительно и т.д.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39568037
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин В смысле "зачем усложнять"? Вы говорите - "три таблицы не справятся, надо усложнять". Я говорю "Да нет, вполне справятся". И кто тут усложняет? :)
И "тип семьи", и "роль в семье" Вам все равно нужны - просто часть информации Вы хотите хранить не с их помощью,
а с помощью других, дополнительных механизмов.
Схема из четырех таблиц не обязательно сложнее схемы из трех.
Я предлагаю отделить людей от факта происхождения их друг от друга.
Тип семьи мне не нужен совсем. Я могу его присвоить, если понадобится, по результатам анализа, но для системы он не нужен.
Нужность «роли в семье» я никогда не отрицал.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39568131
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2Тип семьи мне не нужен совсем.
Т.е. официальные браки от неофициальных отличать не хотите?
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39568134
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю всем желающим описать на их моделях следующую жизненную ситуацию:

Женившаяся сама на себе британка изменила сама себе
Жительница британского города Брайтон Софи Тэннер, два года назад женившаяся сама на себе, публично покаялась в измене, сообщает Metro. Несмотря на это, женщина не торопится подавать на развод.

Человеком, который расстроил гармоничный брак 38-летней Софи Тэннер с самой собой, стал некий Руари Баррет. При этом сам мужчина, который ранее был сторонником полигамных отношений, во время пятимесячного романа с британкой внезапно обратился к моногамии.

В конце концов Баррет последовал примеру возлюбленной и вышел замуж за самого себя. В то же время Софи Тэннер после измены не собирается разводиться, считая, что она дала пожизненное обещание нести всю ответственность за свое счастье.

Софи Тэннер женилась сама на себе в мае 2015 года в присутствии нескольких десятков гостей. После пафосной вечеринки в центре Брайтона женщина отправилась тогда в медовый месяц.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39568471
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Семейным кодексом меня пугать не надо, я живу не в РФ. Лучше сформулируйте ситуацию/запрос и мы посмотрим как разные варианты структур это разрулят.

Ы2 Это даже в нашей умозрительной задаче не вполне такСмысл моего поста был в том что от таблицы family нам нужно только id.
И да, я понял, что имел ввиду Serguei в 21019591
Вместо family_id можно использовать pers_id, объявив одного из членов семьи главой (например самого старшего). При этом однако надо будет не забыть выбрать нового главу семьи, если старый глава умер.

Ы2что одноместные семьи — просто куча лишней работы оператору/системе и бесполезная трата байтов: вы ничего не выигрываете, объявив холостых/незамужних семьями.Попробую объяснить зачем нужны эти байты.
В случае отсутсвия этой физической записи, она все равно виртуально появится в результате левого соединения, но при этом девелоперам придется обрабатывать null в каждом запросе.
Причем мы можем экспортировать наши данные в другую систему и там тоже надо будет объяснять эту особенность. Рано или поздно кто-нибудь накосячит.

Далее, без этой записи мы путаем штатную ситуацию одинокого человека с нештатным багом, в результате чего баг может довольно долго жить и размножатся.
А так объявив, что в любой момент времени у человека обязанна быть семья, не найдя оную, нужно бить в колокола и разбираться.
...
Рейтинг: 0 / 0
Построение модели IDEF1X для семьи.
    #39568532
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЫ2Тип семьи мне не нужен совсем.
Т.е. официальные браки от неофициальных отличать не хотите?
Это не «тип семьи», это всего лишь наличие или отсутствие факта регистрации брака.
Ы2По-хорошему, брак, развод и т.п. — это события со своими атрибутами, но мы их не рассматривали. Вообще, создание семьи и регистрация брака совпадать не обязаны.
Кот МатроскинТип "неполная семья", члены - мать, ребенок
Тип "биологическая (незарегистрированная) семья", члены - мать, отец, ребенок.
Угу, сюда же «полная зарегистрированная семья» с подтипами «полная зарегистрированная многодетная семья» и «полная зарегистрированная семья ликвидатора ЧАЭС»… так мы докатимся до типа «шведская семья с бабушкой от первого брака» :)
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение модели IDEF1X для семьи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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