Java ORM標準JPAプログラミング - 基本編
初めてJPAに触れたり、実務でJPAを使用したりして基本理論が足りない方 JPAの基本理論をしっかりと学習することで、初心者でも実務で自信を持ってJPAを使用することができます。


お知らせ
55 件
こんにちは。キム・ヨンハンです。
ついに7年前に当初目標としていたバックエンド開発者全体ロードマップが完成しました。
全体ロードマップの完成と、バックエンドマスターパスの再開を望む多くの方々のリクエストにお応えして、キム・ヨンハンのバックエンドマスターパスを期間限定でご紹介いたします。
今日リリースした「キム・ヨンハンの実戦データベース - パフォーマンス最適化」講座を最後に、実戦JavaからSpring、JPA、データベース設計、そしてパフォーマンス最適化に至るまでの全ロードマップを完成いたしました。
最初の講義を始めてから、ここまで辿り着くのに7年という歳月がかかりました。
長い間、私と共に歩んでくださった皆様に心より感謝申し上げます。
7年にわたる長き旅路、そして完成
講座を初めて始めた時、私には一つの目標がありました。
実務で出会った数多くの新人、ジュニア、シニアの開発者の方々に思いを馳せ、開発者が着実に成長するために必要なすべての実践スキルを一つの大きなロードマップとして完成させるという目標でした。
単に特定の技術一つを解説するにとどまらず、
Javaとオブジェクト指向の基礎
スプリングの基本原理
Spring BootとJPAを活用した実務開発
データベース設計
大規模データとパフォーマンス最適化
に至るまで、バックエンド開発者が成長する過程で必ず直面することになるテーマを、漏れなく盛り込みたいと考えていました。
新人からジュニアへ、そしてジュニアからシニアへと成長するために必要な全プロセスをしっかりと形にしようという目標でした。
そして7年経った今、データベース性能最適化講座を最後に、最初に思い描いていた全体のロードマップがついに完成いたしました。
振り返ってみれば、実に長い道のりでした。
講義を作成する過程で、数え切れないほどの再撮影を行い、より良い説明方法を模索し、実務に本当に必要な内容だけを盛り込むために、幾度となく検討と検証を繰り返してきました。
正直なところ、何かをこれほど長く続けていくことは決して簡単なことではありません。私自身も数えきれないほどスランプに陥り、その都度疲れ果てて辛い時間を過ごしてきました。会社で忙しく働き、へとへとになって帰宅した後、夜遅くまで講義の撮影をしていた日も数多くありました。
振り返ってみれば、そんな瞬間ごとに私を再び立ち上がらせてくれたのは、皆さんが残してくださった小さな受講レビューの一つひとつでした。講義を聴いてくださり、応援してくださり、そして一生懸命勉強して希望していた会社へ転職を果たしたというご自身の成長の物語を伝えてくださった、それらすべてのメッセージが私にとって本当に大きな力となりました。そうやって積み重なった小さな応援こそが、結局この長い旅路を最後まで走り抜けることができた最大の理由でした。受講レビューの一つひとつを目にするたびに、また道ですれ違った際に私を見つけて嬉しそうにかけてくださった温かい挨拶の一つひとつが、自分のやっていることはそれでも誰かの役に立っているのだと思わせてくれ、私に大きな力を授けてくれました。
振り返ってみれば、このすべての過程は決して一人で作り上げた時間ではありませんでした。皆さんと共に作り上げてきた時間であり、共に完成させてきた旅路でした。
心より感謝申し上げます。
バックエンドマスターパス 期間限定リリース
全ロードマップの完成とバックエンドマスターパスの再オープンを望む多くの方々の要望にお応えし、キム・ヨンハンのバックエンドマスターパスを期間限定でご紹介します。
今回のマスターパスは、バックエンド開発者の基礎から実務、そしてシニア開発者が向き合うべき設計やパフォーマンス最適化に至るまで、すべてを網羅した総合ロードマップです。
パス商品構成 — 4つのコアロードマップ統合
バックエンドマスターパスには、以下の4つの全体ロードマップが含まれています。
キム・ヨンハンの実践Javaロードマップ
キム・ヨンハンのスプリング完全攻略ロードマップ
キム・ヨンハンのSpring BootとJPA実務完全攻略ロードマップ
キム・ヨンハンの実践データベースロードマップ
Javaの基本文法やオブジェクト指向から始まり、Spring、JPA、そしてデータベース設計からパフォーマンス最適化まで、一貫した流れで学習することができます。
特に今回は、最後のピースとなっていた「キム・ヨンハンの実戦データベース - パフォーマンス最適化」講座まで正式に組み込まれ、バックエンドマスターの全体ロードマップが完成いたしました。
最後のパズル、データベース性能最適化
サービスが成長し、データが蓄積され始めると、いずれデータベースのパフォーマンス問題に直面することになります。
開発時には順調に動作していたクエリが本番環境では突然遅くなり、単純なクエリ1つがサービス全体のボトルネックや障害につながることもあります。
ここで必要なのは、単にインデックスをいくつか追加するといった小手先のテクニックではありません。
データベースがどのようにデータを格納し、検索するのか、実行計画をどのように分析すべきか、そしてオプティマイザがなぜ特定のインデックスや結合順序を選択したのかを理解する必要があります。
今回のパフォーマンス最適化講座では、以下の内容を扱います。
EXPLAINおよびEXPLAIN ANALYZEによる実行計画の分析
B+Treeとインデックスの内部構造
クラスタ化インデックスとセカンダリインデックス
複合インデックスの設計原理
Using filesortの診断と最適化
ICP、カバリングインデックス、スキップスキャン
オプティマイザとヒストグラム
結合とランダムアクセスの最適化
ソート、ページング、グルーピングのパフォーマンス改善
事前集計テーブルを活用した大量統計処理
アプリケーションを適切に構築する方法にとどまらず、サービスの成長に伴って発生するパフォーマンスの問題を自ら分析し解決できるまでの一連のプロセスが完成しました。
AI時代、なぜ全体ロードマップが必要なのか
AIがコードを記述してくれる時代を迎え、開発者の基礎力はむしろこれまで以上に重要になっています。
AIは開発者の能力を代替するツールではなく、その能力を増幅させるツールです。
基礎がしっかりしている開発者は、AIに対してより良い質問をすることができ、AIが生成した結果が正しいかどうかを検証することができます。
逆に、基礎力が不足していると、コードが表面上は動作しているように見えても、次のような問題に気づくのが難しくなります。
オブジェクト指向設計が破綻したコード
保守が難しい構造
誤ったトランザクション処理
非効率なデータアクセス
本番環境で障害を引き起こすクエリ
データが増加するほど遅くなる設計
AI技術やツールは絶えず変わり続けますが、良いコードと悪いコードを見極める目、オブジェクト指向の原則、HTTPやWebの仕組み、トランザクション、そしてデータベース設計やパフォーマンス最適化といった基本は変わることはありません。
知ってこそ質問ができ、理解してこそ検証ができ、熟知してこそより良い結果へと改善することができます。
今回のバックエンドマスターパスには、まさにその変わることのない本質を込めました。
継続的な講義のリニューアル
全体のロードマップは完成しましたが、講義制作はまだ完了していません。
今後も技術の変化や実務環境に合わせ、既存の講義を継続的にリニューアルしていく予定です。
必要に応じて、全動画のリニューアルや一部動画のリニューアル、マニュアルおよびサンプルプロジェクトの更新などを実施してまいります。
マスターパスをご購入いただいた方は、今後講座がリニューアルされたり価格が変更されたりしても、追加料金なしで更新された内容を引き続き学習していただけます。
私を信じ、選んでくださった皆様へのせめてもの礼儀であり、お約束です。
最後に
このパスは、単に複数の講座をまとめただけの商品ではありません。
私が長年実務で学び、失敗し、悩んできた内容を一つの成長の過程として体系化した成果です。
皆様が新人からジュニアへ、そしてジュニアからシニアへと成長し、やがて周囲の仲間から心から一緒に働きたいと思われるような開発者になるその日まで、皆様の頼れるガイドとして導いてまいります。
ありがとうございます。
皆さん、こんにちは。
キム・ヨンハンの実践データベースパフォーマンス最適化講座がついに開講しました。
オープンを記念して、データベースロードマップを30%割引しています 🙂
タイトル: キム・ヨンハンの実戦データベース - パフォーマンス最適化、実行計画とインデックス完全攻略
講義数: 104
講義時間: 21時間10分
そして、データベースロードマップを含むバックエンドロードマップの全講座修了を記念して、キム・ヨンハンのバックエンドマスターパスを期間限定でご紹介いたします。
マスターパスリンク: https://inf.run/uixFt
<講座の特徴>
この講座の最も重要な特徴は、実務に近い実際の数百万〜数千万件のデータをデータベースに保存した後に、私と一緒に一つずつチューニングを重ねていくことです。その結果、数秒かかっていたクエリを0.01秒単位という極限まで最適化する実践的な方法を学ぶことです。
<講義内容>
開発時には順調に動作していたクエリが、データが蓄積するにつれて突然遅くなってしまうケースがあります。
最初は0.1秒で実行されていたクエリが、いつの間にか1秒、10秒と実行時間が長くなり、深刻な場合にはサービス障害につながることもあります。
このような状況下で、私たちは次のような疑問を抱くことになります。
クエリが遅い原因はどこから探せばいいのだろうか?
実行計画に表示される数多くの項目は何を意味するのだろうか?
インデックスを作成したのに、なぜ利用されないのだろうか?
複合インデックスはどのような順序で設計すべきだろうか?
インデックスが多いほどパフォーマンスは向上するのだろうか?
Using filesortはなぜ発生し、どのように排除すればよいのでしょうか?
ページングでページが進むにつれてクエリが遅くなる理由は何だろうか?
ジョイン順序は誰が決めるのか、どうすれば最適化できるのだろうか?
オプティマイザはなぜ予想と異なる実行計画を選択するのか?
データベースのパフォーマンス問題は、単にSQLの文法に精通しているからといって解決できる問題ではありません。
データベースがデータをどのように格納し、インデックスをどのように探索し、オプティマイザがどのような基準で実行計画を選択するのかを理解する必要があります。
この講座では、遅いクエリを勘に頼って修正するのではなく、実行計画と実際の測定結果を根拠に原因を特定し、解決する方法を扱います。
まず、MySQLとInnoDBの内部構造を理解し、EXPLAINとEXPLAIN ANALYZEを通じて、クエリが実際にどのように実行されるのかを分析します。
その後、数百万件の実戦データを使用して直接パフォーマンス問題を再現し、解決します。
フルテーブルスキャンをインデックススキャンに改善
複合インデックスのカラム順序の決定
B+木とインデックスの内部動作の理解
クラスタ化インデックスとセカンダリインデックスの分析
Using filesortの原因診断と早期終了
ICPとカバリングインデックスを活用したパフォーマンス改善
インデックススキップスキャン、インデックスマージ、MRR分析
オプティマイザとヒストグラムの活用
結合順序とランダムアクセスの最適化
ソート、ページング、グルーピングのパフォーマンス改善
ストリーミング集計と事前集計テーブルの設計
単に「ここにインデックスを追加してください」と結論だけを伝えるわけではありません。
なぜそのインデックスが必要なのか、データベース内部でどのような処理が行われているのか、そして実行計画と実際の実行時間がどのように変化するかを段階的に確認していきます。
さらに、特定のクエリ一つだけを高速化する方法にとどまらず、実務において継続的に新たなパフォーマンス問題を分析・解決するための基礎原理を深く掘り下げて解説します。
<本講座を通じて得られるもの>
1. 実行計画を読み解く能力
EXPLAINおよびEXPLAIN ANALYZEの主要項目を理解し、実行計画から遅いクエリの原因を特定できるようになります。
2. インデックスを直接設計する能力
単一のカラムにインデックスを追加するだけのレベルを超え、データの分布やクエリ条件に最適な複合インデックスを設計できるようになります。
3. データベースの内部動作の理解
B+Tree、クラスタ化インデックス、セカンダリインデックス、ランダムアクセスなど、インデックス内部の核心的な原理を理解できるようになります。
4. 実践パフォーマンス最適化の経験
数百万件のデータを用いて遅いクエリを自ら分析し、数十倍から数百倍に改善していくプロセスを体験します。
5. 運用環境の問題を解決する基準
インデックスの利点だけでなく、書き込みパフォーマンス、ストレージ容量、運用コストまで考慮した上で、状況に合った最善の方法を選択できるようになります。
<全体学習カリキュラム>
講義の紹介と授業資料
実習環境構築
データベースパフォーマンスとMySQLアーキテクチャ
実行計画 1 - EXPLAIN 完全マスター
実行計画 2 - ANALYZE完全攻略
実践チューニング1 - フルテーブルスキャンの診断と複合インデックスの基礎
インデックス内部構造 1 - B+Tree
インデックス内部構造 2 - クラスタード、セカンダリインデックス
実践チューニング2 - Using filesort診断と早期終了
インデックス応用 1 - ICP、カバリング、スキップスキャン
インデックス応用 2 - マージ、MRR、新機能、ヒント、運用
オプティマイザとヒストグラム
ジョイン最適化
実践チューニング3 - 結合のランダムアクセス診断とカバリングインデックス
ソート、ページング、グルーピングの最適化
実践チューニング 4 - ストリーミング集計と事前集計テーブル
次に、
データベースのパフォーマンス最適化は、単にいくつかのSQLチューニング技術を暗記する過程ではありません。
データがどのような経路で参照されるかを理解し、実行計画に基づいてボトルネックを特定し、複数の選択肢の中から最も適切な解決策を決定していくプロセスです。
この講座を通じて、遅いクエリに直面した際、やみくもにインデックスを追加するのではなく、原因を正確に分析し、自ら解決できる開発者へと成長していただければ幸いです。
実務において数多くのパフォーマンス問題を解決し、積み重ねてきた経験と、長年の試行錯誤の末の成果を、今回の講義に込めました。
皆様の成長の一助となれば幸いです。
ありがとうございます。
こんにちは。金永漢(キム・ヨンハン)です。
長い間、多くの方々からご要望いただいていたキム・ヨンハンのバックエンドマスターパスを期間限定でご紹介します。
7年の旅路、そして完成
最初の講義を始めてから、いつの間にか7年が経ちました。その間、計26個の講義を制作し、累計受講者数59万人という身に余るほどの応援をいただきました。
初めて講義を始めたとき、一つの決意がありました。実務で出会った数多くの新人、ジュニア、シニア開発者の方々を思い浮かべながら、「本当にしっかりと成長できる、本物の実務開発講義」を作ろうという決意でした。新人からジュニアへ、ジュニアからシニアへと成長するまでに必要なすべての実践技術を漏れなく伝えるという目標が、7年という歳月を経てようやく完成しました。
パス商品の構成 — 4つの核心ロードマップを統合
今回のマスターパスは、新人時代の基礎からシニアになって悩むべき性能最適化まで、開発者のライフサイクル全体を共にする「一生のロードマップ」です。
キム・ヨンハンの実践Javaロードマップ
キム・ヨンハンのスプリング完全征服ロードマップ
キム・ヨンハンのSpring BootとJPA実務完全征服ロードマップ
キム・ヨンハンの実践データベースロードマップ
7月発売の新規講義を含む
これに加え、7月発売予定の「キム・ヨンハンの実戦データベース - 性能最適化」講義をあわせて提供します。(154,000ウォン予定)
この講義は、私が最も心血を注いで制作している講義です。実務における障害の80%は、データベースのパフォーマンス問題から発生するからです。サービスが成長し、大規模なトラフィックが押し寄せ始めると、バックエンドのアプリケーションコードをいかに綺麗に書いたとしても、結局最後にはデータベースでボトルネックが発生します。
この講義をマスターすれば、障害状況や遅くなったクエリの前でも慌てることなく、正確にボトルネックを特定できる'本物のシニア'の視界を手に入れることができるでしょう。
既存の受講生のための恩返し
私を長く信じてついてきてくださった方々には、わずかながら特典をご用意しました。
- 既存講義の購入者: 保有している講義数(金額)に応じて、残りの講義に対して少しでも高い割引率を適用
- 全講座購入者(熱狂的ファン): マスターパスをプレゼント(無料)
特にこれまで私のすべての講義を信じてついてきてくださった熱心なファンの皆様には、感謝の意を込めて「パス商品」と7月に発売される「実践データベース性能最適化」講義をプレゼントいたします。(必ず!パス商品0円購入を選択してください)
AI時代、なぜ基礎力なのか
AIがコードを代わりに作成してくれる時代。実力のある開発者とそうでない開発者の差は縮まったのでしょうか?現場ではむしろ反対の結果が現れています。
AIは開発者の能力を代替するツールではなく、増幅するツールです。
実力のある開発者はAIに適切な問いを投げかけ、AIが作成したコードが良いコードなのか、それとも危険なコードなのかを判断できます。設計が間違っていないか、パフォーマンスの問題が隠れていないか、運用環境で障害につながる可能性があるかどうかも素早く察知します。
逆に基本が不足していると、AIが生成した結果を検証することが難しくなります。表面的には動作しているように見えても、設計が崩れていたり、データベースのパフォーマンス問題が隠れていたり、運用環境で問題が発生したりする可能性があります。
AI技術は絶えず急速に変化し続けるでしょう。しかし、変わらないものがあります。
オブジェクト指向の基本原理
良いコードと悪いコードを見分ける目
HTTPとウェブの動作原理
トランザクションとデータアクセス技術
データベース設計とパフォーマンス最適化
このような基本は、AI時代であればあるほどより重要になります。知ってこそ質問でき、知ってこそ検証でき、知ってこそ改善できるからです。
今回のバックエンドマスターパスには、まさにその変わることのない本質を込めました。
継続的な講義のリニューアル、追加費用なしで
今後、既存の講義も継続的にリニューアルする予定です。必要に応じて、全編リニューアル、部分的な動画リニューアル、マニュアルのバージョンアップなどを進めていきます。
今マスターパスを購入された方は、今後リニューアルされた講義の価格が上がっても、追加費用なしで無料でアップデートを受けることができます。私を信じて選んでくださった方々に対する、私の最小限の礼儀であり約束です。「実戦データベース性能最適化」講義のオープン後、本格的なリニューアル作業を開始する予定です。
最後に
このパスは、単に知識を売るための商品ではありません。私が十数年間の実務で学び、経験し、激しく悩んできたことを皆さんに伝えるために作り上げた、7年間の努力の結晶です。
皆様が新人を越えてジュニアへ、ジュニアを越えてシニアへ、そして最終的に周囲の同僚たちが心から一緒に働きたいと思うような開発者になるその日まで。私が皆様の傍で、心強いガイドとなります。
ありがとうございます。
こんにちは。皆さん
データベース設計1編の講義がついにオープンしました。オープン記念として私の全ての講義を30%割引いたします🙂
タイトル:キム・ヨンハンの実戦データベース設計1編 – 現代的データモデリング完全攻略
講義数:83個
講義時間:16時間11分
講義PDFファイル:約400ページ
[講義紹介]
データベースはすべてのアプリケーションの基盤です。
しかし、適切に設計できなければ、プロジェクトはすぐに限界にぶつかり、保守は地獄になります。今回の講義は単純にテーブルを作る方法ではなく、実務で通用する現代的なデータベース設計方法を体系的にお教えします。そして私の数多くの実戦経験と長年の悩みの結果をこの講義に込めました。
[講義の核心ポイント]
概念的 → 論理的 → 物理的モデリング
3段階アプローチでDB設計を完全マスターします。実務ですぐに使える設計ノウハウ
理論だけに留まらず、ショッピングモールプロジェクトを例として活用します。間違った設計の罠を避ける
なぜERDが重要なのか、なぜ正規化が必要なのか、そしていつ非正規化をすべきなのかを実習を通じて理解できます。キーと関係設計の本質
自然キー vs 代理キー、一対一・一対多・多対多関係、識別関係 vs 非識別関係まで深く扱います。最新のDB設計トレンドを反映
数十年前の教科書に留まらず、現代的なデータモデリング方法論を提示します。[学習内容]
要件分析と核心エンティティの導出
ERD作成および用語辞書管理
正規化(1NF~BCNF)とその限界
インデックスとパフォーマンスを考慮した物理的モデリング
ショッピングモールプロジェクト全体DB設計実習
[講義対象]
開発者:コードを書く前にきちんとしたDBを設計したい方
企画者/アナリスト:データフローと構造を根本的に理解したい方
就職準備生:面接で差別化されたDB設計能力を見せたい方
ジュニア開発者:実務ですぐに使える設計原則を学びたい方
シニア開発者/リード:チームのデータベース設計品質を向上させたい方
[講義全体目次]
1. 講義紹介と授業資料
* 1-A. Windows - MySQL インストールガイド
* 1-B. macOS - インストールガイド
2. 設計の重要性
* データベース設計の第一歩
* 間違った設計が招く災難
* 設計の3段階 - 概念、論理、物理
* 整理
3. 概念モデリング
* 要件分析と核心要素の識別
* エンティティとは?
* エンティティ分類1
* エンティティ分類2
* プロパティと識別子
* カーディナリティと参加度
* ERD完成
* 関連エンティティ - 多対多関係の解決
* 用語辞典
* 整理
4. 概念モデリング - 実習
* 実践要件分析
* 実戦概念的モデリング - 開始
* 実戦概念的モデリング - ERD作成
* 実戦概念的モデリング - 用語辞典作成
* 整理
5. 論理モデリング1 - キー
* 様々な種類のキー
* 自然キー vs 代理キー1 - 自然キー
* 自然キー vs 代理キー2 - 代理キー
* 自然キー vs 代理キー3 - パフォーマンストレードオフ
* 自然キー vs 代理キー4 - 現代的な設計
* 複合キー設計
* 多対多関係と複合キー
* 整理
6. 論理モデリング2 - 参加度と一対多関係
* 論理的モデリング - 関係
* 参加度
* 一対多(1:N) 多対一(N:1) 関係 - 外部キーの位置1
* 一対多(1:N) 多対一(N:1) 関係 - 外部キーの位置2
* 一対多(1:N) 多対一(N:1) 関係 - 結合と膨張
* 整理
7. 論理モデリング3 - 一対一、多対多関係
* 一対一(1:1)関係 - 開始
* 一対一(1:1)関係 - 外部キーの位置
* 一対一(1:1)関係 - [実習] 関係拡張の柔軟性
* 一対一(1:1)関係 - 主テーブルにFK
* 多対多(M:N)関係 - リレーショナルモデルの限界
* 多対多(M:N)関係 - 連結テーブル
* 多対多(M:N)関係 - 属性
* 多対多(M:N)関係 - 概念的、論理的モデリング
* 整理
8. 論理モデリング4 - 識別関係、非識別関係
* 識別関係 vs 非識別関係 - 概念
* 識別関係 vs 非識別関係 - 一対多(1:N)
* 識別関係の問題点
* 識別関係 vs 非識別関係 - SQLクエリ、パフォーマンス
* 識別関係 vs 非識別関係 - 一対一(1:1)
* 識別関係 vs 非識別関係 - 多対多(M:N) 1
* 識別関係 vs 非識別関係 - 多対多(M:N) 2
* 識別関係 vs 非識別関係 - 現代的な設計トレンド
* 整理
9. 論理的モデリング - 実習
* 実戦論理的モデリング - 開始
* 実践論理モデリング - ERD作成
10. 正規化
* 正規化 - 開始
* 第1正規形
* 第2正規形
* 第3正規形
* BCNF正規形
* 実務と正規化
* 整理
11. 物理的モデリング
* 物理モデリング概要
* テーブルとカラム変換ルール1 - 基本ルール
* テーブルとカラム変換ルール2 - 略語と単数複数
* データタイプ1 - 文字、数字、PKタイプ
* データタイプ2 - 日付と時間タイプ
* 非正規化
* テーブル定義書
* まとめ
12. 物理モデリング - 実習
* 物理モデリング - 実習開始
* インデックス設計 - 実習
* 非正規化 - 実習
* ショッピングモール テーブル定義書
* ショッピングモールのDDLとDB作成
* 物理モデル - ERD自動生成
* ショッピングモール機能確認1
* ショッピングモール機能確認2
* 整理
ありがとうございます。
こんにちは。皆さん
データベース設計1編の講義がついにオープン準備に入りました。今回リリース予定の設計編1は9月16日〜9月19日の間にリリース予定です。
データベースロードマップ - 講座リリース予定スケジュール
設計編1 – 現代的データモデリング完全攻略 - 9月中旬リリース予定
設計編2 - 実務設計パターンと活用技法マスター - 2025年年末リリース予定
パフォーマンス最適化と高度機能編 - 2026年年初リリース予定
タイトル: キム・ヨンハンの実戦データベース設計1編 – 現代的データモデリング完全攻略
講義数:83個
講義時間:16時間11分
講義PDF資料:約400ページ
講義紹介
データベースはすべてのアプリケーションの基盤です。
しかし、適切に設計できなければプロジェクトはすぐに限界にぶつかり、メンテナンスは地獄になります。この講義は単純にテーブルを作る方法ではなく、実務で通用する現代的な設計手法を体系的にお教えします。そして私の数多くの実戦経験と長年の悩みの結果をこの講義に込めました。
講義の核心ポイント
* 概念的 → 論理的 → 物理的モデリング
3段階アプローチでDB設計を完全マスターします。
* 実務ですぐに使える設計ノウハウ
理論だけに留まらず、ショッピングモールプロジェクトを例として活用します。
* 間違った設計の罠を避ける
なぜERDが重要なのか、なぜ正規化が必要なのか、そしていつ非正規化を行うべきなのかを実習を通じて理解できるようになります。
* キーと関係設計の本質
自然キー vs 代理キー、一対一・一対多・多対多関係、識別関係 vs 非識別関係まで深く扱います。
* 最新のDB設計トレンドを反映
数十年前の教科書に留まらず、現代的なデータモデリング方法論を提示します。
学習内容
要件分析と核心エンティティの導出
ERD作成および用語辞書管理
正規化(1NF~BCNF)とその限界
インデックスとパフォーマンスを考慮した物理的モデリング
ショッピングモールプロジェクト全体DB設計実習
講義対象
開発者:コードを書く前にしっかりとしたDBを設計したい方
企画者/アナリスト:データフローと構造を根本的に理解したい方
就職準備生:面接で差別化されたDB設計能力を見せたい方
ジュニア開発者:実務ですぐに使える設計原則を学びたい方
シニア開発者/リード:チームのデータベース設計品質を向上させたい方
講義全体の目次
1. 講義紹介と授業資料
* 1-A. Windows - MySQL インストールガイド
* 1-B. macOS - インストールガイド
2. 設計の重要性
* データベース設計の第一歩
* 間違った設計が招く災難
* 設計の3段階 - 概念、論理、物理
* 整理
3. 概念モデリング
* 要件分析と核心要素の識別
* エンティティとは?
* エンティティ分類1
* エンティティ分類2
* プロパティと識別子
* カーディナリティと参加度
* ERD完成
* 関連エンティティ - 多対多関係の解決
* 用語辞典
* 整理
4. 概念モデリング - 実習
* 実践要件分析
* 実戦概念的モデリング - 開始
* 実戦概念的モデリング - ERD作成
* 実戦概念的モデリング - 用語辞典作成
* 整理
5. 論理モデリング1 - キー
* 様々な種類のキー
* 自然キー vs 代理キー1 - 自然キー
* 自然キー vs 代理キー2 - 代理キー
* 自然キー vs 代理キー3 - パフォーマンストレードオフ
* 自然キー vs 代理キー4 - 現代的な設計
* 複合キー設計
* 多対多関係と複合キー
* まとめ
6. 論理モデリング2 - 参加度と一対多関係
* 論理的モデリング - 関係
* 参加度
* 一対多(1:N) 多対一(N:1) 関係 - 外部キーの位置1
* 一対多(1:N) 多対一(N:1) 関係 - 外部キーの位置2
* 一対多(1:N) 多対一(N:1) 関係 - 結合と膨張
* 整理
7. 論理モデリング3 - 一対一、多対多関係
* 一対一(1:1)関係 - 開始
* 一対一(1:1)関係 - 外部キーの位置
* 一対一(1:1)関係 - [実習] 関係拡張の柔軟性
* 一対一(1:1)関係 - 主テーブルにFK
* 多対多(M:N)関係 - リレーショナルモデルの限界
* 多対多(M:N)関係 - 連結テーブル
* 多対多(M:N)関係 - 属性
* 多対多(M:N)関係 - 概念的、論理的モデリング
* 整理
8. 論理モデリング4 - 識別関係、非識別関係
* 識別関係 vs 非識別関係 - 概念
* 識別関係 vs 非識別関係 - 一対多(1:N)
* 識別関係の問題点
* 識別関係 vs 非識別関係 - SQLクエリ、パフォーマンス
* 識別関係 vs 非識別関係 - 一対一(1:1)
* 識別関係 vs 非識別関係 - 多対多(M:N) 1
* 識別関係 vs 非識別関係 - 多対多(M:N) 2
* 識別関係 vs 非識別関係 - 現代的な設計トレンド
* 整理
9. 論理モデリング - 実習
* 実戦論理的モデリング - 開始
* 実戦論理的モデリング - ERD作成
10. 正規化
* 正規化 - 開始
* 第1正規形
* 第2正規形
* 第3正規形
* BCNF正規形
* 実務と正規化
* 整理
11. 物理的モデリング
* 物理モデリング概要
* テーブルとカラム変換ルール1 - 基本ルール
* テーブルとカラム変換ルール2 - 略語と単数複数
* データタイプ1 - 文字、数字、PKタイプ
* データタイプ2 - 日付と時間タイプ
* 非正規化
* テーブル定義書
* 整理
12. 物理モデリング - 実習
* 物理モデリング - 実習開始
* インデックス設計 - 実習
* 非正規化 - 実習
* ショッピングモール テーブル定義書
* ショッピングモールDDLとDB作成
* 物理モデル - ERD自動生成
* ショッピングモール機能確認1
* ショッピングモール機能確認2
* 整理
ありがとうございます。
こんにちは。皆さん
ついにデータベース入門、基本編の2つの講義がオープンしました。
データベースを初めて学ぶ方でも気軽に学べるように、データベース入門講義を無料で提供することにしました。
キム・ヨンハの実戦データベースロードマップ
キム・ヨンハンの実戦データベース入門 - SQLから丁寧に(オープン)
キム・ヨンハンの実戦データベース - 基本編(オープン)
金英漢の実践データベース - 設計編(2025年後半予定)
金由ハンの実戦データベース - パフォーマンス最適化と上級機能編(2025年下半期予定)
受講対象
ちなみに、今回の講義は開発者だけでなく、プランナーやデータアナリストの方々も聴講できるようにやさしく構成しました。
開発者:データベースの基礎をしっかり固めたいジュニア、未経験者、就職準備中の皆様
企画者/マーケター:データに基づいた意思決定が必要な方
データアナリスト:SQLスキルを身につけたい初心者
[開発者の視点からロードマップを紹介]
開発者の方は、全体のロードマップをすべて追っていただくことをおすすめします。
多くの開発者が共感するでしょうが、結局、優れたアプリケーションは、しっかり設計されたデータベースの上に生まれます。アプリケーションコードだけでは決して解決できない問題が、まさにこのデータベース領域にはあるからです。このロードマップは、残り半分の核心的スキルを補い、皆様を一段高いレベルの開発者へと導いてくれるでしょう。
入門編: まず、「入門編」を通してデータベースとSQLの基礎を固めます。
基礎編:基礎編では、ジュニア開発者に必ず必要なデータベースの基礎知識を扱います。
結合、サブクエリ、UNION、CASE文を通じて、どんな複雑なビジネス要件もSQLで解決できる能力を身につけます。
インデックスの動作原理を正しく理解し、実務に必要なSQLパフォーマンス最適化の基礎をしっかり身につけます。
トランザクションとデータの整合性を深く理解し、データが壊れない安定したアプリケーションを作成できます。
設計編: 設計編では、皆さんの開発者としてのレベルを一段階上のレベルに引き上げます。優れたデータベース設計がどのようにアプリケーションの保守性と拡張性を決定するのかを学び、実務で遭遇する複雑な要件を体系的にモデル化する力を身につけます。
パフォーマンス最適化と上級機能編:パフォーマンス最適化と上級機能編は、大規模トラフィックを扱う上級開発者になるための最後の関門です。誰も解決できないデータベースのパフォーマンスボトルネックを特定し、サービスの限界を押し上げる上級技術を習得します。
このロードマップをマスターすれば、皆さんは「単に機能を実装するだけの開発者」を超え、アプリケーションとデータベースの両方を深く理解し、最適化できるようになります。どんな問題状況でも解決の糸口を見つけ出す、真に実力のある開発者へと成長するでしょう。
[企画・データ分析者の視点からロードマップを紹介]
企画者やデータ分析担当の方は、入門編と次の基本編まで受講することをおすすめします。
入門編:入門編でSQLの基礎を身につけることで、もうデータを依頼して待つ必要はなく、必要な答えをすぐに得られるスピードと自立性が手に入ります。
基礎編:基礎編では、さらに一歩進みます。
JOIN、サブクエリ、UNION、CASE文といった高度なSQLを活用して、複数の場所に散らばったデータを統合し、独自の基準で再加工しながら分析の深さをさらに高めていきます。
この2つのプロセスだけでも、皆さんはデータに基づいてサービスを改善し、組織を説得し、開発チームと円滑にコミュニケーションできるキーパーソンへと成長するでしょう。
データに基づいたプロダクトを直接リードしたい場合は、応用編として「設計編」を学習し、データ構造に関する理解を深めるのも良い選択です。
企画者と分析担当者の皆様、このロ드マップの入門編と基本編は、データを使って仕事をする方法を完全に変えてくれます。
入門編 - セクション目次
1. 講義紹介と授業資料
2. データベースの紹介
3. データベースの開始
4. SQL - データ管理
5. SQL - 検索と並べ替え
6. SQL - データ加工
7. SQL - 集計とグループ化
基礎編 - セクション目次
1. 講義の紹介と授業資料
2. ジョイン1 - 内部ジョイン
3. ジョイン2 - 外部ジョインとその他のジョイン
4. サブクエリ
5. UNION
6. CASE文
7. ビュー(View)
8. インデックス1
9. インデックス2
10. データの完全性
11. トランザクション
12. ストアドプロシージャ、関数、トリガー
ロードマップの進行に関する質問をまとめて回答します。
1. データベースロードマップの進行基本順序
- 基本的な順序は、Java → データベース → Spring → Spring BootとJPAの活用という順序です。
2. データベースロードマップの進行おすすめ順序
最も効果的な学習順序は、データベース入門編と基本編をSpringロードマップのSpring DB1の直前に学習することです。
したがって、次の順序で学習します。
- ...
- Spring MVC2
- データベース入門
- データベース基本編
- Spring DB 1편
- Spring DB 2편
- ...
Spring BootとJPA活用ロードマップを進める際には、最低限データベース基本編までを受講してから進むことをおすすめします。
データベース設計編、パフォーマンス最適化と高度な機能については、リリース後にもう一度整理してお知らせいたします。
3. MySQLをベースに学習を進めますか?それともOracleですか?
実習はMySQLを中心に進めますが、講義内容はMySQLだけでなく、RDBMS全般にわたり普遍的な知識を伝えることに重点を置いています。そのため、特定のデータベースに縛られない幅広い理解を目指します。
たとえるなら、この講義ではMySQLという自動車の運転方法を学ぶことになります。しかし、特定のモデルの自動車の操作方法を覚えるだけではなく、アクセルやブレーキ、ハンドルのように、どんな自動車(RDBMS)を運転する場合でも基本的に理解していなければならない運転の原理(RDBMSの核心概念)を学ぶことに重点を置きます。そのため、他のRDBMSを扱うときにも大いに役立つでしょう。
ありがとうございます。
こんにちは。皆さん
いよいよデータベース入門、基本編2講義がオープン準備に入った。
長い間お待ちいただき、応援していただきありがとうございます!
発売予定日は7月30日~8月1日と予想されます。
キム・ヨンハンの本番データベースロードマップ
キム・ヨンハンの実践データベース入門 - SQLから次々に(オープン)
キム・ヨンハンの本番データベース - 基本編(オープン)
キム・ヨンハンの実戦データベース - 設計編(2025年下半期予定)
キム・ヨンハンの実戦データベース - パフォーマンス最適化と高度な機能編(2025年下半期予定)
講義対象
ちなみに今回の講義は開発者だけでなく、企画者、データアナリストの方々も聞けるように簡単に構成しました。
開発者:データベースの基礎をしっかり固めたいジュニア、非専攻者、就職準備生
企画者/マーケター:データ駆動型意思決定が必要な方
データアナリスト: SQL能力を積み重ねたい入門者
【開発者の観点からロードマップ紹介】
開発者であれば、ロードマップ全体に従うことをお勧めします。
多くの開発者が共感しますが、最終的に優れたアプリケーションは、よく設計されたデータベースの上で誕生します。アプリケーションコードだけでは決して解決できない問題がまさにこのデータベース領域にあるからです。このロードマップは、残りの半分のコアコンピテンシーを満たし、あなたを一次元の高い開発者にします。
入門編:まず、「入門編」を通じてデータベースとSQLの基礎を固めます。
基本編:基本編では、ジュニア開発者に必要なデータベースの基本を扱います。
結合、サブクエリ、ユニオン、ケースステートメントにより、あらゆる複雑なビジネス要件がSQLに解放される能力があります。
インデックスの動作原理をきちんと把握し、実務に欠かせないSQLパフォーマンス最適化の基礎を固めます。
トランザクションとデータの整合性を深く理解することで、データが壊れない安定したアプリケーションを作成できます。
設計編:設計編は、あなたを一歩上のレベルの開発者にするでしょう。優れたデータベース設計がアプリケーションの保守性とスケーラビリティをどのように決定するかを学び、実践に直面する複雑な要件を体系的にモデル化する能力を高めます。
パフォーマンスの最適化と高度な機能編:パフォーマンスの最適化と高度な機能編は、大容量トラフィックを扱う高度な開発者への最後の関門です。誰も解決できないデータベースパフォーマンスのボトルネックを見つけ、サービスの限界を引き上げる高度な技術を習得します。
このロードマップをマスターすると、「単純に機能を実装する開発者」を超えてアプリケーションとデータベースの両方を深く理解し最適化し、あらゆる問題状況でも解決の手掛かりを見つける本当の実力ある開発者に成長することになります。
【企画、データアナリストの観点からロードマップ紹介】
企画者やデータアナリストなら入門編と次の基本編まで聞くことをおすすめします。
入門編:入門編を通じてSQLの基礎を習得すると、もはやデータを要求して待つ必要なく、必要な答えをすぐに得る速度と独立性を持つようになります。
基本編:基本編ではさらに一歩進んでいきます。
結合、サブクエリ、ユニオン、ケースステートメントなどの高度なSQLを活用して、さまざまな場所に散在したデータを合わせ、独自の基準で再加工し、分析の深さを増やします。
この2つのプロセスだけでも、データに基づいてサービスを改善し、組織を説得し、開発チームとスムーズにコミュニケーションをとる重要な人材に生まれ変わります。
データベースのプロダクトを直接リードしたい場合は、深化過程で「設計編」を学習してデータ構造に対する理解を広げることも良い選択になります。
企画者やアナリストにとって、このロードマップの入門編と基本編は、データの取り扱い方法を完全に変えてくれます。
入門編 - セクション目次
1. 講義紹介と授業資料
2. データベースの紹介
3. データベースの起動
4. SQL - データ管理
5. SQL - 照会とソート
6. SQL - データ処理
7. SQL - 集計とグループ化
基本編 - セクション目次
1. 講義紹介と授業資料
2. 結合1 - 内部結合
3. 結合2 - 外部結合とその他の結合
4. サブクエリ
5. UNION
6. CASE 文
7. ビュー(View)
8. インデックス1
9. インデックス2
10. データの整合性
11. トランザクション
12. ストアドプロシージャ、ファンクション、トリガ
ロードマップの進行に関する質問を集めて回答します。
1. データベースロードマップ進行の基本順序
- 基本的な順序は、Java - >データベース - >スプリング - >スプリングブートとJPAの利用順序です。
2. データベースロードマップ進行推奨順序
最も効果的な進行順序は、データベース入門編と基本編をSpringロードマップのSpring DB1の直前に学習することです。
したがって、次の順序で学習することです。
- ...
- Spring MVC2
- データベース入門
- データベース基本編
- Spring DB 1編
- Spring DB 2編
- ...
Spring BootとJPAの活用ロードマップを進めるときは、少なくともデータベースの基本編までは聞いて進めることをお勧めします。
データベース設計編、パフォーマンス最適化と高度な機能は、発売になればもう一度まとめてお知らせします。
3. mysqlベースで学習進行しますか? Oracleに進みますか?
練習はMySQLを中心に行われますが、講義の内容はMySQLだけでなくRDBMS全体を網羅する普遍的な知識を伝えることに焦点を当てます。そのため、特定のデータベースにとらわれない幅広い理解を目指します。
たとえ話をすれば、この講義で私たちはMySQLという自動車を運転する方法を学びます。しかし、単に特定のモデルの車の操作方法だけを習うのではなく、アクセル、ブレーキ、ハンドルのように、どの車(RDBMS)に乗っても基本的に知る必要のある運転原理(RDBMSの核心概念)を学ぶことに重点を置きます。だから他のRDBMSを扱うときも大きな助けになるでしょう。
ありがとうございます。
こんにちは。いよいよJava高級3編 Javaロードマップの最後の講義をオープンしました。
キム・ヨンハンの本番Java - 上級3編、ラムダ、ストリーム、関数型プログラミング
講義時間:16時間40分
講義数:97講義
講義PDF資料:387ページ
【講義紹介】
ラムダ、ストリーム、関数型プログラミングなど、最新のJavaでよく使用される新しい文法とスキルを学びます。今回の講義を通じて、ラムダ、ストリーム、関数型プログラミングなどの技術を単に知ることを超えて、実務にこれらの技術をどのように適用すべきか、深く理解し、また活用できるように教えていきます。
【講義内容まとめ】
主な講義の内容は次のとおりです。
1. ラムダが必要な理由
きちんとした簡潔なコードのために、並列処理などの高度な機能を簡単に活用するために、ラムダが現在のJavaでどのように重要な役割を果たしているかを学びます。
2. ラムダ
実際のコード例では、ラムダの定義と文法、活用のヒントを学びます。既存の方法とどう違うのか、またどんな点が魅力的なのか明確に理解できます。
3. 関数型インタフェース
ラムダと一緒に使われる必須概念である関数型インタフェース!関数型プログラミングが可能な理由と、Java標準APIに組み込まれたさまざまな関数型インタフェースを簡単に活用する方法をお伝えします。
4. ラムダ活用
実務コードでラムダをどのように適用できますか?繰り返しパターンと複雑なロジックを簡素化するラムダの重要な活用法を例と一緒に見てみましょう。
5. ラムダ対匿名クラス
どのような状況でラムダがより効率的で、どのような場合には匿名クラスを書くべきかを比較分析します。
6. メソッドリファレンス
Java 8から追加されたメソッド参照文法は、関数型プログラミングのきれいさを一段階アップグレードします。メソッド参照文法がどのように動作し、実用的な活用例は何かをお知らせします。
7. ストリーム API1 - 基本
ストリームAPIは、ラムダと一緒にJavaコレクションを扱う新しいパラダイムを示しています。初めて接する方もわかりやすく、ストリーム構造と基本使い方をわかりやすくまとめています。
8. ストリーム API2 - 機能
フィルタリング、マッピング、並べ替え、リデュースなど、ストリームが提供する重要な機能を次々に調べます。コードをより直感的で暗黙的に書く方法を学ぶことができます。
9. ストリーム API3 - コレクター
効率的なデータ収集と処理のためにストリームで活用するコレクターの概念を学びます。 collect(), grouping, partitioning など、実務で必須のスキルを習得できます。
10. Optional
null処理をきちんと解決してくれるOptionalをきちんと活用してみましょう。 isPresent(), orElse(), orElseThrow() など、本番で頻繁な NPE 問題を防止するためのさまざまな方法を扱います。
11. デフォルトメソッド
Javaインタフェースの新しい面であるデフォルトメソッドを見てください。
インターフェイスを拡張するときに互換性を維持する方法とともに、正しい使い方を学びます。
12. パラレルストリーム
高性能のための並列処理! ForkJoinプールから、ストリームAPIを介したマルチコア活用ノウハウと並列ストリームで発生する可能性のある注意事項を一緒に学びましょう。
13. 関数型プログラミング
Lambda、Stream API、Optionalなど、Java 8以降に追加された機能はすべて関数型プログラミングパラダイムを反映しています。オブジェクト指向言語と関数型パラダイムの組み合わせにより、より効率的なコードを書く方法を教えてくれます。
ありがとうございます。

