[pgsql-jp: 27074] Re: スケジュールテーブルの設計

NAO★ linux @ nao-star.com
2002年 8月 19日 (月) 15:25:31 JST


NAO★といいます。

dd01〜dd31までは別のテーブルの同じ列(処理コード番号)を参照していると思
いますがこれを別々の列にする必要はあるのでしょうか?

あるコード番号がいつの日付で使われているか調べるためにはSELECTの時、
WHERE句にdd01〜dd31をすべて列挙するハメになりますよ。

そうではなく、単純に
create table my_calendar (
  cdate date,
  code  smallint,

  primary key (cdate)
);

とかの方がスッキリしていると思いますが。

また別解として
create table my_calendar (
  yy    smallint,
  mm    smallint,
  code  string,

  primary key (cdate)
);

としておいて
codeの中身を
"ダミー\n
01日のコード\n
02日のコード\n
    :
30日のコード\n
31日のコード"

という1行1コードの文字列で格納し、PHPにてsplitをつかって配列にすると
いうのもありでしょうか?
codes = split("\n", str_codes);
codes[0] --ダミー
codes[1] --1日のコード
    :
codes[30] --30日のコード
codes[31] --31日のコード

# PostgreSQLは列に配列も使えますが…

-- 
NAO★<net @ nao-star.com>




pgsql-jp メーリングリストの案内