SlideShare a Scribd company logo
2014/05/10 CLR/H in TOKYO #2 VB Festival
データモデリング初歩
Ahf(小尾 智之)
2014/05/10 CLR/H in TOKYO #2 VB Festival
self introduction
VB 使い
WF メイニア
CLR/H スタッフ
てすとぶろぐ
http://blogahf.blogspot.jp/
@twit_ahf
Tomoyuki.Obi
@IT
エンジニアライフ
地方からの戯言
プロレス好き
DDT / BJW / K-DOJO
みちのくプロレス
2014/05/10 CLR/H in TOKYO #2 VB Festival
https://www.facebook.com/grou
ps/175020096009440/
2014/05/10 CLR/H in TOKYO #2 VB Festival
agenda
1. データモデリングとは
2. 業務システム的データモデリング
3. SQL によるデータ操作
2014/05/10 CLR/H in TOKYO #2 VB Festival
データモデリングとは
• 情報を正しく保持するための設計
– 情報の親子関係
– 情報間の繋がり度合
• DBのテーブル設計も含まれる
• 論理的構造の設計から、物理的な
構造設計を行うのが基本の流れ
– 設計後は論理と物理を互いに修正しあう
2014/05/10 CLR/H in TOKYO #2 VB Festival
Entity と Relation
• エンティティ≒情報
– エンティティ間の繋がり=リレーション
• これを図に表したものが ER 図
– 論理ER図
• エンティティの設計
– 物理ER図
• DB上での設計
2014/05/10 CLR/H in TOKYO #2 VB Festival
主キーと外部キー
• ある情報の塊においてデータを一意に
識別するための項目群=主キー
– 適当な UniqueID 値を持つ項目を主キーと
する方法もよく使われる
• 別の塊との関係を表す項目群=外部キー
親となる側では主キーとなる
2014/05/10 CLR/H in TOKYO #2 VB Festival
多重度
• ある情報の塊とある情報の塊が
n:m
の関係となる場合の数値
• 親一人に子供数人、というケース
伝票ヘッダと明細とかが該当
• 1:0..1 は親が1に対して子は0または1
2014/05/10 CLR/H in TOKYO #2 VB Festival
制約
• テーブル間やテーブルのカラムに対して
指定できる
• レコードが登録できる条件
カラムに値を設定できる条件
• 基本は子供側に
「親はこのテーブル」
という制約をかけたりする
2014/05/10 CLR/H in TOKYO #2 VB Festival
NULL
• 未設定を表す特殊な値
• システムによって利用するかどうか様々
• 未設定を識別できる必要があるかどうか
でNULLを利用するかどうかを決める
2014/05/10 CLR/H in TOKYO #2 VB Festival
DEFAULT
• 項目の初期値
• 値を指定せずにレコード追加を
行った場合に適用される
• 数値系項目の初期値や、日付系項目に
システム日付を設定などで利用
2014/05/10 CLR/H in TOKYO #2 VB Festival
トリガ
• データを追加 / 更新 / 削除した際に
呼び出される処理
– DBによっては処理前 / 処理後のタイミングを
指定できるものもある
– INSTEAD OF トリガを利用すると Enterprise
版ではない SQL Server でも更新可能なビュー
を定義できる
• レコードの更新日時などでよく利用
2014/05/10 CLR/H in TOKYO #2 VB Festival
正規化
• 情報の重複や n:m の関係をなくすことで
シンプルにデータを保持する構造
• 理屈上は正規化した方が早いが
必ずしもそうとは限らない
– DBが動作しているHWの性能が関連するので
理屈通りとはいかない
– DB製品の仕組みにも依存する
2014/05/10 CLR/H in TOKYO #2 VB Festival
モデリングの例
セミナールーム
セミナールームには
座席がたくさんある
2014/05/10 CLR/H in TOKYO #2 VB Festival
モデリングの例
セミナールーム
座席は場合によっては片づけられることも
あるので 0~n となる
座席
1
0..*
2014/05/10 CLR/H in TOKYO #2 VB Festival
モデリングの例
セミナールーム
椅子も場合によっては片づけられることも
あるので 0~n となる
椅子は座席に対して設置されるので、親は座
席となる
座席
1
0..*
1
0..*
椅子
2014/05/10 CLR/H in TOKYO #2 VB Festival
モデリングの例
セミナールーム
この関係では、座席がなければ椅子は存在できない
座席
1
0..*
1
0..*
椅子
座席がなくても椅子を置くことがあった場合は?
2014/05/10 CLR/H in TOKYO #2 VB Festival
モデリングの例
セミナールーム
座席1
0..*
1
0..*
椅子
その場合はセミナールームに椅子を設置することに
なるので、親がセミナールームとなる
2014/05/10 CLR/H in TOKYO #2 VB Festival
モデリングの例
セミナールーム
座席1 0..*
1
0..*
椅子
その状況でも座席に設置した椅子を関連付けるなら
間に座席と椅子を紐づける情報が必要
設置椅子
10..*
0..*
1
2014/05/10 CLR/H in TOKYO #2 VB Festival
業務的データモデリング
• データ志向アプローチ(DOA)
• 実際に存在するものをデータに定義
• 目に見えるものだけではなく見えない
ものをデータとすることもある
– 履歴系の情報など
2014/05/10 CLR/H in TOKYO #2 VB Festival
実体からデータ化
• 実際に存在する情報を元に
テーブル構造を設計する方法
• 最低限必要なものを揃えやすい
• システムに必要な項目候補が見えやすい
2014/05/10 CLR/H in TOKYO #2 VB Festival
商品の画像 商品の名称
商品の価格
2014/05/10 CLR/H in TOKYO #2 VB Festival
商品の在庫数
予定配送日
2014/05/10 CLR/H in TOKYO #2 VB Festival
要件のデータ化
• 売り上げの履歴や在庫の変動など
「形に無いもの」もデータ化する
• どこまでをデータとして保持するか
どのような単位で保持するかは要件次第
– 全ての状態を保持するのと
最新の状態を保持するのとでは
必要な形が異なる
2014/05/10 CLR/H in TOKYO #2 VB Festival
データの意味
• レコードとして存在する意味を定義
• レコードが集まるテーブルの意味を定義
– 定義できる=レコードが存在するケース
• それぞれの意味を定義することで
処理の結果どうあるべきかの姿も決まる
2014/05/10 CLR/H in TOKYO #2 VB Festival
売上データ 売上が発生した
売掛データ
売上が発生したから
売掛も発生した
粗利データ
売上が発生したから
粗利も発生した
データ間のつながり
2014/05/10 CLR/H in TOKYO #2 VB Festival
カラムの意味
• レコードのカラムの定義
• 重複する値は原則持たない
• レコードの値から算出できるならば
結果を保持する必要は「薄い」
– アプリ要件として保持するケースはある
– SQL Server は計算列で自動計算も可能
2014/05/10 CLR/H in TOKYO #2 VB Festival
削除フラグ
• 業務系DBではよくある削除フラグ
• 手法自体は問題ない
– ただしインデックスに含ませるのは必須
• 削除したデータを保持する場合には
もっとも手軽な方法
2014/05/10 CLR/H in TOKYO #2 VB Festival
適用日時の持ち方
• データの種類によっては
「いつから適用されるか」
「いつまで適用されるか」
という日時範囲が必要になる
– 消費税率とかが代表
– 毎回抽出時に日付の範囲指定を記載するのは
面倒なのでテーブル値関数化しておくと楽
(SQL Server)
2014/05/10 CLR/H in TOKYO #2 VB Festival
SQL
• データベースの情報を操作する言語
– SELECT(抽出)
– INSERT(追加)
– UPDATE(更新)
– DELETE(削除)
2014/05/10 CLR/H in TOKYO #2 VB Festival
SELECT
• 情報を取得するための命令
– SELECT 抽出するカラム、計算
FROM 抽出対象の情報(テーブルなど)
WHERE 抽出したものに対しての条件
• DISTINCT 指定で結果から重複を除去
2014/05/10 CLR/H in TOKYO #2 VB Festival
グルーピング集計
• GROUP BY で抽出結果のグルーピング集計
• 集計結果から一部を除外する場合は
WHERE ではなく HAVING で指定
• GROUP BY で指定するのはカラムだけ
ではなく計算結果も指定する事が多い
2014/05/10 CLR/H in TOKYO #2 VB Festival
CASE
• 抽出項目に対する条件判断
– CASE {条件} WHEN {分岐A} THEN {値A}
WHEN {分岐B} THEN {値B}
ELSE {値C} END
• 複数の CASE 文をネストさせて
利用も可能
2014/05/10 CLR/H in TOKYO #2 VB Festival
結合
• ある情報の塊と別の情報の塊を
結合して抽出を行う
– INNER JOIN:内部結合
– LEFT OUTER JOIN:左外部結合
• RIGHT OUTER JOIN:右外部結合
– CROSS JOIN:クロス結合
• WHERE 条件で結合条件を記載できるが
JOIN 句で記載するのが現在の標準
2014/05/10 CLR/H in TOKYO #2 VB Festival
内部結合
A BC
Aの塊とBの塊で共通
している部分を抽出
TBL_A INNER JOIN TBL_B
2014/05/10 CLR/H in TOKYO #2 VB Festival
外部結合
A BC
Aの塊、およびAの塊
とBの塊で共通してい
る部分を抽出
TBL_A LEFT OUTER JOIN TBL_B
2014/05/10 CLR/H in TOKYO #2 VB Festival
クロス結合
A BC
Aの塊とBの塊、全て
の組み合わせを抽出
TBL_A CROSS JOIN TBL_B
2014/05/10 CLR/H in TOKYO #2 VB Festival
EXISTS
• ある項目が、ある抽出結果に含まれてい
るかどうかを判断
• WHERE節で
(ある項目) EXISTS (抽出結果)
として記述
2014/05/10 CLR/H in TOKYO #2 VB Festival
サブクエリ・インラインビュー
• クエリ結果を WHERE 条件や
SELECT 項目に組み込む方法
• SELECT の項目として組み込む場合は
単純に JOIN しては多重度の絡みで
難しいケースに適している
2014/05/10 CLR/H in TOKYO #2 VB Festival
INSERT
• データの追加を行う
• 対象カラムを指定した記述と
対象カラムを未指定な記述がある
– 未指定の場合はテーブルのカラム全てに対し
て値を指定する必要がある
• SELECT した結果を INSERT もできる
2014/05/10 CLR/H in TOKYO #2 VB Festival
UPDATE
• データの変更を行う
• 内部的には DELETE → INSERT を
行っている DB が多い
• SELECT 結果に対して UPDATE もできる
2014/05/10 CLR/H in TOKYO #2 VB Festival
DELETE
• データの削除を行う
• SELECT 結果に対して DELETE もできる
2014/05/10 CLR/H in TOKYO #2 VB Festival
まとめ
• データ構造を理解する事と
システムの仕様を理解することは同じ
• プログラムを作成する際にも
データ構造は必要な知識
• データの意味を理解すると
処理結果としてどうあるべきかが見え
仕様上の問題も発見しやすくなる

