2008年1月28日月曜日

読んでいて腹が立ってくる本

こんな本、久しぶり。前回は2005年、Arton著の.net本でした。
今回は、「データベース技術第7版」でした。
版を重ねているので大丈夫と思ったのですが甘かったです。
読者に対する配慮が全然足りないです。
何を言っているのかが分からない説明や、納得いかない説明や、一般化しちゃいけないところなのに「○○では、」というものがないものや、説明を端折りすぎて何が目的なのかが分からなくなるところがありすぎて、半分も読んでいないのに挫折しそうです。




具体的に1つづつ例を挙げると:
何を言っているのかが分からない説明:
P.170:スケジュールの図式表示方式と直列可能性判定グラフ。T1:L1(x)U1(x)L1(y)U1(y)で、Li(x)はxの専有ロック(占有ロック?)で、Ui(x)はxのアンロックという説明で始まっているのだけれど、そもそも直列可能性の問題では、こんな表記の問題でないし、問題をこのような形式に変換する方法が例示されていないので使えないと思う。なんか、P.171のスケジュールの図式表示方式の図も斜線部分の範囲も本文中の図の描き方説明と違っているように思えるし。3.4(P.167)の説明は、ほとんど理解ができません。

納得いかない説明:
P.168:図3-62整合性制約の侵害の例:

トランザクションT1:
SELECT 手術予定.手術 ...①
FROM 手術予定,医者
WHERE 年月日='2005.10.10'
AND 医者.氏名 = 手術予定.氏名
AND 医者.担当手術名='ヘルニア'
UPDATE 手術予定 ...②
SET 手術='ヘルニア'
WHERE 年月日='2005.10.10'
COMMIT;

トランザクションT2:
SELECT 医者.氏名 ...③
FROM 手術予定,医者
WHERE 年月='2005.10.10'      (年月日の間違い?)
AND 医者.担当手術名 = 手術予定.手術
AND 医者.担当手術名='ヘルニア'
UPDATE 手術予定 ...④
SET 氏名='城島'
WHERE 年月日='2005.10.10'
COMMIT;

で、①③②④の順に実行されると手術予定は「城島,ヘルニア,2005.10.10」となるが、城島はヘルニアの手術をできない。(整合性制約の侵害)
という説明があるが、どんな実行の仕方をしても、②と④を実行すればこうなってしまうように見える。



一般化しちゃいけない説明のはずなのに。。。:
P.119 ORDER BY 句
ORDER BY 句で指定しない列名は、問い合わせ指定の選択リストに現れても現れなくても良いが、ORDER BY 句で指定する列名は必ず問い合わせ指定の選択リストにも指定しなければならない。

DECLARE CR CURSOR
FOR SELECT 店舗名,住所,代表電話
FROM 店舗
ORDER BY 店舗コード,店舗名
はエラー。

。。。どんなDBMSでもそうだっけ?


説明を端折りすぎ:
P.110 CREATE TABLEのMATCH句の説明:
 MATCH句は外部キーが複数列からなり、NULLを許す場合に指定する。
→どうしたい場合にどのように記述するかが不明。

p.97 自立型言語方式:
 Unix系RDBMSの第4世代言語(例としてTSQLやPL/SQL)などがある。
→などを使っておいて、他の例示がなし?


はぁ。

0 件のコメント: