RDBMSでは細かくTableが分割されている
RDBMSでは細かくTableが分割されている
RDBMSはBusinessで利用される「大量の人にaccessする大規模Dataを管理する仕組み」 だから(Relational)Data Base Management Systemという
Data Base Management Systemが持つべき性質として「ACID」がある これがないと困るケース
「shopには立替払いしたけどUserに請求書が出せてない」
「Userの支払いに気付かず、督促を送り続ける」
といったことも発生する
排他制御の仕組みで、Data更新が間違いなく行われるようにする 特にデータベースの正規化の存在が、「SQLで最初に、Data群(RDBMSではTableと呼ぶ)を結合する」必要性を生む データベースの正規化がやっていることは、
「1回の更新作業で、RDBMS内で変更する箇所を最小限にする」こと
たくさんあると時間がかかる
時間がかかると…途中で停電や他作業の割り込みにて、「全部が更新されない」可能性がある
具体的には、「適宜Tableを分ける」ことで対応している
table:元のTable
ID 名前 住所 好きなもの
1 たなかたろう 111-0001 ゲーム
2 たなかたろう 111-0001 野球
3 たなかたろう 111-0001 サッカー
4 たなかたろう 111-0001 バドミントン
5 やまだはなこ 102-0083 旦那
6 やまだはなこ 102-0083 娘
7 やまだはなこ 102-0083 息子
8 やまだはなこ 102-0083 パソコン
上記Tableだと…
「澤田智希」が引越しするたびに住所を4箇所更新する必要がある。
「たなかたろう」さんの名前を漢字に変換するために4箇所更新する必要がある。
今は…4箇所だけど、好きなものが増えるたびに「更新箇所が増える」のも問題
table:User(正規化した後のTable)
ID 名前 住所
0001 たなかたろう 111-0001
0002 やまだはなこ 102-0083
table:Favorites(正規化した後のTable)
ID UserID 好きなもの
1 0001 ゲーム
2 0001 野球
3 0001 サッカー
4 0001 バドミントン
5 0002 旦那
6 0002 娘
7 0002 息子
8 0002 パソコン
正規化して2つにTableを分けると
「やまだはなこの住所」も「たなかたろうの漢字」も1箇所更新するだけでOKとなる
RDBMS(+SQL)の世界では「Tableを分けて保存し、更新作業を最小限にしつつ…活用(表示)するときにTableを適宜結合する」ようになっている。