日記/2008-02-04

Mon, 04 Feb 2008 22:46:48 JST (5919d)

Enquet System

来期、ストリーミングシステムのために、PHPのフレームワークであるCakePHPを用いて、図書館アンケートシステムをモデルに開発シミュレートを行う。

Database

項目

  • ID
  • 学科・先攻
    • 1〜6
  • 学年
    • 1〜7
  • 性別
    • 1 or 2
  • 使用頻度
    • 1〜7
  • 理由(月1以下の理由)
    • 1〜6
  • 図書館に行く目的
    • 1〜3 or Other
  • 使用時間帯(複数)
    • 1〜4
  • 借り入れ頻度
    • 1〜5
  • 借りる目的(複数)
    • 1〜4
  • 使用サービス
    • オンラインデータベース
      • 1〜3
    • 複写取り寄せ
      • 1〜3
    • 図書申し込み
      • 1〜3
    • 視聴覚室
      • 1〜3
  • HP(複数)
    • 1~6 or Other
  • 今後何を充実させればよいか
    • 1〜7 or Other
  • 意見
    • Other

複数選択しの対応について

  • テーブルを分割する
  • 数学的に項目を分離して格納する
    • ex(1=>+1、2=>+10、3=>+100とし、1と3なら、101)
      • 利点=>DB設計が楽
      • 欠点=>集計に手間がかかる

結論

テーブルを分割し、リレーションによって結びつける

テーブル構成

メインテーブル

  • eID(auto inclement)
  • 学科・先攻(subject)
  • 学年(grade)
  • 性別(sex)
  • 使用頻度(frequency of use)
  • 理由(月1以下の理由)(reason)
  • 借用頻度(frequency of borrow)
  • 使用サービス
    • オンラインデータベース(Online DB)
    • 複写取り寄せ(Copy)
    • 図書申し込み(request)
    • 視聴覚室(AV)
  • 今後何を充実させればよいか(Full up)
  • 意見(opinion)

使用時間帯

  • ID(auto inclement)
  • eID
  • 使用時間帯(複数)(Time)

借用目的(purpose)

  • ID(auto inclement)
  • eID
  • 借りる目的(複数)(purpose of use)

HP

  • ID(auto inclement)
  • eID
  • HP(複数)(HP)

SQL

CREATE TABLE `enquet` (

 `id` int(11) unsigned NOT NULL auto_increment,
 `subject` text NOT NULL,
 `grade` text NOT NULL,
 `sex` text NOT NULL,
 `FoU` text NOT NULL,
 `reason` text NOT NULL,
 `FoB` text NOT NULL,
 `ODB` text NOT NULL,
 `copy` text NOT NULL,
 `request` text NOT NULL,
 `AV` text NOT NULL,
 `FullUP` text NOT NULL,
 `opinion` text NOT NULL,
 PRIMARY KEY  (`id`)

}

CREATE TABLE `time` (

 `id` int(11) unsigned NOT NULL auto_increment,
 `eid` int(11) unsigned NOT NULL,
 `time` text NOT NULL,
 PRIMARY KEY  (`id`)

}

CREATE TABLE `purpose` (

 `id` int(11) unsigned NOT NULL auto_increment,
 `eid` int(11) unsigned NOT NULL,
 `PoU` text NOT NULL,
 PRIMARY KEY  (`id`)

}

CREATE TABLE `HP` (

 `id` int(11) unsigned NOT NULL auto_increment,
 `eid` int(11) unsigned NOT NULL,
 `HP` text NOT NULL,
 PRIMARY KEY  (`id`)

}