気まぐれブログ

FFXI関係の開発の話とかプレイ日記なんかを 気が向いたときに書き綴っていくブログ

MySQLのこと

MySQLを使ってみたところ中々快適に動作してるようです。
自宅の貧弱なサーバー環境でもサクサク動作してくれます。

サーバー環境
 TOSHIBA Dynabook Satellite
 CPU Pentium3-833MHz
 メモリ 256MB
 HDD 20GB

さて、このMySQLですが今日は仕様の問題で大はまりしました。
SQLをカタカタ書いてクエリを送ってみたものの結果がNULL・・・
間違ってるのかなーっと構文をチェックすること3時間。
やっぱり間違っていそうな所はありません。

ぐぐってみたところ理由がわかりました。

MySQLは「SELECT文で副問い合わせはできない」

だそうです。
とほほ・・・仕方ない自分でループ回すことにします;

データ作成

アイテムデータの作成に「ふぉ」を半日掛けてカスタマイズ。(済)
レシピデータの作成に「Moogle for Windows」のカスタマイズ。(未)
納品データの作成は手動で入力。(未)

Moogleの時と同じでデータ関係に振り回されそうですね。
今日はレシピデータ作りで1日終わりそうな予感です。

アイテムの検索

納品クエのスクリプト作成中に気づいたんですが
IDからアイテム名を取得してこないと作れません(汗
ってことで先にデータベースの設計をしてみました。

アイテムデータ
 新規→ふぉを改良したデータからCSV出力→MySQLにインポート
 保守→バージョンアップごとに登録しなおし

レシピデータ
 新規→Moogle for Windowsを改良したデータからCSV出力→MySQLにインポート
 保守→ユーザーさんにフォームから登録して貰って管理権限の人が認証

納品クエデータ
 新規→情報サイトからCSV形式でコピペor自分で入力→MySQLにインポート
 確定方法→ffrecipeさんと同じ絞込みにします

とりあえずはこんな感じで行こうかと思います。

指定生産クエ

某掲示板で指定生産クエの検索が欲しいって記事を見たので
作り始めてみました。

簡単に出来るかと始めてみたもののPHPって結構大変ですねぇ。
言語自体はJavaやらCに近いので簡単なんですがUIが面倒です。
下手したらレシピ検索のシステムより面倒かも・・・

半日かけてパターンの予定表の自動生成するところだけ
Java版の検索が2日でほぼ完成したのを考えると
結構大掛かりなことになりそうです。

Moogleデータ仕様

では現在公開中のデータベースの仕様について考えてみましょう。
閉鎖されたサイトMoogle(以降旧Moogle)が公開した際、
2年くらい前でしょうか。。。にまとめた私のメモは↓です。


データ仕様については開発当時(2年くらい前?)に自分で書いたメモがありましたので貼り付けときます。

1.レコード項目
 アイテムデータは1行を1レコードとし、 「,」を区切り文字として使用するCSV形式。
 1レコードに対応する項目の名称。
0 アイテム番号
1 アイテム名[半角スペース]個数
2-9 合成材料
10 クリスタル番号
11-20 生産スキルフラグ
21-30 必要スキル値
31-40 限界スキル値
41 ハイクォリティアイテム
42 ギルド番号
43 レシピランク
44 アイテム説明
45 EXフラグ
46 Rareフラグ
47 スタック情報
48 分解アイテム[スペース]個数

2.データ項目の詳細
 1)アイテム番号
アイテムを識別する一意のキー番号。半角数字、省略不可。
 2)アイテム名[半角スペース]個数
合成で作成されるアイテム名称及び作成時に完成するアイテムの個数。
アイテム名・・・文字及び記号、省略は不可。
個数・・・半角数字、省略可能。デフォルト値は1。
 3)合成材料
合成に使用する材料の名称。
文字、省略可。デフォルト値は空白。
 4)クリスタル番号
合成に使用するクリスタルの番号。
半角数字、省略可。デフォルト値は9。
crystal(0:指定無し 1:炎 2:水 3:土 4:風 5:雷 6:氷 7:光 8闇 9-)
 5)生産スキルフラグ
合成に必要となる生産スキル
省略可能でデフォルト値は0。
0:不要 1:必要。
skill(0:指定無し 1:鍛冶 2:裁縫 3:錬金術 4:木工 5:彫金 6:革細工 7:骨細工 8:釣り 9:調理)
 6)必要スキル値
合成に必要なスキル値。順番は配列skillに対応。
3バイトまでの半角数字及び空白。デフォルト値は空白。
skill(0:指定無し 1:鍛冶 2:裁縫 3:錬金術 4:木工 5:彫金 6:革細工 7:骨細工 8:釣り 9:調理)
 7)限界スキル値
合成であがるスキルの限界値。順番は配列skillに対応。
3バイトまでの半角数字及び空白。デフォルト値は空白。
skill(0:指定無し 1:鍛冶 2:裁縫 3:錬金術 4:木工 5:彫金 6:革細工 7:骨細工 8:釣り 9:調理)
 8)ハイクォリティアイテム
合成で完成するハイクォリティのアイテム名。<>を区切り文字にしてHQ1<>HQ2<>HQ3とする。
各HQデータは256バイトまでの文字とし、省略可能。デフォルト値は空白。
全データは772バイトまでの文字とし、省略可能。デフォルト値は空白。
 9)ギルド番号
レシピが聞けるギルドの番号。
省略可能。デフォルト値は0。
skill(0:指定無し 1:鍛冶 2裁縫 3:錬金術 4:木工 5:彫金 6:革細工 7:骨細工 8:釣り 9:調理 null:レシピなし)
 10)レシピランク
レシピが聞けるランク。
rank(0:指定無し 1:素人 2:見習い 3:徒弟 4:下級職人 5:名取 6:目録 7:印可・・・ 99:隠し)
 11)アイテム説明
アイテムに関する説明。改行文字は
を使用する。
 12)Exフラグ
アイテムのEXステータスフラグ。
数字、省略可能。デフォルト値は0。
0:属性なし 1:属性あり
 13)Rareフラグ
アイテムのRareステータスフラグ。
数字、省略可能。デフォルト値は0。
0:属性なし 1:属性あり
 14)スタック情報
アイテムがスタック可能かどうか。
数字、省略可能。デフォルト値は0。
0:不可 1:可能
 15)分解アイテム[スペース]個数
アイテムを分解した際に得られるアイテム名及び個数。
アイテム名・・・省略可。デフォルト値は空白。
個数・・・半角数字、省略可能。デフォルト値は1。

このデータベース形式の利点は
・検索速度が速い
・単純な形式なのでデバッグがし易い(ソフトが作り易い)
・閉鎖時に公開されたデータフォーマットで他サイトと互換性がある(あった)。



とこんな感じです。少し古いメモなので多少間違いがあるかも知れませんが それほど変化も無く仕様通り動作しているのでは無いでしょうか。

今の所特に問題も無いですし今後もこのDB形式で継続していくつもりです。

今後の課題はデータの保守ですね。
もう少し私の手間が掛からない方法を考えないと・・・

«  | HOME |  »

FC2Ad

FC2ブログ 紹介予定派遣

プロフィール

[HN] Masashi
[年齢] 29
[出身] 名古屋
[職業] SEプログラマー
[趣味]
 フリーウェアの作成
 FFXI
 アクアリリウム
 小説
 漫画
 ネットサーフィン
[出没する板]
 アクア板
 ネ実板
 サプリ板
 FFXI生産板(したらば)

最近の記事

最近のトラックバック

友達申請フォーム

この人と友達になる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する