2008-04-15-02-【Scrooge】データ構造 - 4
>> Site top >> weblog >> 月別アーカイブ >> 2008年04月のlog >> 2008-04-15-02-【Scrooge】データ構造 - 4
最終更新日付:2008/04/15 02:00:00
【Scrooge】データ構造 - 4
2008 年 04 月 15 日
前回、「どちらでも似たようなもの」 と書いた。それを説明したいが、多少実装寄りの話になるし、今回だけでは説明しきれないかもしれない。では始めよう。
シンプルさのために、Scrooge では最低でも3つのデータベースを使用する。3つとは、以下のようなものだ。
- 店舗名データベース
- 商品名データベース
- 価格情報データベース
最初の2つはレコード内に名前文字列だけを格納するが、ひょっとしたら将来的には拡張されるかもしれない。たとえば、店舗名データベースの各レコードに定休日情報を入れるなどといったことが考えられるからだ。しかし、今の時点ではそれは置いておく。これらのデータベースを、仮に ShopDB, ItemDB と呼ぶことにしよう。
最後の価格情報データベースが Scrooge のキモになる。これは、データベースの各レコードが1つの販売情報を表す。店舗や商品の識別は ShopDB と ItemDB のレコードへの参照としてのみ保持し、具体的なデータとしては売価を保持する。最後に、割引イベントのためのデータもこのレコードに格納される。このデータベースを仮に PriceDB と呼ぶことにする。
ShopDB と ItemDB のレコードへの参照を保持すると書いたが、具体的には、これはデータベースレコードの UniqueID 参照になる。レコードのインデックスはソートやレコード増減によって変動するが、UniqueID は変化しないからだ。すると、割引イベントのためのデータをひとまず DiscountInfo 構造体という名前でブラックボックスにしておくと、価格情報は以下のようになる。
struct PriceInfo { UniqueID shopID; UniqueID itemID; UInt32 price; struct DiscountInfo discount; };
このような構造体がそのままレコードとして PriceDB に格納されるわけだ。当然、PriceDB の各レコードとして存在する PriceInfo 構造体も、レコードとしての UniqueID を持つ。
...続きは明日以降。
コメント
このページのタグ
Page tag : Palm
Copyright(C) 2005-2021 project-enigma.
Generated by CL-PREFAB.