More Related Content

Similar to Clrh 20140510

Clrh 20140510 2
Clrh 20140510 2Clrh 20140510 2
Clrh 20140510 2
Tomoyuki Obi
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
 
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
Kentaro Ebisawa
 
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 Nobuaki Oshiro
 
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
Akira Hatsune
 
Service Cloud Trailblazers Meetup #11
Service Cloud Trailblazers Meetup #11Service Cloud Trailblazers Meetup #11
Service Cloud Trailblazers Meetup #11
sfdc_sctb
 
BMXUG つきじ#4
BMXUG つきじ#4BMXUG つきじ#4
BMXUG つきじ#4
K Kimura
 
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
Masahiro NAKAYAMA
 
Clrh 20140628
Clrh 20140628Clrh 20140628
Clrh 20140628
Tomoyuki Obi
 
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
充博 大崎
 
クラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートクラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタート
Yukihito Kataoka
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
Kenji Urushima
 

Similar to Clrh 20140510 (13)

Clrh 20140510 2
Clrh 20140510 2Clrh 20140510 2
Clrh 20140510 2
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
OpenVZ - Linux Containers:第2回 コンテナ型仮想化の情報交換会@東京
 
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712
 
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
 
Service Cloud Trailblazers Meetup #11
Service Cloud Trailblazers Meetup #11Service Cloud Trailblazers Meetup #11
Service Cloud Trailblazers Meetup #11
 
