top recent

ParagraphWiki:パラグラフの順序制御

関連ページ

Wiki パラグラフ

目次

  1. ページをパラグラフのコンテナだと捉えると...
  2. データベースに関して知識がないので外しているかもしれません。...
  3. INTEGERのベクタをDBにつっこむ...
  4. PostgreSQLには...
  5. テーブルを野放図に増やす必要は無かったですね。...
  6. ページ内のパラグラフの順序だけを保持するテーブルとして...

ページをパラグラフのコンテナだと捉えると

ぱっと思いつくのは
- ベクタ:1〜n次元の器の並びにパラグラフへの参照(ID)を入れておく
- リスト:パラグラフ同士が自分の前後を覚えておく

ほかになにかあるかな?

signature: Cake

[[id:205]] 2002-02-06 20:54:17


データベースに関して知識がないので外しているかもしれません。

#実はここに刺激されて勉強を始めたばっかり。

1.ページごとにテーブルをひとつ持つ。
2.そのページに含まれるパラグラフについて、パラグラフIDを主キーにもつ項目を用意する。
3.その項目に任意の要素を登録できるキーをひとつ与える。
4.与えたキーの値でソートすることをユーザに選択可能にする。

というのはいかがでしょう。

うーん。頁ごとにTableってのはRelationalDBにはあまり向かないと思います。
Tableの生成はサイト設計者や管理者がやるもんであって、
通常のアプリが動くときはあくまでtableの中を操作(検索、更新)する、
というのが歓迎される(^^;ようです。
実際、検索機能とかはtableの中を検索するように作られているので、
tableの名や数自体が固定でないとメタ検索を多用する羽目になり、
仕組的にもパフォーマンス的にも損が多いと思います。
そういう柔軟かつメタ(^^;な使いかたは、RDBは得意ではありません。
#これだからRDB鯖は仕事専用アプリだなどと揶揄されるんだよな(^^; -戯

うぅん。
検索性についてはパラグラフのデータの一部をページに持たせるのは不味いかな?と考えもしたのですが、そのページでしか使えないデータと割り切れば問題ないと結論づけてました。
でも、テーブルが野放図に増えていくのはたしかに気持ち悪そうですね。
#オコジョだと思えばかわいいかな?
-桶@つけるのが普通っぽいのでつけてみよう。

[[id:206]] 2002-02-06 20:53:54


INTEGERのベクタをDBにつっこむ

一番安直な方法は、配列変数をスクリプト側で
シリアライズしてからTEXT/VARCHAR 型のカラムに
書き込むことです。

当初の設計段階では、パラグラフの順序はそうやって
格納しようと思ってました。

ここのスクリプトでは実装してませんけど。:-P
signature: Cake

----
RDBではあんまりそういうことはしません(^^;
ここらへんがOOP(やその前身の構造体とか配列とかが有る世界)とRDBの違いでして、
そういうことするときは相棒の「各」レコードに番号を持たせて、
自分から番号つきで相手を参照しようとは考えない、というのが
RDBっぽい考えかたです。

まぁ、稀に、複数値をくっつけて1つのfieldに放りこむということを
したい(しないとならん)ときも有りますが。
たとえば定義の違う複数のテーブルのキー値(key field名もばらばら)を
いっしょくたに突っ込みたいときとか。
これ、多態を表現したいときに必要になる(^^;んですが、
uniqなものは線型合成(?)してもuniqなので、キー値を
コンマで区切って並べた文字列を、記憶しとくなんてことを
したりするようです。

[[id:211]] 2002-02-09 03:56:04


PostgreSQLには

配列型があるようです。
PostgreSQL-7.1.3ドキュメント/Chapter 6. 配列
なんかぞぞーっとするんですけど。線形検索が必要みたいだし。

[[id:860]] 2002-07-10 11:17:49


テーブルを野放図に増やす必要は無かったですね。

ページとパラグラフの関係を示すテーブルを一つ作れば大丈夫なのでした。
SQLとかは初級シスアドで勉強したような気がするのに...。
いい加減なこと書いていたら資格を没収されてしまうかな。

----
「DBマガジン」あたりが熱いような気がしています(笑)。--戯
個人的には(R)DBは嫌い(俺の大好きなOOPのテキだから(笑))なはずなんですが、
なんだかんだいって縁が切れないです。仕事でもそれ以外ででも。
というわけでOODBが普及してくれないことを嘆いて今夜も枕を塗らす…

----
「DBマガジン」本屋さんで読んでみました。
でも、アマプログラマにはちょっと難しいですね。
あの雑誌の内容が分かるようになれば一人前?

#うちの会社は工業メーカなのでオラクルないからなぁ。
#転職か?(違

でも、SQLの参考書は「DBマガジン」の本を買っていたり。
著者の方がOpenDesignで連載されている方でしたね。
signature: 桶

[[id:237]] 2002-02-12 08:21:14


ページ内のパラグラフの順序だけを保持するテーブルとして

create table Outline (
page_id INT,
paragraph_no INT,
article_id INT,
PRIMARY KEY (page_id, paragraph_no)
);
というのがあるとして、ページ $pid, の最後に新しい書き込み $aid を
追加するときの操作。

登録されている最大パラグラフ番号の次を採番する必要があるんだけど、
MySQLのユーザー変数を使って

mysql_query(
"LOCK TABLES Outline;

SELECT @next_no:=COALESCE(MAX(paragraph_no),0)+1 FROM Outline
WHERE page_id=$pid;

INSERT INTO Outline (page_id,paragraph_no,article_id)
VALUES ($pid, @next_no, $aid);

UNLOCK TABLES",
$conn
);

と書けるかな。サブクエリの代わりって感じ。

signature: Cake

[[id:305]] 2002-02-12 10:23:11


top recent

HashedWiki version 3 beta
SHIMADA Keiki