powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение модели IDEF1X для семьи.
25 сообщений из 27, страница 1 из 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
25 сообщений из 27, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построение модели IDEF1X для семьи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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