SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
業務的one-to-oneという 
カージナリティ 
@ClubDB2 2014XmasParty 
久保 雅彦 (jflute)
私はだれ? 
! 久保 雅彦 
! はてなブログ、Twitterでは 
@jflute 
! オープンソースプログラマ 
! DBFluteメインコミッタ 
! 株式会社レイハウオリ 
! Javaチーム全体教育 
! 株式会社ビズリーチ・株式会社ルクサ 
! 新卒研修・Java/DB周りのフォローイング
ClubDB2登壇経験者 
第169回 
2013-09-13 
  ClubDB2でDBFlute語り 
http://d.hatena.ne.jp/jflute/20130914/clubdb2
メインテーマ 
 業務的one-to-oneとは?
能書きたらたら 
 物理的にはone-to-manyだが、 
 業務的にはone-to-oneとして 
 扱うリレーション
たぶん 
 みんな見たことある
例えば 
 [会員] と [会員住所] 
 Aさん | 市原 2004年 
– 2008年 
  | 茂原 2009年 
– 2012年 
 Bさん | 長柄 2007年 
– 9999年 
  ※住所が住んだ期間で積み上がる
有効期間カラム
だから 
  
 物理的には one-to-many 
会員 
住所
でも 
普段は、 
過去の住所に興味はない
業務的にやりたいのは 
「会員」と「今の住所」 
を検索したい
だから 
業務的にはone-to-one
なので 
業務的one-to-one
えいっ! 
select … from 会員 
mb 
left outer join 住所 
adr 
on mb.会員ID = adr.会員ID 
and adr.有効開始日 <= [現在日時] 
and adr.有効終了日 >= [現在日時] 
結合条件追加
RDB的にはジレンマ 
 詳しくは、 
  漢のコンピュータ道さんの 
  スライドにて 
// 履歴データのとこ 
「データベース設計徹底指南」 
http://www.slideshare.net/nippondanji/db-engineerstudyanim
でも現場では 
自然切り替えができて便利 
どうしてもまあ使う
でも実装でもジレンマ 
いろいろな画面で 
みーんながこれ書く
ぜったい一人くらい 
and adr.有効開始日 <= [現在日時] 
and adr.有効終了日 > [現在日時] 
ああっ
こういうの 
and adr.有効開始日 <= [現在日時] 
and adr.有効終了日 <= [現在日時] 
あああっ
やっちゃう 
and adr.有効開始日 <= [現在日時] 
ああああっ
というか 
DB変更で条件増えたら 
ジ・エンド 
※影響範囲ありすぎ…
DBFluteなら 
業務的one-to-oneの 
条件を再利用
なんか設定ファイルに…
するとJavaでは… 
SQLでは、さっきの結合条件が展開される 
結合条件の再利用
なので 
“誰か一人くらいバグ” に強い! 
条件変更にも強い!
アプリ側で 
そういうツールを使えば、 
DB設計者も安心
あとね、名前大事なんです 
DB設計のパターンに名前があることで… 
 o 会話がしやすい 
 o 概念として学びやすい 
 
さあ声に出して 
業務的one-to-one!
もう一度っ 
業務的one-to-one!
おしまい 
ご清聴 
ありがとうございました

Mais conteúdo relacionado

Mais procurados

Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔Soudai Sone
 
ASP.NETの今とこれから
ASP.NETの今とこれからASP.NETの今とこれから
ASP.NETの今とこれからTsubasa Yoshino
 
いいパブッ!! はじめてのEPUB 3
いいパブッ!! はじめてのEPUB 3いいパブッ!! はじめてのEPUB 3
いいパブッ!! はじめてのEPUB 3Hiroshi Takase
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化についてSoudai Sone
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会Soudai Sone
 
つながる本 つながる人 - HTML Conference 2015
つながる本 つながる人 - HTML Conference 2015つながる本 つながる人 - HTML Conference 2015
つながる本 つながる人 - HTML Conference 2015Hiroshi Takase
 
地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話Soudai Sone
 
Talknoteとgolangと私
Talknoteとgolangと私Talknoteとgolangと私
Talknoteとgolangと私Kenyu Miura
 
DBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎるDBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎるSoudai Sone
 
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式鉄次 尾形
 
地方における勉強会事情
地方における勉強会事情地方における勉強会事情
地方における勉強会事情Soudai Sone
 
レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦Soudai Sone
 
書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”
書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”
書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”Hiroshi Takase
 
Talknoteとgolangと私
Talknoteとgolangと私Talknoteとgolangと私
Talknoteとgolangと私Kenyu Miura
 
GhostTweet
GhostTweetGhostTweet
GhostTweetayatsuka
 
ActiveRecord::Enumのススメ
ActiveRecord::EnumのススメActiveRecord::Enumのススメ
ActiveRecord::Enumのススメ豊明 尾古
 

Mais procurados (19)

Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔
 
Phpのはなし
PhpのはなしPhpのはなし
Phpのはなし
 
ASP.NETの今とこれから
ASP.NETの今とこれからASP.NETの今とこれから
ASP.NETの今とこれから
 
