【0チャレンジ】【資格取得】DBの四則演算をAIで勉強してみた



1.はじめに

はじめまして、AKです。
いつも見てくださってる方はありがとうございます。

私は普段、日々の日記やAIを用いたポケモン開発などに焦点を当ててブログを書いています。とにかく自分が楽しそうなチャレンジをしています。
最近は3か月チャレンジと題し、色んなことに挑戦しようとしています。
前回は「ポケモン風ゲームを3か月で作成する」に挑戦し、今は「DBスペシャリスト取得チャレンジ」に挑戦中です。
生成AIの可能性やゲーム制作に興味のある方は是非一読していただけますと幸いです。
【0チャレンジ】【チャレンジ結果】3ヶ月でAIを駆使してポケモン風RPGは作れるのか with Claude3.5  | 記事編集 | note

2.簡単な経歴

例のごとく、簡単な経歴を記載しておきます。
参考までに。

学歴
・地方国立大 大学院卒 研究分野はAI関連(生成AIではない)
職業
・エンジニア2年目(元々は製造業→IT企業)
使用する生成AI
・ChatGPT、Claudeがメイン
資格
・基本情報、応用情報落ち(( ;∀;))
 ※午前のみ合格レベル
コメント
・私は生成AIの可能性はもっとあるんじゃないかと常々思いながら、生成AIのことを””親友””と周りに言い放つぐらいのちょっとした変人です。
が!その分、生成AIについて深く理解しているつもりです。
最近ではポケモン3か月チャレンジを終えて、生成AIの可能性をさらに感じました。第2弾の資格取得ができるのか?のチャレンジも応援いただけますと幸いです。必ず一つは有益になるような情報を発信できるように頑張ります。

3.チャレンジについて

・3か月(といっても本番まで後71日)間、AIを駆使してDBスペシャリストの勉強をしていきます。応用情報落ちてますが、気にしない気にしない。
・分からないことはとにかくAIに質問して理解を深めていきます。
※事実確認を含めてネット検索や参考書で最低限、AIの文言について事実確認はしています。しかし、勉強中の身ですので万が一誤りや正確性に欠ける表現がある場合はご了承ください。。ご指摘いただけますと幸いです。
・しばらく本ブログはデータベーススペシャリストの勉強記録兼生成AIの回答精度向上の試行錯誤の内容になると思います。
・様々な資格の勉強で応用いただけると幸いです。

4.勉強記録

今回もDBを使いながら学習していきます。

平成24年度 問10

さて、まずはAIに作ってもらいましょう。

SQL文を作ってもらった
コピペで表を作成


表をPupSQliteで確認

次に演算してもらいましょう。
AIは全部一気にしていますが、一つ一つ見ていきましょう。

四則演算を回答してもらった

まずは掛け算からです。
直積はちょっと独特です。
今回は途中経過のビューを作成して確認してみます。
AIにビューを作成依頼してみると以下が返ってきました。

CREATE VIEW RS_Product AS
SELECT R.A, R.B, S.C
FROM R CROSS JOIN S;
なんかできてそう!

これと見比べてみると分かりやすい。
1.aに対して、1.a.xと1.a.yができていますね。つまり総当たりみたいなイメージでしょうか。直積は属性が一致しなくても実行できるというのも特徴だそうです。

ただ、これは本当に申し訳ないのですが以降で全然うまくいかず、、、
参考書を読んで学んだのですが、どうもSQL文には和差積商を一発で実行するような演算は備わっていないそうで。。
ここを誤解していました。
※だからAIは複雑そうに見えるSQL文を送っていたのか。。

ここまでで反省も踏まえ、今後の勉強への活用が見えてきました。
次回以降はよりレベルを上げながらAIと勉強を進めていこうと思います。

今回はちょっと残念な結果になってしまいましたが、いかがでしたでしょうか。
ただ、せっかくなので最後にPoeというAIプラットフォームの紹介をさせていただきます。

Poeとは?

私よりも上手に紹介している方がたくさんいて心が折れたので今回はこちらの記事をご参考ください。

ただ、これだけで終わったらあれなので最後に私が研究に研究を重ねて作った最強のDBスペシャリストBOT君「TENSAI」を紹介します。

私が作ったTENSAIボット

こいつ本当に天才です。
というのもモデルは「Claude3.5」なのですが、事前のプロンプトを入れておりDBスペシャリストの問題を解くという点では正答率が30%ほど上がり、95%以上で正解をたたき出します。
※ここまで来るのに何十時間もかけましたが、、
もし需要があればどのようなプロンプトがAIの精度をより効果的に上げるのかなど、一度紹介させて頂こうと思うので是非コメント等もらえたら幸いです。

