プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために(ジョー・セルコ ミック ミック)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために

プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために


翻訳
監修

形式:
書籍
発売日:
ISBN:
9784798144573
定価:
3,960(本体3,600円+税10%)
仕様:
B5変・336ページ
カテゴリ:
データベース
キーワード:
#データ・データベース,#ネットワーク・サーバ・セキュリティ,#システム運用,#開発環境
紙の書籍

SQLの第一人者であるジョー・セルコの名著『プログラマのためのSQL(原題:Joe Celko's SQL for Smarties)』のスピンオフとして執筆された『Joe Celko's Trees and Hierarchies in SQL for Smarties, 2nd Edition』の日本語版です。本書では、現場で実務経験のあるエンジニアを対象として、リレーショナルデータベース(RDB)とSQLを使って木と階層構造を扱うための方法論と実践ノウハウを詳しく解説します。

SQLで木と階層構造を扱うには、そのベースとなる数学理論と、RDBでの具体的な実装方法をきちんと理解しなければなりません。本書では、RDBとSQLで木と階層構造を効率的に扱うにはどのようなデータモデルが最適であるか、さまざまなモデルを検討しながら習得していきます。単なるTips集ではなく、グラフ理論の背景にまで踏み込んで理解することで、高い応用力を身につけることが可能です。

翻訳と監修は『達人に学ぶSQL徹底指南書』『プログラマのためのSQL 第4版』でおなじみのミック氏が担当。日本語版では、巻末付録として、入れ子集合モデルについての理論的な参考情報や実用例の解説を追加(ミック氏執筆)。SQLを扱うエンジニア必携の一冊です。

第1章 グラフ、木、階層
第2章 隣接リストモデル
第3章 経路列挙モデル
第4章 入れ子集合モデル
第5章 頻繁に挿入が行なわれる木
第6章 入れ子集合モデルの線形バージョン
第7章 二分木
第8章 木を表現するその他のモデル
第9章 木を扱うための実装依存の拡張
第10章 データモデリングにおける階層
第11章 階層を持ったコード体系
第12章 SQLにおけるグラフ
第13章 ペトリネット
第14章 状態遷移グラフ
第15章 階層型データベース(IMS)
付録 訳者による解説──ミック

付属データはこちら

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2016年09月13日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 020
コードの3つ目 1~2行目
CREATE VIEW Personnel_OrgChart (emp_nbr, emp_name, boss_emp_nbr, boss_emp_name)
CREATE VIEW Personnel_OrgChart (emp_nbr, emp_name, boss_emp_name)
2016.09.13
1刷 024
コードの2つ目 最終行
CHECK NOT (emp_name IS NULL AND boss_emp_name IS NULL)));
CHECK (NOT (emp_name IS NULL AND boss_emp_name IS NULL)));
2016.09.13
1刷 052
「バージョン3」のコード 1~7行目
SELECT SUBSTRING('/' || P1.path_string || '/'          FROM S1.seq +1          FOR CharIndex('/', '/' || P1.path_string || '/', S1.seq +1)                 - S1.seq - 1) AS node  FROM Series AS S1, Personnel_OrgChart AS P1 WHERE SUBSTRING('/' || P1.path_string || '/' FROM S1.seq FOR 1) = '/'  AND seq < CHAR_LENGTH('/' || P1.path_string || '/');
上記部分を削除します。
2016.09.13
1刷 077
コードの2つ目 4行目、コードの下の文章 1~2行目
コード4行目 AND :n = (SELECT COUNT(S2.lft) - 1 文章 1~2行目 ここでは、親を除外するためにCOUNT関数の結果から1を引いている点に注意してほしい。
コード4行目 AND :n = (SELECT COUNT(S2.lft) 文章 1~2行目 上記内容を削除します。
2016.09.13
1刷 144
「ステップ3」の説明文 1行目
shift列の値が
traversal_nbr列の値が
2016.09.13
1刷 149
1行目
しかも、他のノードの座標を一切動かす必要ない。
しかも、他のノードの座標を一切動かす必要ない。
2016.09.13
1刷 251
「11.4 商品のカテゴリ」コードの1つ目 4行目
product_categories CHAR (3) NOT NULL
product_category CHAR (3) NOT NULL
2016.09.13

感想・レビュー

mft さん

2020-10-18

木を入れ子集合とか区間とかで表す。SQLで整合性を保ちながら取り扱う。こわちかな世界

Q さん

2019-08-30

SQLの具体的なテクニックについて知りたい、と安易に考えて手にしてしまいました。ツリーをRDBテーブルを使って表現する時点でかなりの狂気を感じました。むしろ参照やポインタを使って実装するよりも不変条件が増えてしまっているのではないでしょうか。ツリーを辿る時にメリットはあるとはいえ本末転倒な印象を受けました。#SQLで何でもできる は #Excelで何でもできる や #シェル芸 に似ていて、当の本人には正しい使い方に感じられるけれど、僕のような外野には別の技術を使った方が良いのではと思わせてくれる本でした。