Changes between Initial Version and Version 1 of andmylife/design/server/model

Show
Ignore:
Timestamp:
2009/06/14 23時30分25秒 (15 months ago)
Author:
master (IP: 219.7.248.5)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • andmylife/design/server/model

    v1 v1  
     1[[TOC]] 
     2= andmylife / 設計 / サーバー / データモデル = 
     3 
     4 * アプリケーション上で投稿されるデータは、更新・参照ともに活発に行われる。 
     5 
     6 == 参照に関わる考察 == 
     7 
     8 '''card''' は、複雑な条件での抽出に応えられるように構造化さればならない。 
     9 
     10 この点については、データウェアハウスなどで採用されるスター・スキーマを意識し、一部、設計に取り入れる。 
     11  
     12 具体的には、 '''card''' は '''user''', '''item''', '''action''', '''motivation''', '''counterpart''' などの属性を'''ディメンジョン'''として持つ。 
     13 
     14 ただし、ユーザーは、基本的には'''文章'''として '''card''' へ記入する。 
     15 
     16 システムは、'''文章'''から推測した属性をユーザーに提示する。 
     17 
     18 ユーザーは、確認と訂正をする。 
     19  
     20 === ディメンジョン === 
     21 
     22 内部構造を持たせたい'''ディメンジョン'''は、エンティティとして独立させる。 
     23 * 例えば、tag, action は、コンテキストによる揺らぎ(同字異議/同義異字など)を持つので、エンティティとする。 
     24 
     25 === 捨てたアイディア === 
     26 
     27 汎用の属性テーブルを導入することも考えられるが、それは選択しない。 
     28 
     29 その理由: 
     30 
     31 1. 汎用の属性テーブルは正規化に逆行するものであり、参考文献によると、'''ディメンジョン''' でも '''ファクト''' でもない '''ファクトディメンジョン''' と呼ばれ、要注意とされている。 
     32 2. Django での Models 定義が、明快さを失ってしまう。Django の設計思想にも反する(ような気がする)。 
     33 
     34 
     35 == 更新に関わる考察 == 
     36 
     37 特に '''card''' の追加・更新をタイムラインで追えるようにすることが、サービス上重要である。 
     38 
     39 このため、 '''card''' の属性の改変履歴を記録する。 
     40 
     41 ユーザーの'''文章'''も、この改変番号とを関連付けて記録する。 
     42 
     43 
     44 == card の構造の概念図 == 
     45 
     46http://www.gliffy.com/publish/1600050/ 
     47 
     48 
     49 == ER 図 == 
     50 
     51http://www.gliffy.com/publish/1570130/