担当者 X @_kobashi
出席登録は実習室のPCにログインして自分で行う。
Webclass にログイン → データベース をコース登録 → コースを開く → 出席データの送信/確認
回答した内容と時刻、PCのIPアドレスが記録されます。
難易度
プログラミング入門 → ブログラム演習1 → ブログラム演習2 → データベース
ITパスポート → 基本情報技術者 → 応用情報技術者 → データベーススペシャリスト
評価
授業の課題 + Webclassの課題 + 期末課題(1ヵ月かけて制作)
期末課題
Webアプリケーションフレームワーク CakePHP による受講生が企画したWebデータベース制作
現在主流の Laravel は演習では扱わない
多数の表を扱うデータ処理
ExcelのVLOOKUP関数っぽさがある。 https://twitter.com/Excel_design_Dr/status/1572345126734934017 (閲覧には要ログイン)
2年後期 メディア情報技術
データベースの講義の歴史。昔は前期と後期に2科目を開講していた。
データベース(情報文化学部情報メディア学科 2011 - 2013)
データベース演習(情報文化学部情報メディア学科 2010 - 2013)
昔のサイトのコンテンツ によれば1996年からデータベースを担当している。
mysqldが落ちてその後ログイン不能になった。パスワードのリセットもできない。
原因: mysqlの権限関連のテーブルが破損
mysqld --skip-grant-tables で権限設定なしで起動。とても危険な状態
phpMyAdminでmysqlデータベースのテーブルをチェックして修復
mysqldを止めて、通常に再起動で復旧できた。
phpMyAdminで データベースのSQLタブなどで実行すると
localhost に接続できない
エラーがでる:
phpMyAdminを開きなおしてSQLコードを実行しなおすとエラーが出なくなる
もしくは
SQL自体は実行できているのでphpMyAdminを開きなおすだけでOK
権限設定の演習のエラー:
mysql データベースの columns_priv や tables_priv などが破損していた。phpMyAdminのデータベースメニューからmysqlデータベースの全テーブルをチェックして破損しているテーブルを全て修復する
次に、不具合の起きているアカウントを削除して作成しなおすか、ALL Privillagesの権限を与えてから権限を削除して必要な設定を行う
↑これで治った
MySQLが起動不能に対処する:
https://hide-log.net/2024/01/2015/
https://blog.t-mitarai.com/infra/freebsd/security/mariadb-died-on-xampp2/
クラウド、データサイエンス、IoTに対応したデータベース
Laravelどうするの?
コマンドプロンプトの設定 フォントサイズを上げる
phpMyAdminのSQLタブのフォントサイズを上げる(方法を探す)、クエリにグループ化と集計関数の機能を実装検討
phpMyAdmin:SQLクエリボックスとヒントボックスのフォン変更方法 | SE Life Log – VBAを中心にその他IT備忘録 – https://selifelog.com/blog-entry-1740.html
メモ
2025に向けて
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
InnoDBのPKの仕組みとUUIDをPKにする際の注意点 https://techblog.raccoon.ne.jp/archives/1627262796.html
2020年ごろまで運用されていたデータベース講座のデータモデル例一覧のWebアーカイブ
SQLを速くする!インデックス入門
データベース概論Ⅰ 筑波大学 計算科学研究センター教授 北川 博之
2024年度メモ
・CakePHPからトランザクション https://book.cakephp.org/5/ja/orm/database-basics.html#id13
データベース側で実行する場合
所持アイテム数が0になったらレコードを削除するストアドプロシージャ(トランザクション)
新規ユーザ作成で初期装備をInsertしてセットアップするトリガー
上記に相当するCakePHPのコード
・テーブルのカラムのCheck制約を扱う際はalter table change columnで修正・削除すること
・ストアドプロシージャやトリガーではテーブルを自己参照して実行できない。ループすると危険だから。
・CakePHPのViewのFormHelperが control('year') で年度の選択範囲を現在年度+-5年で表示する件。Helperのオプションで範囲を調整可能
・データベースの特別課題
ChatGPTでテーブルを4つ持つDBを生成する。
そのDBに関する問い合わせを、日本語の文章で考える。
問い合わせ文はChatGPTで生成してもOK
次にその問い合わせを解決するSQLクエリをChatGPTで生成する
そのクエリは先の問い合わせ内容を解決できない不具合を有すこと。
ChatGPTの生成したこの不完全なSQLを修正して問い合わせに完全に答えるSQLを生成、もしくは自作する。
ここまでの過程をレポートにまとめて提出。
・書籍管理データベースのテーマに関しては大学の図書館データベースの再現度に応じて評価する
テーブルが3個以上必須という期末課題の条件を、書籍貸出管理データベースに限っては10個以上に下限をあげる
・英語のみのサンプルレコードは禁止 ChatGPTのポン出し生成のみのサンプルレコードとテーブル設計は大幅に減点
2023年度メモ
講義用ページへのショートカットをデスクトップに作らせるとよいらしい。→ Webクラスに掲載した
毎回検索している受講生がいる。
---
決済システムの残高管理周りの DB 設計と戦略 https://twitter.com/_kobashi/status/1410021647646531584?s=20
UUIDをPKにするとパフォーマンスが低下する件 https://techblog.raccoon.ne.jp/archives/1627262796.html
データベースの受講生のごく一部しかSQL書けるようになってない感じなので、挫けてODBCでAccessからMySQLで接続してクエリビルダ紹介してしまいそう。
→最初からAccessでいいのでは。
https://dev.mysql.com/downloads/connector/odbc/
データベースの例題 テーマ うんこ 排便記録
2021年度に向けてのメモ:
XAMPP8.0に更新する。PHP8.0 で CakePHP4.2.2以上の動作確認をする。
INDEXの
再帰クエリの解説 https://mariadb.com/kb/en/recursive-common-table-expressions-overview/
サンプルデータベースの利用 https://www.mariadbtutorial.com/getting-started/mariadb-sample-database/
https://dev.mysql.com/doc/employee/en/
https://pentan.net/phpmyadmin-table-henkou/ テーブル名の変更。
XAMPPのドキュメントルートをWindowsのユーザホームに設定出来るかどうか検討。
https://sites.google.com/site/kobashijiangyiyong/detabesu/qing-bao-shi-xi-shi-yongxamppno-she-ding 変更手順
2020年度に向けてのメモ:
期末課題のデータベースの企画の資料
典型的なテーブルとリレーションのパターンを数パターン示す。カタログタイプ、利用履歴タイプ、予約タイプ、グループ登録タイプ、SNSタイプ、ブログタイプなど。
期末課題の資料の中でCakePHPの命名規約の資料が重複・分散しているので1か所に纏める。
トラブル対応のページを集約する。
CakePHPをWebフレームワークに使用している例が2つ: https://employment.en-japan.com/engineerhub/entry/2019/01/08/103000
そろそろLaravelとか他のWebフレームワークも検討したい。
期末課題のテーブル設計で苦戦する学生へのヒント: Excelで表を作成してラフに試作するところから始めさせるのもよさそう。
CakePHPが4.0にヴァージョンアップしている。xampp環境も含め情報実習室のシステム更新を夏休み中にしておく。
講義資料をCakePHP4.0に対応させる。期末課題の導入ではブックマークチュートリアルではなく、CMSチュートリアルに切り替える。
CakePHPのDebug機能でSQLの発行の様子や取得したレコードが変数に格納されている様子を確認させる演習を入れる。
MariaDB を 10.2以降のVersionに上げる。Window機能(Partition by)やViewでサブクエリをFromに使用できるようになる。
case when や partion by を使用する SQL問題を入れたい。
テーブル設計の課題の出し方。テーブル1つから始めて、テーブルを1つづ増やしてバリエーションを探る課題を出してみたらどうだろう。
人数多いクラスの方が理解度は下がる。回答率は50%くらい。
難易度グレードはカリキュラム上最上位の上級なのでこんなものかな。
クラス間で若干理解度に差が出た。
受講人数の少ないクラスの方が理解度が低くなった。授業後に別の科目に移動するので質問対応を十分に行えなかったためと推測する。