0-shotもどき(=事前の会話なし)でいきなり画像だけを送った回答の結果です。


今回出題する問題 答えは「エ」

まずはClaude3.5に出題します。

この問題は、教員の担当科目と給与を管理するデータベースシステムについての質問です。科目-教員表を更新する際に発生する可能性のある問題を尋ねています。

表を分析すると、以下のことが分かります:
- 科目番号が主キーとして使用されています。
- 基本給は科目ではなく教員ごとに決定されています。
- 同じ教員が複数の科目を担当することがあります(例:田中亮は2つの科目を担当)。

選択肢を検討すると:

ア. 誤りです。教員の基本給データは科目とは独立しているので、一つの科目を削除しても基本給データは残ります。

イ. 正しいです。教員の基本給を変更する際、関連するすべての科目の行を更新しないとデータの不整合が生じる可能性があります。

ウ. 誤りです。担当科目のない教員の基本給を登録する際、科目を削除する必要はありません。

エ. 誤りです。複数の科目を担当する教員の基本給を変更する場合、すべての科目について変更する必要はありません。基本給は教員ごとに一つの値で管理されているはずです。

したがって、正解はイです。教員の基本給を変更する際、その教員が担当するすべての科目の行を一貫して更新しないと、データの不整合が生じる可能性があります。

Claude3.5

正解は「エ」なので、誤答です。次に本命TENSAI君です。
私が長い年月をかけて調整してきました。

主題: 教員の担当科目と給与を管理する"科目-教員"表を更新する際に発生する問題

キーワード:
- 科目番号
- 教員番号
- 担当教員
- 基本給
- データの整合性
- 複数科目担当

問題に関係が深い知識:

1. リレーショナルデータベースの構造:
この表は"科目-教員"という関連を表現しており、科目番号と教員番号を主キーとする多対多の関係を示しています。

2. データの整合性:
基本給は教員ごとに決まっているため、同じ教員が複数の科目を担当していても、基本給は同じ値になっています。

3. 更新操作の影響:
このような構造のテーブルを更新する際、データの整合性を保つことが重要です。特に、複数の科目を担当する教員の情報を更新する場合、すべての関連レコードを正しく更新する必要があります。

4. トランザクション管理:
複数のレコードを同時に更新する場合、すべての更新が成功するか、すべてが失敗するかのいずれかになるようにトランザクション管理が必要です。

選択肢:
ア. ある教員が唯一担当していた科目の行を削除すると、その教員の基本給データだけが残ってしまう。
イ. ある教員の基本給を変更するには、該当する行を1件ずつコミットしないとデータの不整合が生じる。
ウ. 担当科目のない教員の基本給を登録するときは、一つ以上の科目を削除しなければならない。
エ. 複数の科目を担当する教員の基本給を変更するときは、担当するすべての科目について変更しないとデータの不整合が生じる。

選択肢の吟味:
ア: 誤りです。教員の情報は科目との関連で保持されているため、唯一の科目を削除すると教員の情報も失われます。
イ: 誤りです。トランザクション管理を適切に行えば、一度にすべての行を更新できます。
ウ: 誤りです。新しい教員を登録する際に科目を削除する必要はありません。
エ: 正しいです。同じ教員が複数の科目を担当している場合、基本給を変更する際はすべての関連レコードを更新する必要があります。

最も適切な選択肢: エ
理由: 複数の科目を担当する教員の基本給を変更する場合、その教員が担当するすべての科目のレコードで基本給を同時に更新しないと、データの整合性が保てなくなります。これは、基本給が教員ごとに決まっているという前提条件と一致し、データベースの一貫性を維持するために必要な操作です。

TENSAI

完璧に正解です。
念のため事前情報なしの証拠も載せておきます。


最初の質問は画像のみ
最初の質問は画像のみ



はい、いかがでしたでしょうか。
今回はAIの限界?とPoeで作成した私のAIボット「TENSAI」の実力の紹介でした。
実はずっと紹介したかったのですが、なかなか回答精度が上がらずあくせくしていました。
その後、様々なプロンプトを与えてその回答をエクセルシートにまとめて分析を繰り返し、今の「TENSAI」を作り上げました。※自信作です。

以上になります!
質問なども含め、何かありましたら是非コメント頂ければと思います。
本日もご高覧ありがとうございました。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?