岩波書店のISBNコード騒動について考える。Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。2016-11-29岩波書店のISBNコード騒動について考える。日記Twitterを見ていたらこんなまとめを見つけた。togetter.comISBNコードといえば、すべての本に付けられる世界共通で一意なコード、という印象だった。データベースのプライマリキーとかにISBNコードは使えないなぁと思った。この問題について自分が思うことを書いていきます。そもそもISBNコードって何?どんなふうに使いまわしたの?使いまわされるとどうなるの?DBの設計にどんな問題が起きるの?DB設計時にどう対策すればいいの?そもそもISBNコードって何?世界共通で使われる本につけられるコード。出版社から刊行されて書店で流通する書籍、CD、カセット等に概ねつけられるもの。日本で管理しているのは日本図書コード管理センター。詳しくはWiki先生に聞いて。出版社XはA本を販売終了させて、増加改訂版のAAという本を発売しました。出版社Xは1000という番号はもう使わないから改訂版に使っていいだろうと思い、そのコードはAと同じ1000にしました。それを同じコードを使いまわしてしまったということです。使いまわされるとどうなるの?出版社X自体はそれで問題ないと思いましたが、コードは業界共通で、重複することはないという前提で使われるものでした。本屋Yはお店にある本の在庫をデータベースで管理しており、本はコードで区分しています。本屋Yは出版社XのA本の在庫を2冊持っており、AAという本を5冊入荷しました。コードが1000の本の在庫を入荷した分だけ5増やしました。ある時、通販でAA本の注文を受け、AA本のコードは1000なので、1000の本をお店から取り出して送りました。したら注文者から「注文した物と違うぞ!!!!」と電話が来ました。ここでミソになるのはコード1000の本が2種類あること。コードがあってればOKという前提で仕事をしていたんですね。それが、実は使いまわされていたので、コードを信用して全然違う本を送ってしまっていたんです。これが製造業で使うロットだったら、同じロットで中身の部品のバージョンが違う、という事が出てしまいます。※これは製造業では絶対にNGですDBの設計にどんな問題が起きるの?信頼できない主キーを使った場合、上の例のようにまず欲しいと思ったデータが取り出せません。いった信頼できない主キーを使ってしまうと、システム化しているのにも関わらず人が手作業でチェックするハメになります。ユーザーは社内情報システム部門にこう言います。「システムを入れたせいで仕事に時間がかかるようになった。作成したベンダーに八つ当たりします。事が起こってしまいます。実は自分が今その胃をキリキリさせている社内情報システム部門なわけだけどDB設計時にどう対策すればいいの?これについては著名なエンジニアの@t_wadaさんがこんなツイートをしている。2016年11月29日ここでのキーワードは自然キー。自然キーと言うのは、ナチュラルキーとも良い、元々のデータモデルにあった主キーとなるデータのこと。免許なら免許番号、車なら製造番号やナンバープレート等が挙げられる。これに対するのが代理キー、またはサロゲートキーとも言うもので、例えばテーブルにデータを入力した時に自動的に1番、2番...と番号が割り振られ、それがキーとして扱えるもの。要は元のデータには存在しない、必要ではないキーとして使えるデータ。この代理キーのほうが信用できない自然キーよりも信用できるということだと思う。それだったら絶対に重複しないと保証ができる自分が書いたプログラムが作ったキーのほうがよっぽど信頼できるのもわからない話ではない。いうか自分も信頼できる主キーがなかったら複合キーにするか、こういったように代理キーを作ると思う。今回の岩波書店の話は完全に下の記事の内容がそのまま当てはまる。gihyo.jpまた、こういう意見もあるのでそれも紹介する。考えさせられた話だった。20:57岩波書店のISBNコード騒動について考える。それは...2016-11-01プリンシプルオブプログラミングは常に机の上に置いておきたい1冊だったプリンシプルオブプログラミングを読みました。感想としては文...2016-07-14Railsのリソースとルーティングについて今回はRailsの基礎の1つ、リソースについて書いていきます。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。