written: 2006-03-14 .. 2006-12-26
複式簿記システム | Perl/CGI で MySQL データベースを扱う上での注意点 | Webookmark
データベースのことを知らないでプログラミングをしていると、プログラムで扱うデータをすべてプログラマが自前で管理することになります。メモリ上に存在する変数のデータはプログラム内で管理するのが当然ですが、ファイルに保存するような恒久的なデータの管理が発生する場合には、その管理方法を考えることは(とりわけ筆者にとって)それなりに悩ましい問題でした。例えば筆者はこれまで CGI プログラミングでアクセスカウンタや掲示板などを作成してきましたが、それらのデータをどのような形式でファイルに蓄積するかが、一番の悩みどころであり、また、新しい機能を実現しようとするたびに、古いデータファイルとの互換性は切り捨てざるを得ませんでした。
ところが、データの蓄積に関して、DBMS 利用を前提にしてプログラミングした場合、プログラマは DBMS に対して SQL を通じた操作を考えるだけでよく、実際の物理的なファイルの問題から解放されることになります。いわゆる「ANSI/SPARC 3層スキーマ」における「内部スキーマ」による「物理データの独立」というのはこれのことなのでしょう。
(2006-12-26)
RDBMS の入門書の中で最良の本だと思います。致命的ではないものの誤記があってちょっとわかりにくくなっている場所が数カ所存在するのが残念なので、ここに記しておきます(この本は良い部分が多いだけに余計に誤記部分が目立ってしまうわけです)。

図中の SQL 文では列名に表名を付記して「売上明細 . 商品コード」という風に記述している部分が何ヶ所かあるが、表名(売上明細)の修飾は不要かも。もちろん修飾しても問題はないが、この表の中で修飾している場合と修飾していない場合とが混在していて統一されておらず、初心者には誤解・混乱の種となるので、余分なものはできるだけ省いた方が無難と思われる。
真ん中の図「権限を移譲する」の中でユーザBが 2 人描かれているが、下側のユーザBは人物イラストとともに「ユーザA」の間違い。