2008-04-15-02-【Scrooge】データ構造 - 4 - project-enigma

2008-04-15-02-【Scrooge】データ構造 - 4

>> Site top >> weblog >> 月別アーカイブ >> 2008年04月のlog >> 2008-04-15-02-【Scrooge】データ構造 - 4

最終更新日付:2014/01/02 00: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-2017 project-enigma.
Generated by CL-PREFAB.