BMXUG つきじ#4
BMXUG つきじ#4BMXUG つきじ#4
BMXUG つきじ#4
 
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
 
Clrh 20140628
Clrh 20140628Clrh 20140628
Clrh 20140628
 
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
 
クラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートクラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタート
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
 

More from Tomoyuki Obi

それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automateそれは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
Tomoyuki Obi
 
Only Logic Apps
Only Logic AppsOnly Logic Apps
Only Logic Apps
Tomoyuki Obi
 
This is iPaas
This is iPaasThis is iPaas
This is iPaas
Tomoyuki Obi
 
Miniacs Power Automate
Miniacs Power AutomateMiniacs Power Automate
Miniacs Power Automate
Tomoyuki Obi
 
Work Automate with Power Automate
Work Automate with Power AutomateWork Automate with Power Automate
Work Automate with Power Automate
Tomoyuki Obi
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power Automate
Tomoyuki Obi
 
CodelessDevelop using iPaas
CodelessDevelop using iPaasCodelessDevelop using iPaas
CodelessDevelop using iPaas
Tomoyuki Obi
 
20190727_DevelopUseiPaas
20190727_DevelopUseiPaas20190727_DevelopUseiPaas
20190727_DevelopUseiPaas
Tomoyuki Obi
 
