6

PHPとMySQLで家系図を作成する必要があります。そこにオープンソースのカスタマイズ可能なhtml家系図構築ソフトウェアがないことにかなり驚いていますが、私は逸脱します。MySQLの有向グラフと家系図の保存について多くの時間を費やしてきました。すべてが私には理にかなっています。ノード(人)のあるテーブルとエッジ(関係)のあるテーブルがあります。

私が抱えている唯一の問題は、兄弟関係や祖父母関係など、必ずしも隣接しているとは限らない関係を保存するための最良の方法がわからないことです。最初は、これらの接続を解決する親(誰もが親を持っている)を目に見えない形で強制できるので、これが大したことになるとは思いませんでした。

ただし、ロマンチックなパートナーなど、共通の親がいない可能性のある関係も保存できる必要があります。私が読んだことはすべて親子関係を示唆していますが、ロマンチックなパートナーは(願わくば)共通の親を共有していないため、エッジテーブルに保存する方法がわかりません。別のテーブルを使用する必要がありますか、それとも何ですか?同じテーブルにある場合、これをどのように表現しますか?なじみのない人間関係でこれをやっている限り、家族でもやったほうがいいかもしれません。

要約すると、3つの質問:

  • 横方向の関係をどのように表現しますか?
  • 横方向の関係に共通の親がある場合、どのように保存しますか?familyこれは、他の横方向の関係が保存されているテーブルのフラグである必要がありますか?
  • 子が2つ以上離れている(祖父母)が、直接の親が利用できない親子関係を保存するにはどうすればよいですか?

どんな助けでもありがたいです、そして誰かがいくつかのjavascript / html家系図構築ソフトウェアについて何か提案があれば、それは素晴らしいでしょう。

4

3 に答える 3

7

GeneaproスキーマRootsMagicから生まれたアイデア。

person
------
person_id
name (etc)

life_event_types
----------------
life_event_type_id
life_event_type_description (divorce, marriage, birth, death)

life_events
-----------
life_event_id
life_event_type_id
life_event_description
life_event_date

life_event_roles
----------------
life_event_role_id
life_event_role (mother, father, child)

person_event_role
-----------------
person_id - who
life_event_id - what happened
life_event_role_id - what this person did

したがって、「birth」タイプのライフイベントを作成できます。role_idは、誰が親で、誰が子であるかを示します。これは、結婚、死亡、離婚、里親、代理親(非常に複雑な関係を持つ3人または4人の親がいる場合)などに拡張できます。

より遠い関係を保存することに関しては、これらを計算することができます。たとえば、event_idが一致する「father」ロールを持つ人を取得することで、誰の父親も計算できます。その後、その人の父親を取得でき、元の人の祖父がいます。誰かが未知であるところならどこでも、未知のデータでその人を作成してください。

于 2011-04-25T00:35:54.543 に答える
2
person
-------
person_id
other_stuff

relation
----------
person_id_1
person_id_2
relationship_type
begin_dt
end_dt

関係タイプに興味のある値を入力するだけです(いくつかの選択リストへのFKは素晴らしいでしょう)

私は興味深いサブディスカッション/思考の挑発の日付を付けました。

于 2011-04-24T23:34:52.947 に答える
1

The GEDCOM data model and the Gramps data model are two of the most popular formats for exchanging geneological data between different tools. Using either of these data models should both (1) make your tool more compatible with other tools and (2) ensure that your data model is compabible with many special cases, considering both data models are specially designed to deal with geneological data.

Tools like Oxy-Gen or the Gramps PHP exporter should get you on your way with respect to how to import GEDCOM data into a database.

For more details, see also my answer to “Family Tree” Data Structure.

于 2015-07-03T12:33:37.020 に答える