"SQL Essential Training (Online Course)" を始めたら "MySQL" じゃなくて "SQLite" を学び始めた件
LinkedIn Learning オンラインコースで
"SQL Essential Training" の講座を受講したら
MySQL workbench とかを使うのかな? と思っていたら
SQLite studio 講座だった件
SQLite は始めてなので
どんなツールなのか、楽しみ❗
環境
Ubuntu 18.04
SQLite Studio v3.2.1
Qiita 記事で
sqlite studio と検索しても
"sqlite studio" と検索しても Hit 0
sqlite 自体の記事のトップLGTMが111, 111, 86, 86とかなので
ググった方が早そう
それに加えて、Ubuntu用の操作方法を調べる必要があるので
結局ググった方が早い
この Youtube 動画の Ubuntu OS へのインストールの解説がわかり易い
上記通りにインストールしたけど
/opt/SQLiteStudio
にバイナリをインストールしただけなので
snap にも
/usr/share/applications にも
Ubuntu Dock (サイドバー) にショートカットが出来てなかった
なので
下記通りに従って
cd /usr/share/applications/
sudo gedit sqlitestudio.desktop
と .desktop ファイルを作り
下記の情報を入れると
[Desktop Entry]
Version=3.2.1
Type=Application
Terminal=false
Exec=/opt/SQLiteStudio/sqlitestudio
Name=sqlitestudio
Comment=SQLiteStudio
Icon=/opt/SQLiteStudio/app_icon/sqlitestudio.png 👈 このアイコン見づらい 😥
sqlitestudio.icns 👈 このアイコンに変更、見やすい 😊
/usr/share/applications/
でアプリが使えるようになったので
そこからショートカットがやっと出来るようになった
次はマニュアルを探し
残りは
どんなデータデースにするかを考えて終了
最後にもう一つ
エディターは
vs code を使うので
plugin も見つけた
SQLite という拡張機能も使ってみたら
SQLite studio 使わなくても
vs code 内で結構見やすくDBを見れた
node + express の環境で
SQLite を使うので
どんなものがあるかを探したら、2つのメジャーなモジュールがあり
sqlite3 - npm
Weekly Downloads 438,016
sequelize - npm
Weekly Downloads 890,605
sequelize とはどんなものかをQiitaで調べたら
Sequelizeを使用してデータベースを操作するための基本的な情報(2020.09更新) - Qiita
MYSQL
MariaDB
SQLite
Postgres
等の色んなデータベースにアクセス出来るモジュールらしい
今回は sqlite3
のモジュールを使う予定
番外編として
DB設計について調べてみた
データベースを設計する際に
第1−3正規化が大事
だと言う事は下記の完了したコース達を受講したりQiita記事を読んだりして分かっていたけど
実践経験のない素人なので
真に理解した!とはならず
完了したコース
- Programming Foundations: Databases
- MySQL Essential Training
- MySQL Advanced Topics
- MySQL Installation and Configuration
- Programming Foundations: Databases
Qiita トップ記事
サイトはMDN、Qiita以外の日本語の教材が何処が良いのかは分からなかったので
学校由来のサイトを探してみた
他にも、以前参考になったサイトを復習
できるエンジニアになる! ちょい上DB術・基礎編(7):【DB概論】正規化の手順 (1/2)
書籍で気になっているのは コレ👇
Amazon.co.jp: 達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ: ミック: 本
Qiitaにも本の解説があって、大体の内容は分かる
👇
達人に学ぶDB設計 徹底指南書まとめ - Qiita
知識ばかりに偏って
理論派 状態になっていて
知識はあるけど実践がよくわからない
という状態になってしまっている
それでも
DBだけを実際の例で練習、実践する
という体験は難しいので
自分で課題を作るしかない
そこで
自分の興味のある話題の中の一つ
投資・株式
がある
なので
株式情報を node + express で取得してきて
SQLite (DB) に保存していく
というプロジェクトをやると
RDBを学ぶ上では
実践ぽいかな?
と思う
<蛇足>
RDB以外のDBでは
自分がやろうと計画していた
論文データベースを作るという例にとてもフィットしているので
MongoDB を覚える時にでもやろうかなと思っている
投資・株式情報をデータベース(DB)化する方法
DB 設計の方法を考えてみた
テーブル数を2(+2)程にして
Table 1: 会社情報 (Company) ほぼ変化なし
Table 2: 株価情報 (Price) 毎日の株価情報
(Table 3: 決算・四季報情報 (Quarterly) 3ヶ月に一度)
(Table 4: ユーザー数など)
先ずは2情報を軸に
それが慣れてきたら新情報を足し
それが慣れてきたら新情報を足し
DB 設計に慣れていきたい
データベース設計
- 4本値と出来高をフィールドに持つテーブルが良くない理由 - 右京武彦の完全自動デイトレードシステム構築実践虎の巻
- Python - 株価をデータベースにどうやって保存するか|teratail
- SQLで株価の分析環境をローカルに構築する - すからすっからすっからかん
- 株価情報のデータベース設計と情報収集用Rubyプログラム
- 決算情報をデータベース化する方法 | SE×FIRE!
- 自作株データベースでシステムトレード
- sql-server - 大規模な株価データのデータのためのSQL Serverデータベース設計
- Rubyを使ってYahooファイナンスをスクレイピングして株価をDBに… - 人力検索はてな
- sql — 過去の株価データを整理するためのデータベーススキーマ
- Pythonで株価スクレイピング - Qiita
- Pythonでスクレイピングした株価をDBに格納する - Qiita
株情報
上記の記事より
- Table 1: 会社情報 (Company) ほぼ変化なし
- company ID (ユニークID、ほぼ使わない、バックアップ・デバッグ・ログ用)
- stock ID (銘柄コード)
- cname (会社名) <--- この3つの情報で特定
- market (市場) <--- この3つの情報で特定
- year (設立年) <--- この3つの情報で特定
- Table 2: 株価情報 (Price) タイムリーな株価情報
- instance ID
- stock ID (銘柄コード) <--- この3つの情報で特定
- category (業種分類)
- price (xxx)
- dtype (株価情報(例): 始値、高値、安値) <--- この3つの情報で特定
- date (日付) <--- この3つの情報で特定
- (Table 3: 決算・四季報情報 (Quarterly) 3ヶ月に一度)
- stock ID (銘柄コード)
- xxx
- (Table 4: ユーザー数など)
- stock ID (銘柄コード)
- xxx
投資・株式情報を SQLite でデータベース (DB) 設計する実践
その①
先ずは一つ基本となるテーブルを作る
やり方は
User_Manual · pawelsalawa/sqlitestudio Wiki · GitHub
Permanent vs transient database
transient (permanent check box を空欄にする) は
SQLite を閉じると消えてしまう
Grouping
右クリックで出来る
ショートカット変更
デフォルトは、実行はF9となっているので
ツール -> コンフィグレーションダイアログを開ける -> キーボード・ショートカットで
ctr + enter は既にあるので
ctr + shift + enter で実行ショートカットにする
- Table 1: 会社情報 (Company) ほぼ変化なし
- company ID (ユニークID、ほぼ使わない、バックアップ・デバッグ・ログ用)
- stock ID (銘柄コード)
- cname (会社名) <--- この3つの情報で特定
- market (市場) <--- この3つの情報で特定
- year (設立年) <--- この3つの情報で特定