Logic Apps/Flow Update Summary
Logic Apps/Flow Update SummaryLogic Apps/Flow Update Summary
Logic Apps/Flow Update Summary
Tomoyuki Obi
 
decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04
Tomoyuki Obi
 
decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03
Tomoyuki Obi
 
decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02
Tomoyuki Obi
 
decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01
Tomoyuki Obi
 
20190427 global azurebootcamp
20190427 global azurebootcamp20190427 global azurebootcamp
20190427 global azurebootcamp
Tomoyuki Obi
 
20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson
Tomoyuki Obi
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlow
Tomoyuki Obi
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
Tomoyuki Obi
 
20180721 First Challenge Logicflow
20180721 First Challenge Logicflow20180721 First Challenge Logicflow
20180721 First Challenge Logicflow
Tomoyuki Obi
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Tomoyuki Obi
 
Create Bot using LogicApps
Create Bot using LogicAppsCreate Bot using LogicApps
Create Bot using LogicApps
Tomoyuki Obi
 

More from Tomoyuki Obi (20)

それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automateそれは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
 
Only Logic Apps
Only Logic AppsOnly Logic Apps
Only Logic Apps
 
This is iPaas
This is iPaasThis is iPaas
This is iPaas
 
Miniacs Power Automate
Miniacs Power AutomateMiniacs Power Automate
Miniacs Power Automate
 
Work Automate with Power Automate
Work Automate with Power AutomateWork Automate with Power Automate
Work Automate with Power Automate
 
JSON Value into Power Automate
JSON Value into Power AutomateJSON Value into Power Automate
JSON Value into Power Automate
 
CodelessDevelop using iPaas
CodelessDevelop using iPaasCodelessDevelop using iPaas
CodelessDevelop using iPaas
 
20190727_DevelopUseiPaas
20190727_DevelopUseiPaas20190727_DevelopUseiPaas
20190727_DevelopUseiPaas
 
Logic Apps/Flow Update Summary
Logic Apps/Flow Update SummaryLogic Apps/Flow Update Summary
Logic Apps/Flow Update Summary
 
decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04
 
decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03
 
decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02
 
decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01
 