いいパブッ!! はじめてのEPUB 3
いいパブッ!! はじめてのEPUB 3いいパブッ!! はじめてのEPUB 3
いいパブッ!! はじめてのEPUB 3
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
Osh2014
Osh2014Osh2014
Osh2014
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会
 
つながる本 つながる人 - HTML Conference 2015
つながる本 つながる人 - HTML Conference 2015つながる本 つながる人 - HTML Conference 2015
つながる本 つながる人 - HTML Conference 2015
 
地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話
 
Talknoteとgolangと私
Talknoteとgolangと私Talknoteとgolangと私
Talknoteとgolangと私
 
DBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎるDBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎる
 
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式
 
地方における勉強会事情
地方における勉強会事情地方における勉強会事情
地方における勉強会事情
 
レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦
 
書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”
書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”
書籍解説 “What is EPUB 3?” & “Accessible EPUB 3”
 
Talknoteとgolangと私
Talknoteとgolangと私Talknoteとgolangと私
Talknoteとgolangと私
 
GhostTweet
GhostTweetGhostTweet
GhostTweet
 
EDUPUB Profile解説
EDUPUB Profile解説EDUPUB Profile解説
EDUPUB Profile解説
 
ActiveRecord::Enumのススメ
ActiveRecord::EnumのススメActiveRecord::Enumのススメ
ActiveRecord::Enumのススメ
 

Semelhante a ClubDB2 Xmas2014 BizOneToOne

DBFlute ハンズオンから学べることは DBFlute だけじゃない
DBFlute ハンズオンから学べることは DBFlute だけじゃないDBFlute ハンズオンから学べることは DBFlute だけじゃない
DBFlute ハンズオンから学べることは DBFlute だけじゃないShin Kinoshita
 
「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみる「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみるKosuke Kuromiya
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指してHaruo Sato
 
Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)
Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)
Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)rip jyr
 
Jubatus Casual Talks #2 Jubatus開発者入門
Jubatus Casual Talks #2 Jubatus開発者入門Jubatus Casual Talks #2 Jubatus開発者入門
Jubatus Casual Talks #2 Jubatus開発者入門Shuzo Kashihara
 
MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.Ryo Amano
 
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...Developers Summit
 
アラフォーでプログラミングをはじめて思ったこと
アラフォーでプログラミングをはじめて思ったことアラフォーでプログラミングをはじめて思ったこと
アラフォーでプログラミングをはじめて思ったことhide ogawa
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うことKazuhiro Serizawa
 
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_publicYoshiharu Hashimoto
 
G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0Nobuhiro Sue
 
ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発Atsushi Kojima
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLUchio Kondo
 
バスケ複業エンジニアのたのしみ
バスケ複業エンジニアのたのしみバスケ複業エンジニアのたのしみ
バスケ複業エンジニアのたのしみTaku Watanabe
 
そろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでそろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでなおき きしだ
 
DevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: GroovyDevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: GroovyNobuhiro Sue
 
解り方と教え方
解り方と教え方解り方と教え方
解り方と教え方健人 井関
 

Semelhante a ClubDB2 Xmas2014 BizOneToOne (20)

DevOpsって何?
DevOpsって何?DevOpsって何?
DevOpsって何?
 
DBFlute ハンズオンから学べることは DBFlute だけじゃない
DBFlute ハンズオンから学べることは DBFlute だけじゃないDBFlute ハンズオンから学べることは DBFlute だけじゃない
DBFlute ハンズオンから学べることは DBFlute だけじゃない
 
「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみる「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみる
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
企業主催勉強会BPStudy〜個人が輝くコミュニティを目指して
 
Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)
Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)
Bo F 鉄は熱いうちに打て!今すぐやろう社内勉強会!(当日資料)
 
Jubatus Casual Talks #2 Jubatus開発者入門
Jubatus Casual Talks #2 Jubatus開発者入門Jubatus Casual Talks #2 Jubatus開発者入門
Jubatus Casual Talks #2 Jubatus開発者入門
 
MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.
 
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
【A-L】コミュニティが成長させるマルチクラウド環境でのデータ管理の世界 ~Docker Hubで500,000ダウンロード達成、Scality S3サー...
 
アラフォーでプログラミングをはじめて思ったこと
アラフォーでプログラミングをはじめて思ったことアラフォーでプログラミングをはじめて思ったこと
アラフォーでプログラミングをはじめて思ったこと
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
 
Dev sum2014
Dev sum2014Dev sum2014
Dev sum2014
 
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
 
G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0G*workshop 20101209 OSGi and Grails2.0
G*workshop 20101209 OSGi and Grails2.0
 
ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
 
バスケ複業エンジニアのたのしみ
バスケ複業エンジニアのたのしみバスケ複業エンジニアのたのしみ
バスケ複業エンジニアのたのしみ
 
そろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでそろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやで
 
DevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: GroovyDevSummit2011JGGUG OpenJam: Groovy
DevSummit2011JGGUG OpenJam: Groovy
 
解り方と教え方
解り方と教え方解り方と教え方
解り方と教え方
 

ClubDB2 Xmas2014 BizOneToOne