PHP と MySQLで短歌や俳句の注釈書のようなものを作りたいと思っています。


必要な機能は以下のようなものです。
・データベースに,短い文章が登録されている。
・利用者は文章の特定の部分に対してコメントをつけることができる。
・つけられたコメントは,本文と共に表示される。
・コメントの対象となる文章及びコメントは変更・訂正される場合がある。
・文章,コメントの双方が検索の対象となる。

既に考えた事柄は以下の通りです。
・バイト数・文字数などの位置で特定する方法は,対象に変更があったときに注のデータを変更することになるので避けたい。
・文章中にタグ付きで埋め込む方法は検索が複雑になるので避けたい。

以上から,
・XMLデータにする
・タグ付きにし,検索対象データを別に保持する
の2通りの方法を考えたのですが,他により一般的な方法があればお教えください。

なお,「他の方法はない」という回答は不要です(ポイントは差し上げません)。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/08/09 16:55:30
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:tonotonotono No.1

回答回数2ベストアンサー獲得回数0

ポイント35pt

MySQLを使われるならテーブルつくらはったらどないです。

本文用テーブル

 id

 本文

 作成者

コメント用テーブル

 id

 本文のid

 コメント文

こんな感じで本文用とコメント用をidで結び付けして

本文や個々のコメント文はそれぞれのidをupdate条件にすると。

表示用の画面は好きにデザインすれば見易さを追及できますよ~

URLはダミー:http://www.google.com/

id:falcosapiens

コメントをつけたいのは,「文章」に対してではなく「文章の部分」に対してです。

木構造のデータを作りたいわけではありません。

0pt

2007/08/02 21:00:25
id:Yota No.2

回答回数453ベストアンサー獲得回数28

ポイント35pt

最初にMySQLでやると書いてあったので、短歌とか文章とかコメントも全部テーブルに格納するのかと思ったらそうじゃないんですね。

掲示板やブログもそうしていると思いますが、親子関係のインデックスをつけて、全部テーブルに格納した方がいいのではないですか。

検索については全文検索の実用化などもかなり進んでいます。

http://qwik.jp/tritonn/feature.html

id:falcosapiens

先ほどの方と同様の誤解ですね。

必要があれば全てテーブルに格納しますし,ファイルベースの方が便利ならファイルベースにします。

ツリー構造のデータを作りたいわけではなく,文章の特定の部位に事後的な変更の手間が小さい方法でコメントをつけたいだけです。

0pt

2007/08/02 21:00:45
  • id:KUROX
    短歌や俳句に注釈(コメント)というのは、
    どのようなイメージを想定してますか?

    短歌に付箋のように貼るとかじゃないですよね。
    短歌が見えなくなりますし・・・。
  • id:falcosapiens
    Wordの「脚注」のイメージと書いた方が通じやすかったかもしれません。
    古典の短歌集とか,読んだことある人はすくないか…。
  • id:KUROX
    イメージできないです。
    私も2人と同じようにすべての情報をDBに格納すると思います。
    同じデータを検索用に2重もちとかはすると思います。

    バイト数・文字数などの位置で特定する方法に近い感じで
    文章とコメントの関連付け情報はDBに保持すると思います。

    データの変更時にどうするか問題なのですが、
    どのように文章が変更されるのかわからないので保留です。

    ---------------------------------------------------
    >文章の特定の部位に事後的な変更の手間が小さい方法で
    >コメントをつけたいだけです。

    短歌、俳句ということで何らかの暗黙の決まりとかあると
    思うのですが、現状では変更の手間というのが何を指している
    のか不明です。そもそも入力はどうやってやるかとかも
    あるので、わかりません。

    (1)ABCDEFG
      EFGHI
      JKLMNOPQ

      BCDに対してコメント(脚注)入れた場合は、
      どのように表示しますか?
    (2)(1)の場合、3つの文章としてDBには3レコードで格納
      しますか?
    (3)脚注は、別のテーブルにDBに入れますか?
    (4)文章と脚注の関連付けはどのように格納しようとして
      ますか?
    (5)ABCDEFGをZYZに書き換えたら
      脚注も含めてどう処理しますか?

    これを答えてもらっても、私が回答できる保証はありま
    せんが・・。
  • id:falcosapiens
     難波津に 咲くやこの花 冬ごもり
     今を春べと 咲くやこの花
    という歌(1レコード)があり,この歌の「難波津」という部分に「現在の大阪港の古名」とコメントをつけたとします。
    この場合,”前から1文字目~3文字目”,あるいはもうちょっとおおざっぱに”3文字目の後”として位置を特定し,そのデータをもとに本の脚注のように「(1)」などの文字を付け,
    下に「(1)現在の大阪港の古名」と表示します。

     難波津(1)に 咲くやこの花 冬ごもり
     今を春べと 咲くやこの花
      (1)現在の大阪港の古名

    しかし,この方法では「難波津」の前に語句が挿入された場合,コメントの位置がずれます。

    代案は,「難波津」という語句にタグ付けするか(xml),
    コメントの位置情報を保持する
    「難波津(1)に 咲くやこの花 冬ごもり 今を春べと 咲くやこの花」
    というデータと元の文の
    「難波津に 咲くやこの花 冬ごもり今を春べと 咲くやこの花」
    というデータを2つ保持するというものです。

    以上で(1),(2)の回答になるかとおもいます。
    (3)と(4)は,私の質問事項そのものです。
    (4)の決定により(3)が決まる関係にあるかと思います。

    (5)のような書換えであれば,当該部分に対する脚注は削除されることになります。

    ポイントを付与させていただきたいので,1度,「回答」していただけるとありがたいです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません