DRYじゃない?
状態:未解決
閲覧数:2,295
投稿日:2013-07-23
更新日:2013-08-12
「intentCalendarメソッド」を2箇所で定義している理由が不明
・JAVAでは、includeできないの?
・変数の設定
・「MonthSheet.java」に記載している「intentCalendarメソッド」で生成したカレンダー配列(?)を変数へ格納
▼/src/com/fc2/blog98/andromaker/housekeepingbook/HousekeepingBook.java
・カレンダー変数定義
・intentCalendarメソッド定義
▼/src/com/fc2/blog98/andromaker/housekeepingbook/MonthSheet.java
・intentCalendarメソッド定義
・JAVAでは、includeできないの?
・変数の設定
・「MonthSheet.java」に記載している「intentCalendarメソッド」で生成したカレンダー配列(?)を変数へ格納
▼/src/com/fc2/blog98/andromaker/housekeepingbook/HousekeepingBook.java
・カレンダー変数定義
/* 変数の設定 */
int[] calendar=intentCalendar();
・intentCalendarメソッド定義
public int[] intentCalendar(){
Calendar calendar = Calendar.getInstance();//Calendarクラスのオブジェクトcalendarを生成
int year = calendar.get(Calendar.YEAR);//現在の年を取得
int month = calendar.get(Calendar.MONTH);//現在の月を取得
int day = calendar.get(Calendar.DAY_OF_MONTH);//年の何番目の日かを取得
Intent intent1 = getIntent();
year = intent1.getIntExtra("year",year);
month = intent1.getIntExtra("month",month);
day = intent1.getIntExtra("day",day);
int date= year*10000+(month+1)*100+day;
int[] calendarIntent={year,month,day,date};
return calendarIntent;
}
▼/src/com/fc2/blog98/andromaker/housekeepingbook/MonthSheet.java
・intentCalendarメソッド定義
public int[] intentCalendar(){
Calendar calendar = Calendar.getInstance();//Calendarクラスのオブジェクトcalendarを生成
int year = calendar.get(Calendar.YEAR);//現在の年を取得
int month = calendar.get(Calendar.MONTH);//現在の月を取得
int day = calendar.get(Calendar.DAY_OF_MONTH);//年の何番目の日かを取得
Intent intent1 = getIntent();
year = intent1.getIntExtra("year",year);
month = intent1.getIntExtra("month",month);
day = intent1.getIntExtra("day",day);
int date= year*10000+(month+1)*100+day;
int[] calendarIntent={year,month,day,date};
return calendarIntent;
}
テーブル作成を、なぜ「SubOpenHelper.java」のonCreateメソッドで行わないの?
各src配下ファイル
・テーブル作成は、各src配下ファイルで実施している
・なぜ?
理由判明
・日付テーブルは、予め定義したテーブルへデータINSERTする方式ではなく、その都度、日付をベースにしたテーブルを作成する仕様としているため
DB構成
・月 … createMonthTableテーブル
・日 … createTableテーブル
・うーん、でも「item」「utiwake」テーブルに関しては、onCreateメソッドで作成したほうが良い気がする
・後で、カスタマイズ検討候補
SQLite3テーブル構成はこれで良いの?
リレーションシップ
・データをidではなく、直で格納するの?
1.「ダウンロードソースコード」仕様 | 「家計簿アプリ(アプリ ソースコード)」カテゴリー | Program0
SQLiteコマンド(スキーマ情報を表示する) | SQLite入門
Android Debug Bridge | Android Developers
データの更新(UPDATE文) - データの追加と削除 - SQLite入門
外部結合(OUTER JOIN句) - テーブルの結合 - SQLite入門
Sqliteリレーションについて2 - 楽天 みんなで解決!Q&A
SQLite3で参照整合の設定 - BIGLOBEなんでも相談室
リレーショナルデータベースのデータ構造と一貫性制約
・結局、何に困るかと言われれば、DBデータ変更する際、マスターテーブル以外のデータも変更しなければいけなくなる
・後で、要カスタマイズ
具体的には、月テーブル'2013-7'の「Item」カラムには、「ポロシャツ」などの直データではなく、「item_id」を
日テーブル'2013-7-16'の「Item」カラムには「item_id」、「Utiwake」カラムには「utiwake_id」を格納することを検討
SQLite参照整合性
・制約や動作を指定できるけど、解析だけされ機能としては働かない
・しかし、トリガにより、同じような機能を実装できる
分ける必要あるの?
・テーブル構成見て気がついたんだけど、すべてのデータは日テーブルに収まってるよね
・わざわざ分割する必要あるのかしら?
・データを分けて保存せず、SELECTする際、必要に応じてデータ取得する方法ではなぜ駄目なのだろうか?
・あー、違うわ。日付名をテーブルにしているからこれは必要なのか
・日付をカラムに入れちゃ駄目なの?
・とりあえず、現状に沿って一度実装してみよう
・カスタマイズとかそれからの話でしょう