2

私は、新しい軍事史のWebサイトの1人の開発チームです。このサイトの1つの側面は、参加した国とフォーメーション(連隊、師団など)を含む、約1,200の個別の戦闘のカタログです。

フォーメーション情報(およびその他の戦闘情報)は、10人のボランティアチームによって一連の本から手動でインポートされました。フォーメーションは、さまざまなフォーマットと略語パターンでグループにリストされました。データ収集フォームを設定したとき、そのデータを処理する良い方法を考えることができませんでした...そして、すべてを文字列としてMySQLデータベースに保存し、後で分類することを選択しました。

さて、「後で」-それが起こりがちなように-が到着しました。:-)

各戦闘には、データベースに2つ以上のレコードがあります。参加した国ごとに1つです。各レコードには、ボランティアがフォーメーションを追加することを選択したときに存在するフォーメーションをリストしたフォーメーションテキスト文字列があります。

いくつかの実際の例:

  • 第39擲弾兵師団、第26歩兵師団
  • 第246歩兵師団第2Luftwaffeフィールド師団
  • 第247ライフル師団、第255戦車旅団
  • SS騎兵師団第2空軍野戦師団
  • 第28戦車旅団、第158ライフル師団、第135ライフル師団、第81戦車旅団、第242戦車旅団
  • 第78歩兵師団
  • 第3呉特別陸戦隊、ツラギ水上飛行場要員
  • 第1大隊第505歩兵連隊

最終的な目標は、個々の部隊がIDを持ち、戦闘データベース全体でその参加を追跡できるようにすることです。上記の最後の項目などのフォーメーション階層1st Battalion (of the) 505th Infantry Regimentも保持する必要があります。その場合、1st Battalion505th Infantry Regiment分割さ1st Battalionれますが、に属するものとしてフラグが立てられます505th.

データベースの用語では、現在の戦闘情報テーブルからフォーメーションフィールドを引き出し、3つの新しいテーブルを作成したいと思います。

FORMATION
[id] [name]

FORMATION_HIERARCHY
[id] [parent] [child]

FORMATION_BATTLE
[f_id] [battle_id]

説明するのは簡単ですが、制定するのは複雑です。

私がSOコミュニティに求めているのは、この問題に取り組むための最善の方法に関するヒントです。理想的には、これを解決するためのある種の方法がありますが、私は気づいていません。ただし、最後の手段として、いつでも分類フレームワークをコーディングし、ボランティアに電話をかけて2,500以上のレコードを並べ替えることができました...

4

1 に答える 1

1

質問にPHP関連のタグを付けましたが、そうではありません。

実際の識別子を代理キー(ID)に置き換えることを提案していますが、実際の識別子は本質的に一意であるため、データ構造を必要以上に複雑にしているだけです。そうは言っても、階層のリーフ部分は、親ノードのスコープ内でのみ一意である可能性があります。

対処する必要がある最も重要な質問は、フォーメーションツリーが常に2つのレベルになるかどうかです。1つである場合もあれば、2を超える場合もあると思います。提案する構造は、深さが可変のツリーではうまく機能しません。

これは役立つかもしれません:

http://articles.sitepoint.com/article/hierarchical-data-database

C。

于 2010-05-25T09:30:13.140 に答える