Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第2回 ITパスポート社内勉強会 データベース
Search
PharmaX(旧YOJO Technologies)開発チーム
December 13, 2021
Technology
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第2回 ITパスポート社内勉強会 データベース
第2回 ITパスポート勉強会の資料です。
【コーポレートサイト】
https://yojo.co.jp/
【採用情報】
https://herp.careers/v1/yojo
PharmaX(旧YOJO Technologies)開発チーム
December 13, 2021
More Decks by PharmaX(旧YOJO Technologies)開発チーム
See All by PharmaX(旧YOJO Technologies)開発チーム
LLMアプリケーション評価駆動開発の歩き方
pharma_x_tech
3
520
LLMアプリケーションやAIエージェントの評価の基本
pharma_x_tech
1
450
「動くだけ」で終わらせない ― LLMアプリを継続的に改善・運用するための評価駆動開発
pharma_x_tech
2
56
LangSmithによるAIエージェントの継続的改善のためのオブザーバビリティの向上
pharma_x_tech
1
360
PdMによるLiveバイブコーディング〜プロトタイプ開発実践〜
pharma_x_tech
1
97
2025.10.28_CodexとClaude Codeの比較検討 社内座談会
pharma_x_tech
2
680
LLMのアウトプットの評価と改善 〜DSPyによるプロンプト最適化入門によせて〜
pharma_x_tech
6
1.3k
2025.09.02_AIコーディングを利用した開発自動化を目指しての座談会
pharma_x_tech
5
390
AIコーディングを前提にした開発プロセス再設計〜開発生産性向上に向けた試行錯誤〜
pharma_x_tech
4
480
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
7
800
AI coding 整合正規方法
philipz
0
550
DORA_Metrics.pdf
wagnerfusca
1
110
AIは推し活である。
kurazuuuuuu
2
990
AIエージェントを安全で速い現場監督にする:Jev・Obsidian・メタハーネス
x5gtrn
PRO
0
140
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
660
AIに会社の文脈を理解させる技術~上流工程・非エンジニアにも広げるハーネスエンジニアリング実践~
ochtum
0
150
GitHub Agentic Workflows を触ってみる
htkym
2
800
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
310
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
880
Antigravity SDK for the Java Developer
glaforge
0
220
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
320
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
490
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
950
KATA
mclloyd
PRO
35
16k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Test your architecture with Archunit
thirion
2
2.4k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
550
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
ITパスポート勉強会 ~データベース~
勉強会の予定 ・第1回 デジタルデータ 12/ 6 ・第2回 データベース 12/13 ・第3回 ネットワーク
12/20 ・第4回 セキュリティ 12/27 目次 ・毎週月曜日全4回
今日の予定 目次 • RDB • 主キーと外部キー • 論理演算 • 排他制御・トランザクション
データベース
これらは全部データベースにやってもらいます! データベースとは? 複数のデータを一括管理・保存する場所です! 顧客の住所 診断に出てくる漢方 顧客の支払方法 データを追加・削除したい! こういう条件のデータが見たい! データの一部を変更したい! 複数のデータを一括管理・保存する場所です!
私がやりましょう(キリッ データベース
表から関係性が読み取れますね! RDB(リレーショナルデータベース) 複数の「表」と、その「関係性」によって構成されるDB 顧客の住所 顧客の支払方法 顧客 この表を見ると住所と支払い方法はどの顧客のものなのかわかるように顧客IDを持っています。 ID 名前 電話番号
1 山田太郎 09000001111 2 田中一郎 09022221111 3 佐藤花子 09012345678 ID 顧客ID 住所 番地 郵便番号 1 2 東京都ああ区いい街 11-1 1111111 2 1 東京都いい区うう街 1-23-2 1232221 3 3 東京都ええ区おお街 1-33 4441115 ID 顧客ID 支払い方法 1 2 クレカ 2 1 クレカ 3 3 代引き 顧客は住所、支払い方法を持っていることがわかります。 データベース
これは正規化と呼ばれます 支払い方法の表現が一貫されていない そんなときは表を分けましょう! この表はどうでしょう? ID 顧客ID 支払い方法 1 2 クレカ
2 1 クレカ 3 3 代引き 4 6 クレジット 5 9 クレジットカード 6 5 クレカ 7 12 代金引換 検索しづらく、修正漏れしやすくなります、、、 ID 顧客ID 支払い方法ID 1 2 1 2 1 1 3 3 2 4 6 1 5 9 1 6 5 1 7 12 2 ID 支払い方法 1 クレジットカード 2 代引き これなら代引きを「代金引換」に変える場合でも 修正箇所は1つで済みますね! データベース
データベース 実際にデータを見るときはデータをくっつけたり、 抽出したりします! 顧客の支払方法 ID 顧客ID 支払い方法ID 1 2 1
2 1 1 3 3 2 4 6 1 5 9 1 6 5 1 7 12 2 ID 支払い方法 1 クレジットカード 2 代引き この状態だとデータの整合性や一貫性を保つこと ができますが、ちょっと見づらいですね... 支払方法 選択 (必要な行を抽出) ID 顧客ID 支払い方法ID 3 3 2 7 12 2 代引きの人だけ抽出 射影 (必要な列を抽出) 支払方法だけ抽出 結合 (関連の表を結合) ID 顧客ID 支払い方法ID 支払方法 3 3 2 代引き 6 5 1 クレジットカード ID 支払い方法 ID 1 1 2 1 3 2 4 1 5 1 6 1 7 2 支払方法の表を右に結合 見るとき用の一時的な表(ビュー)を作ります!
データベース 問1 問2 A. ウ フィールドとは表の中の項目のこと(IDや支払方法など) で、関連性からデータの一貫性や整合性を考え、フィール ドを整理する作業は正規化と呼ばれます。 この中で本質的に重複しているのは生年月日と年 齢です。
生年月日から年齢を知ることはできますが、年齢 から生年月日を知ることはできないため、今回は 年齢の方が削除可能です。 A. イ ちなみにYOJOではユーザーの中に年齢の項目があり、生年月日は元々 なかったため、入力したときの年齢のまま永遠に変わりません笑
データベース 顧客の住所 顧客 ID 名前 電話番号 1 山田太郎 09000001111 2
田中一郎 09022221111 3 佐藤花子 09012345678 ID 顧客ID 住所 番地 郵便番号 1 2 東京都ああ区いい街 11-1 1111111 2 1 東京都いい区うう街 1-23-2 1232221 3 3 東京都ええ区おお街 1-33 4441115 これらの表において… 名前や電話番号は同じデータが複数作成される可能性があります。 このように、行を特定できる項目を主キーといいます! しかし、顧客IDが1のデータは1つしかありません また、関連する表の主キーを持っている項目を 外部キーといいます! 主キー 主キー 外部キー
データベース 配送 こういうデータがあったとき、複数条件でデータを 絞り込みたいことがあります。 こういうときは論理演算をします! ex) 昨日の配送のうち、まだ配送中のものを知りたい 両方の条件を満たす! ID 状態
配送先ID 作成日 1 未発送 3 2021/12/13 2 配送中 2 2021/12/12 3 完了 1 2021/12/12 4 配達中 4 2021/12/11 5 完了 5 2020/1/2 6 完了 7 2019/9/30 7 完了 6 2019/7/1 AND(論理積) 条件1 条件2 OR(論理和) 条件1 条件2 どちらか1つでも 条件を満たす! 今回の例だと (作成日が昨日) AND (状態が配送中) ですね!
データベース 問1 問2 A. イ 上の図を言い換えると、BまたはCの部分かつAではな い部分なので、(Aではない)かつ(BまたはC)にな ります! 積集合はANDのことなので、表Aと表Bの共通部分 であるせんべいとチョコレートになっているはず
です! A. エ
データベース ID 商品名 在庫 1 漢方A 3 2 漢方B 2
3 漢方C 4 商品 データベースはデータを一括で管理していますが、同 時に操作されると不整合を起こす可能性があります。 漢方Bが2人に売れたとします。 例えば、、、 それぞれの担当者2人が同時に漢方Bの在庫を確認し、 売れた分在庫を1引くと? 担当者A 担当者B 在庫は2か、、 在庫は2か、、 1つ引いて 1に更新! 1つ引いて 1に更新! 2つ売れたのに在庫が1つある ことになってしまいます…
データベース どうすれば防げるでしょうか? このように、処理中に他の人からのアクセスをロックすること を排他制御といいます! 他 の 人 更 新 禁
止 ! 共有ロック 担当者B 在庫は2か、、 在庫は1か、、 1つ引いて 1に更新! 1つ引いて 0に更新! 今回だと、 ↓ こういう流れになればいいですね! 担当者A 誰かが編集中だ! 更新を待とう! データを見ることはできますが、 更新することはできません! 占有ロック データを見ることも、更新する こともできません! 在庫は常に見れた方が良いので 共有ロックがいいですね!
データベース 問1 問2 A. ウ 同時アクセスによるデータ不整合の防止に役立つのが 排他制御です。 ③の更新前に②の読み取りがされているため、② で読み取ったのは初期値の10になります。よって ④で書き込まれるのは17です!
A. エ
データベース YOJOでは購入時、 もし、この処理が②と③の間で止まってしまったらどうでしょうか? お金を払ったのに何も届かなかったら大問題ですね! ↓ こんな感じで処理が進みます! ①クレカの決済処理 ②注文を完了状態にする ③支払いを完了状態にする ④配送を準備状態にする
お金が支払われ、注文も完了したことになっているのに、支払われたことに なっておらず、配送も作られません。
データベース ではどうすればいいか? このようにどれか1つでも失敗すると不整合が起きる 1連の処理単位をトランザクションと呼びます! ①クレカの決済処理 ②注文を完了状態にする ③支払いを完了状態にする ④配送を準備状態にする ①~④までは一連の処理なので、どこかでエラーが発生したらそれまでの処理 もなかったことにしたいですね!
ex) ②~③で処理が止まったら、①、②の処理が成功していても、実行前の データ状態に巻き戻す必要があります! これはロールバックと呼ばれます
データベース 問1 問2 A. エ 関連する1連の処理単位がトランザクションです。 Bは更新履歴と書いてあるのでログファイルが正しいで す。バックアップファイルにはデータそのもののコ ピーが入っています。 A.
エ 4の処理が失敗した場合(3まで成功)のみ、AとBが 残った状態になります!
データベース 次回予告 ネットワーク LANとWAN プロトコル ネットワークの構成 12/20 21時からやります! keywords