20190427 global azurebootcamp
20190427 global azurebootcamp20190427 global azurebootcamp
20190427 global azurebootcamp
 
20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlow
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
 
20180721 First Challenge Logicflow
20180721 First Challenge Logicflow20180721 First Challenge Logicflow
20180721 First Challenge Logicflow
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
Create Bot using LogicApps
Create Bot using LogicAppsCreate Bot using LogicApps
Create Bot using LogicApps
 

Recently uploaded

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 

Recently uploaded (15)

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 

Clrh 20140510

  • 1. 2014/05/10 CLR/H in TOKYO #2 VB Festival データモデリング初歩 Ahf(小尾 智之)
  • 2. 2014/05/10 CLR/H in TOKYO #2 VB Festival self introduction VB 使い WF メイニア CLR/H スタッフ てすとぶろぐ http://blogahf.blogspot.jp/ @twit_ahf Tomoyuki.Obi @IT エンジニアライフ 地方からの戯言 プロレス好き DDT / BJW / K-DOJO みちのくプロレス
  • 3. 2014/05/10 CLR/H in TOKYO #2 VB Festival https://www.facebook.com/grou ps/175020096009440/
  • 4. 2014/05/10 CLR/H in TOKYO #2 VB Festival agenda 1. データモデリングとは 2. 業務システム的データモデリング 3. SQL によるデータ操作
  • 5. 2014/05/10 CLR/H in TOKYO #2 VB Festival データモデリングとは • 情報を正しく保持するための設計 – 情報の親子関係 – 情報間の繋がり度合 • DBのテーブル設計も含まれる • 論理的構造の設計から、物理的な 構造設計を行うのが基本の流れ – 設計後は論理と物理を互いに修正しあう
  • 6. 2014/05/10 CLR/H in TOKYO #2 VB Festival Entity と Relation • エンティティ≒情報 – エンティティ間の繋がり=リレーション • これを図に表したものが ER 図 – 論理ER図 • エンティティの設計 – 物理ER図 • DB上での設計
  • 7. 2014/05/10 CLR/H in TOKYO #2 VB Festival 主キーと外部キー • ある情報の塊においてデータを一意に 識別するための項目群=主キー – 適当な UniqueID 値を持つ項目を主キーと する方法もよく使われる • 別の塊との関係を表す項目群=外部キー 親となる側では主キーとなる
  • 8. 2014/05/10 CLR/H in TOKYO #2 VB Festival 多重度 • ある情報の塊とある情報の塊が n:m の関係となる場合の数値 • 親一人に子供数人、というケース 伝票ヘッダと明細とかが該当 • 1:0..1 は親が1に対して子は0または1
  • 9. 2014/05/10 CLR/H in TOKYO #2 VB Festival 制約 • テーブル間やテーブルのカラムに対して 指定できる • レコードが登録できる条件 カラムに値を設定できる条件 • 基本は子供側に 「親はこのテーブル」 という制約をかけたりする
  • 10. 2014/05/10 CLR/H in TOKYO #2 VB Festival NULL • 未設定を表す特殊な値 • システムによって利用するかどうか様々 • 未設定を識別できる必要があるかどうか でNULLを利用するかどうかを決める
  • 11. 2014/05/10 CLR/H in TOKYO #2 VB Festival DEFAULT • 項目の初期値 • 値を指定せずにレコード追加を 行った場合に適用される • 数値系項目の初期値や、日付系項目に システム日付を設定などで利用
  • 12. 2014/05/10 CLR/H in TOKYO #2 VB Festival トリガ • データを追加 / 更新 / 削除した際に 呼び出される処理 – DBによっては処理前 / 処理後のタイミングを 指定できるものもある – INSTEAD OF トリガを利用すると Enterprise 版ではない SQL Server でも更新可能なビュー を定義できる • レコードの更新日時などでよく利用
  • 13. 2014/05/10 CLR/H in TOKYO #2 VB Festival 正規化 • 情報の重複や n:m の関係をなくすことで シンプルにデータを保持する構造 • 理屈上は正規化した方が早いが 必ずしもそうとは限らない – DBが動作しているHWの性能が関連するので 理屈通りとはいかない – DB製品の仕組みにも依存する
  • 14. 2014/05/10 CLR/H in TOKYO #2 VB Festival モデリングの例 セミナールーム セミナールームには 座席がたくさんある
  • 15. 2014/05/10 CLR/H in TOKYO #2 VB Festival モデリングの例 セミナールーム 座席は場合によっては片づけられることも あるので 0~n となる 座席 1 0..*
  • 16. 2014/05/10 CLR/H in TOKYO #2 VB Festival モデリングの例 セミナールーム 椅子も場合によっては片づけられることも あるので 0~n となる 椅子は座席に対して設置されるので、親は座 席となる 座席 1 0..* 1 0..* 椅子
  • 17. 2014/05/10 CLR/H in TOKYO #2 VB Festival モデリングの例 セミナールーム この関係では、座席がなければ椅子は存在できない 座席 1 0..* 1 0..* 椅子 座席がなくても椅子を置くことがあった場合は?
  • 18. 2014/05/10 CLR/H in TOKYO #2 VB Festival モデリングの例 セミナールーム 座席1 0..* 1 0..* 椅子 その場合はセミナールームに椅子を設置することに なるので、親がセミナールームとなる
  • 19. 2014/05/10 CLR/H in TOKYO #2 VB Festival モデリングの例 セミナールーム 座席1 0..* 1 0..* 椅子 その状況でも座席に設置した椅子を関連付けるなら 間に座席と椅子を紐づける情報が必要 設置椅子 10..* 0..* 1
  • 20. 2014/05/10 CLR/H in TOKYO #2 VB Festival 業務的データモデリング • データ志向アプローチ(DOA) • 実際に存在するものをデータに定義 • 目に見えるものだけではなく見えない ものをデータとすることもある – 履歴系の情報など
  • 21. 2014/05/10 CLR/H in TOKYO #2 VB Festival 実体からデータ化 • 実際に存在する情報を元に テーブル構造を設計する方法 • 最低限必要なものを揃えやすい • システムに必要な項目候補が見えやすい
  • 22. 2014/05/10 CLR/H in TOKYO #2 VB Festival 商品の画像 商品の名称 商品の価格
  • 23. 2014/05/10 CLR/H in TOKYO #2 VB Festival 商品の在庫数 予定配送日
  • 24. 2014/05/10 CLR/H in TOKYO #2 VB Festival 要件のデータ化 • 売り上げの履歴や在庫の変動など 「形に無いもの」もデータ化する • どこまでをデータとして保持するか どのような単位で保持するかは要件次第 – 全ての状態を保持するのと 最新の状態を保持するのとでは 必要な形が異なる
  • 25. 2014/05/10 CLR/H in TOKYO #2 VB Festival データの意味 • レコードとして存在する意味を定義 • レコードが集まるテーブルの意味を定義 – 定義できる=レコードが存在するケース • それぞれの意味を定義することで 処理の結果どうあるべきかの姿も決まる
  • 26. 2014/05/10 CLR/H in TOKYO #2 VB Festival 売上データ 売上が発生した 売掛データ 売上が発生したから 売掛も発生した 粗利データ 売上が発生したから 粗利も発生した データ間のつながり
  • 27. 2014/05/10 CLR/H in TOKYO #2 VB Festival カラムの意味 • レコードのカラムの定義 • 重複する値は原則持たない • レコードの値から算出できるならば 結果を保持する必要は「薄い」 – アプリ要件として保持するケースはある – SQL Server は計算列で自動計算も可能
  • 28. 2014/05/10 CLR/H in TOKYO #2 VB Festival 削除フラグ • 業務系DBではよくある削除フラグ • 手法自体は問題ない – ただしインデックスに含ませるのは必須 • 削除したデータを保持する場合には もっとも手軽な方法
  • 29. 2014/05/10 CLR/H in TOKYO #2 VB Festival 適用日時の持ち方 • データの種類によっては 「いつから適用されるか」 「いつまで適用されるか」 という日時範囲が必要になる – 消費税率とかが代表 – 毎回抽出時に日付の範囲指定を記載するのは 面倒なのでテーブル値関数化しておくと楽 (SQL Server)
  • 30. 2014/05/10 CLR/H in TOKYO #2 VB Festival SQL • データベースの情報を操作する言語 – SELECT(抽出) – INSERT(追加) – UPDATE(更新) – DELETE(削除)
  • 31. 2014/05/10 CLR/H in TOKYO #2 VB Festival SELECT • 情報を取得するための命令 – SELECT 抽出するカラム、計算 FROM 抽出対象の情報(テーブルなど) WHERE 抽出したものに対しての条件 • DISTINCT 指定で結果から重複を除去
  • 32. 2014/05/10 CLR/H in TOKYO #2 VB Festival グルーピング集計 • GROUP BY で抽出結果のグルーピング集計 • 集計結果から一部を除外する場合は WHERE ではなく HAVING で指定 • GROUP BY で指定するのはカラムだけ ではなく計算結果も指定する事が多い
  • 33. 2014/05/10 CLR/H in TOKYO #2 VB Festival CASE • 抽出項目に対する条件判断 – CASE {条件} WHEN {分岐A} THEN {値A} WHEN {分岐B} THEN {値B} ELSE {値C} END • 複数の CASE 文をネストさせて 利用も可能
  • 34. 2014/05/10 CLR/H in TOKYO #2 VB Festival 結合 • ある情報の塊と別の情報の塊を 結合して抽出を行う – INNER JOIN:内部結合 – LEFT OUTER JOIN:左外部結合 • RIGHT OUTER JOIN:右外部結合 – CROSS JOIN:クロス結合 • WHERE 条件で結合条件を記載できるが JOIN 句で記載するのが現在の標準
  • 35. 2014/05/10 CLR/H in TOKYO #2 VB Festival 内部結合 A BC Aの塊とBの塊で共通 している部分を抽出 TBL_A INNER JOIN TBL_B
  • 36. 2014/05/10 CLR/H in TOKYO #2 VB Festival 外部結合 A BC Aの塊、およびAの塊 とBの塊で共通してい る部分を抽出 TBL_A LEFT OUTER JOIN TBL_B
  • 37. 2014/05/10 CLR/H in TOKYO #2 VB Festival クロス結合 A BC Aの塊とBの塊、全て の組み合わせを抽出 TBL_A CROSS JOIN TBL_B
  • 38. 2014/05/10 CLR/H in TOKYO #2 VB Festival EXISTS • ある項目が、ある抽出結果に含まれてい るかどうかを判断 • WHERE節で (ある項目) EXISTS (抽出結果) として記述
  • 39. 2014/05/10 CLR/H in TOKYO #2 VB Festival サブクエリ・インラインビュー • クエリ結果を WHERE 条件や SELECT 項目に組み込む方法 • SELECT の項目として組み込む場合は 単純に JOIN しては多重度の絡みで 難しいケースに適している
  • 40. 2014/05/10 CLR/H in TOKYO #2 VB Festival INSERT • データの追加を行う • 対象カラムを指定した記述と 対象カラムを未指定な記述がある – 未指定の場合はテーブルのカラム全てに対し て値を指定する必要がある • SELECT した結果を INSERT もできる
  • 41. 2014/05/10 CLR/H in TOKYO #2 VB Festival UPDATE • データの変更を行う • 内部的には DELETE → INSERT を 行っている DB が多い • SELECT 結果に対して UPDATE もできる
  • 42. 2014/05/10 CLR/H in TOKYO #2 VB Festival DELETE • データの削除を行う • SELECT 結果に対して DELETE もできる
  • 43. 2014/05/10 CLR/H in TOKYO #2 VB Festival まとめ • データ構造を理解する事と システムの仕様を理解することは同じ • プログラムを作成する際にも データ構造は必要な知識 • データの意味を理解すると 処理結果としてどうあるべきかが見え 仕様上の問題も発見しやすくなる