ファンタジー生産管理システムの開発2の続きです。
WindowsマシンにPostgreSQL 9.4.4をインストールしてみました。
※もともと9.3をインストールしてあったので、各種アンインストール後、postgresユーザーを削除してから実施しました。
TL;DR
PostgreSQL使いやすい!
- PostgreSQL=BSDライセンスで公開されているRDBMS
- pgAdmin IIIというGUIツールが付属
- SQLに詳しくない人でも直感で環境構築&テーブル作成ができる
- フリーソフトのA5:SQL Mk-2からもDBに接続可能
- SQLによるデータ操作やテーブル定義書作成などの恩恵あり
- オープンソースのライブラリNpgsqlを使えばC#からPostgreSQLに接続できる
女騎士さんは「SQL初心者」のスキルを手に入れました
PostgreSQLまわりについてメモ
- PostgreSQL=BSDライセンスで公開されているRDBMS
- Oracle、MySQLとよく比較される
- PostgreSQLはテーブルパーティショニング機能を標準機能として使える
- 巨大なテーブルに対して設定することはあるかも
- 古いデータの退避・インデックス作成以外にもパフォーマンスをチューニングする手段があるということ
- ライブラリNpgsqlについて
- C#からPostgreSQLのデータを操作するライブラリ
- http://www.npgsql.org/about.htmlのLicenceおよびNuGetのライセンスを読む限り、BSDライセンス
インストール&環境構築
- Windowsへのインストールは基本デフォルトのままでNext連打
- postgresユーザーのパスワードは忘れないようにメモする
- インストール後、DB作成などはこのpostgresユーザー(スーパーユーザー)で作業する
- WindowsOSアカウントにもpostgresユーザーを作成する必要がある
- インストール直後、postgresというDBがあるが、ここにはテーブルを作らずに作業用に別DBを作る
- pgAdmin IIIで環境構築できる(SQL書かなくても)
- なぜ象なんだ。かわいいけど
- 作業用ユーザー作成→作業用DB作成の順で良いはず(いずれもpostgresユーザーで作業。ユーザー=ログインロール)
- 作業用DBのオーナーは作業用ユーザーにしておく
- もし、DBの権限とか分からなかったらとりあえず作業用ユーザーに全て与えておく
- テーブルとか作りたいので
- もし、DBの権限とか分からなかったらとりあえず作業用ユーザーに全て与えておく
- 作業用DBを作業用ユーザーで操作する
-
A5:SQL Mk-2からもDBに接続可能
- SQLによるデータ操作やテーブル定義書作成などの恩恵あり
-
A5:SQL Mk-2からもDBに接続可能
- DBの中にはスキーマがある
- デフォルトでpublicスキーマ
- 複数のスキーマを持たせることも可能で、テストとかに便利かも
- 作業用DBにテーブルなどのオブジェクトを作る
- スキーマを指定はとりあえず意識しなくて良い
- スキーマ指定しなれけば自動的にpublicスキーマに作られる
- テーブルなどのオブジェクト作成時の名称は小文字が便利
- 小文字で作成した場合(test_tableを作成)
- select * from test_table; → OK
- select * from TEST_TABLE; → OK
- 大文字で作成した場合(TEST_TABLEを作成)
- select * from test_table; → NG
- select * from TEST_TABLE; → NG
- 「リレーション"test_table" が存在しません」のようなエラーになる
- 大文字で作成したテーブルも""で囲めば一応selectできる
- 小文字で作成した場合(test_tableを作成)
- オートシーケンス付きのテーブルも作れる
- シーケンスを作成
- テーブルを作成
- テーブルのオートシーケンスしたい列の初期値に
nextval('シーケンス名'::regclass)
を設定する
- 文字列データは文字列長を指定しないで一律text型でも可
- 使う文字数があらかじめ分かっているときはcharacter varying型にすると良い
- DBサイズ見積りの目安になることがある
- character型を使うメリットはあまりないらしい
- 使うとしたら'Y'/'N'フラグのときぐらいか
- そんなときはboolean型使えよ、だと……(くっ、殺せ)
- 使うとしたら'Y'/'N'フラグのときぐらいか
- 使う文字数があらかじめ分かっているときはcharacter varying型にすると良い
前回のソースを直してみた
ファンタジー生産管理システムの開発2のデータまわりをPostgreSQLに担当してもらった。
GitHub始めました。→こちら
GitやGitHubの作法が合ってるか分からない……。
今後の方針メモ
テーブル名の仮ルール
- 一時的な表はa始まり(例:一時表atmp)
- マスタテーブルはm始まり(例:取引マスタmtrd)
- トランザクションテーブルはt始まり(例:受払履歴treciss)
オークさんと一緒に作る予定
- 実地棚卸
- 理論在庫と実在庫の差分が発生する
- 受払の記録を強化する
- 工程・製造品と紐付ける
- 理論値で受払する
- BOM
- 理論値で計算するための根拠となる
- 品目マスタ
- リードタイム
- 簡易的なMRP
- 有効在庫とリードタイムから所要量を計算する
- 指図を作る