RDBMSにはPostgreSQLを使っています。
テーブル名の後ろの()の中身は、主キーを表しています。
ポケモンのデータ
pokedex(pokedex.id) ポケモンの基本データ
図鑑番号(No.)はリザードンとメガリザードンX(No.=6)のように重複することがあるため、
id=No.+連番 の浮動小数で表現することにする。
例:
No. | id | name |
---|---|---|
6 | 6.1 | リザードン |
6 | 6.2 | メガリザードンX |
6 | 6.3 | メガリザードンY |
create table if not exists pokedex( id real primary key, --ポケモンID(id=no.form=図鑑番号.フォルム) no int not null, --図鑑番号 name varchar(32) not null unique, --ポケモン名 eng varchar(32) not null, --ポケモンの英語名 type1 varchar(8) not null, --タイプ1(=type.eng) type2 varchar(8) default 'なし', --タイプ2 abl1 varchar(32) not null, --通常特性1(=ability.abl) abl2 varchar(32) default 'なし', --通常特性2 abl3 varchar(32) default 'なし', --隠れ特性 H int not null, A int not null, B int not null, C int not null, D int not null, S int not null, sum int not null, --合計種族値 icon text, --アイコンのURL height real not null, --高さ weight real not null, --重さ lowkick_power int not null, --けたぐりの威力 stage int not null, --進化段階 1:未進化 2:中間進化 3:最終進化 legend boolean not null, --1:伝説・幻 0:それ以外 insv boolean not null --1:SVに存在する 0:しない );
poke2chem ポケモンごとの弱点・耐性
※このテーブルはidごとのパーティションテーブル
パーティションテーブル名は、id=4.1のヒトカゲなら、chem4_1
--各ポケモンが攻撃されるときの耐性値の一覧 create table if not exists poke2chem( id real, --攻撃されるポケモンのID(=pokedex.id) attr varchar(8) not null, --攻撃技のタイプ chem real not null --攻撃されるポケモンのタイプ補正値(特性非考慮) )partition by list(id);
lang 各言語のポケモンに関する単語の一覧
create table if not exists lang( class int not null, --0:ポケモン,1:技,2:特性,3:持ち物,4:タイプ,5:性格 jpn varchar(32) not null, --日本語 eng varchar(32) not null, --英語 ger varchar(32) not null, --ドイツ語 fra varchar(32) not null, --フランス語 kor varchar(32) not null, --歓呼国語 cs varchar(32) not null,--簡体字 ct varchar(32) not null--繁体字 )partition by list(class);
move(move.id) 技の一覧
create table if not exists move( id int primary key, --技ID move varchar(32) unique, --技名 attr varchar(8) not null, --技タイプ class varchar(2) not null, --技の分類(物理,特殊,変化,不定) power int not null, --威力 accuracy int not null, --命中 PP int not null, --PP direct boolean not null, --接触技かどうか protect boolean not null, --守るを貫通するかどうか target varchar(8) not null, --技の対象 text text not null --技の説明 );
poke2move ポケモンごとの覚える技
※poke2moveのidはsvに存在しているポケモンのidのみを参照している
※このテーブルはidごとのパーティションテーブル
パーティションテーブル名は、id=4.1のヒトカゲなら、move4_1
create table if not exists poke2move( id real, --ポケモンID(=pokedex.id) moveid int not null --技ID(=move.id) )partition by list(id);
type(type.eng) タイプの一覧
create table if not exists type( eng varchar(8) primary key,--タイプの英語名 name varchar(8) not null, --タイプの日本語名 name2 varchar(1) not null --タイプの単漢字名 );
ability(ability.abl)
※ability.idは全然使っていない…
create table if not exists ability( id int primary key, --特性ID abl varchar(16) not null, --特性名 text text not null --説明 );
各種補正
cor_nature(cor_nature.nature) 性格補正表
create table if not exists cor_nature( nature varchar(8) primary key, --性格名 a real not null, --A補正値 b real not null, --以下略 c real not null, d real not null, s real not null );
cor_type_atk(attr=move.attr) タイプ相性表(攻)
--攻撃するときのタイプ補正値の一覧 create table if not exists cor_type_atk( attr varchar(8) not null, --攻撃技のタイプ eng varchar(8) not null,--タイプの英語名 cor real not null --攻撃するときの補正値 );
cor_type_def(type=type.eng) タイプ相性表(防)
--攻撃されるときのタイプ補正値の一覧 create table if not exists cor_type_def( eng varchar(8) not null, --攻撃されるポケモンのタイプ attr varchar(8) not null,--技タイプの英語名 cor real not null --攻撃されるときの補正値
cor_abl_atk(name=ability.abl) 特性補正表(攻)
--攻撃するときにタイプ補正がかかる特性の一覧 create table if not exists cor_abl_atk( abl varchar(16) not null, --攻撃するときにタイプ補正がかかる特性 attr varchar(8) not null,--技タイプの英語名 cor real not null --攻撃するときの補正値 );
cor_ability_def(name=ability.name) 特性補正表(防)
--攻撃されるときにタイプ補正がかかる特性の一覧 create table if not exists cor_abl_def( abl varchar(16) not null, --攻撃されるときにタイプ補正がかかる特性 attr varchar(8) not null,--技タイプの英語名 cor real not null --攻撃されるときの補正値 );
その他のデータベース
sqlcmd(name) 「?」から始まるSQLコマンドを管理するテーブル
※discordからも操作できるようにINSERT権限を与える
--「?」から始まるSQLコマンドに関する情報の一覧 create table if not exists sqlcmd( id int default 0, --各コマンドの表示優先順位 name varchar(16) primary key, --コマンド名 cmd text not null, --コマンドに対応するSQL文 text text default '未編集', --コマンドの説明 i1 varchar(8) default '-', --引数1 i2 varchar(8) default '-', --引数1 i3 varchar(8) default '-', --引数1 o1 varchar(8) default '未編集', --出力1 o2 varchar(8) default '-', --出力2 o3 varchar(8) default '-' --出力3 );