Androidプログラミング質問スレ Part28
■ このスレッドは過去ログ倉庫に格納されています
00910 ◆SeZffd6X/Q
2012/12/27(木) 03:33:54.67>>74
その他、SQLの代表的な便利機能として「リレーションシップ」などもあります。
テキスト型で行っているときに、管理のしやすさから、なるべく全てのデータを1ファイルにまとめて記録しようと考えます。
しかし1人のデータ=1行すべて収めるやり方だと
「キャラクター名(10byte)だけ取得」したいのに、まったく不必要なデータが後ろに100kbyte余計に取得してしまったりなど無駄が出てきます
(いったん1行分まるまる変数に読み込み、その後「名前」だけ取得する場合)
これを回避するには、今度はファイルを複数に分けて管理する事になります。
「ログイン情報.txt」「キャラクター情報.txt」「所持アイテム.txt」「装備品.txt」
しかしテキスト型の場合、基本的にファイル数が増えていくと管理が面倒になっていきます。
例えば「[Aプレイヤー]の[サブキャラクター]の[手の装備]の装備名」を取得したい場合に
1:「ログイン情報.txt」からユーザー識別IDを取得する
2:1で取得したIDを使い「キャラクター情報.txt」からサブキャラクターIDを得る
3:2で取得したIDを使い「装備品.txt」から手に装備されてるアイテムIDを得る
4:3で取得したIDを使い「所持アイテム.txt」から装備品名称を得る
※多少作り方に左右されます
SQLの場合、上の処理はやはり1行で簡単に行えます。
これがリレーションシップです(リレーのバトンのようにIDを渡していくため)
他にも複数分かれているファイル(テーブルという)を1ファイルのように結合したり
Aファイルの「IDだけ」、Bファイルの「死亡フラグ」だけと必要なファイルの必要な部分だけを結合し
新しいファイルCを作成したりとても便利です。
長くなりましたが、当時CPUが2.4GHzのペンティアム4マシンで、カーソルまわしで2時間かかっていた処理が
SQLに変えることで2分で終わるようになったことが有ります。
基本的にデータ数が大きいものほど、テキスト型より管理が楽になります。
興味がわきましたらSQLの検討を考えてみてください。
■ このスレッドは過去ログ倉庫に格納されています