データベースの概念・特性
概要
データを集めて一元管理するためのもの
データモデル
データ間の相互関係を表した図
相互関係を整理するのがデータモデリング
DDD文脈でドメインモデリングってあったなあ
関係データモデル・階層データモデル・ネットワークデータモデルといったモデル群が存在する
関係モデル以外のモデルを実装したデータベースの実例があまり思い浮かんでいない
NoSQL(Redis、MongoDB、Bigtableなど)はどうなんだ……?
キー
primary keyは一意(ユニーク)であり、複数使えない。NULLも入れられない
複合主キー(composite primary keys)というのもあるようだ
2つの列を組み合わせてprimary keyに設定するパターン
フレームワークのドキュメントに出てくる
unique keyは列(attributes)に対して複数設定できる。NULLは重複して入れられるDBMSもある
メールアドレス・電話番号あたりに設定しておくのがいい
foreign keyは他のテーブルに定義されているkeyを参照する
If the refcolumn list is omitted, the primary key of the reftable is used. Otherwise, the refcolumn list must refer to the columns of a non-deferrable unique or primary key constraint or be the columns of a non-partial unique index.
MySQLのドキュメント内でもNDBではユニークキーまたはプライマリキーと書いてあった
NDB always requires an explicit unique key (or primary key) on any column referenced as a foreign key.
参照一貫性(Referential Integrity)を保つ必要がある
参照先のデータにレコードが存在しない場合は参照一貫性がなくなる
DBMSではだいたいエラーになることが多い?
なぜデータベースが必要なのか
データを一元管理して扱いやすくするため
(RDBMSにおいては)テーブル間をforeign keyを使って参照することで、テーブル間に関係性が生まれる
実例
RDBMS
PostgreSQL
MySQL
SQL Server
SQLite
まとめ
TODO
関連リンク
対数も学ばないとなあ……
O(log n) みたいなBig O notationは雰囲気で掴みとっている
関連するかもしれない雑多なメモ
回答に電話番号のデータ型は可変長(VARCHAR)の文字列(String)で扱えとあった
住所と同じくいろんなフォーマットがあったり、非数値の文字列「+」が含まれたり、望ましくないフォーマット調整や先頭の0が削除されてしまったりするためとのこと
非数値の文字列という意味では「-」も含むなあ
SQLiteはサーバーを必要としないことを知った
Over 2 million tests are run as part of a release's verification. The SQLite library has 156,000 lines of source code, while all the test suites combined add up to 92 million lines of test code.
200万の自動テストが動いて、テストコードも含めると9200万行になるのはえぐい
本体のコードは156,000行なんだ