Open12

"SQL Essential Training (Online Course)" を始めたら "MySQL" じゃなくて "SQLite" を学び始めた件

英大研究員H英大研究員H

LinkedIn Learning オンラインコースで
"SQL Essential Training" の講座を受講したら

MySQL workbench とかを使うのかな? と思っていたら
SQLite studio 講座だった件

SQLite は始めてなので
どんなツールなのか、楽しみ❗

環境
Ubuntu 18.04
SQLite Studio v3.2.1

英大研究員H英大研究員H

Qiita 記事で

sqlite studio と検索しても
"sqlite studio" と検索しても Hit 0

sqlite 自体の記事のトップLGTMが111, 111, 86, 86とかなので
ググった方が早そう

それに加えて、Ubuntu用の操作方法を調べる必要があるので
結局ググった方が早い

英大研究員H英大研究員H

上記通りにインストールしたけど

/opt/SQLiteStudio

にバイナリをインストールしただけなので

snap にも
/usr/share/applications にも

Ubuntu Dock (サイドバー) にショートカットが出来てなかった

なので
下記通りに従って


https://askubuntu.com/questions/313619/could-not-save-the-file-usr-permission-denied-13-04
https://linuxconfig.org/how-to-create-desktop-shortcut-launcher-on-ubuntu-18-04-bionic-beaver-linux
https://askubuntu.com/questions/67753/how-do-i-add-an-application-to-the-dash
https://askubuntu.com/questions/224004/how-to-add-programs-to-the-unity-launcher-or-ubuntu-dock
https://www.howtogeek.com/445303/how-to-create-desktop-shortcuts-on-ubuntu/




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/
でアプリが使えるようになったので
そこからショートカットがやっと出来るようになった

英大研究員H英大研究員H

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
のモジュールを使う予定

英大研究員H英大研究員H

番外編として

DB設計について調べてみた

データベースを設計する際に

第1−3正規化が大事

だと言う事は下記の完了したコース達を受講したりQiita記事を読んだりして分かっていたけど
実践経験のない素人なので
真に理解した!とはならず

完了したコース

Qiita トップ記事

サイトはMDN、Qiita以外の日本語の教材が何処が良いのかは分からなかったので
学校由来のサイトを探してみた

正規化 - 札幌学院大学サイト内の個人ページ

ホーム - 札幌学院大学サイト内の個人ページ

他にも、以前参考になったサイトを復習

できるエンジニアになる! ちょい上DB術・基礎編(7):【DB概論】正規化の手順 (1/2)

書籍で気になっているのは コレ👇

Amazon.co.jp: 達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ: ミック: 本

Qiitaにも本の解説があって、大体の内容は分かる
👇
達人に学ぶDB設計 徹底指南書まとめ - Qiita


知識ばかりに偏って

理論派 状態になっていて

知識はあるけど実践がよくわからない
という状態になってしまっている

それでも
DBだけを実際の例で練習、実践する
という体験は難しいので

自分で課題を作るしかない

そこで
自分の興味のある話題の中の一つ

投資・株式

がある

なので
株式情報を node + express で取得してきて
SQLite (DB) に保存していく
というプロジェクトをやると
RDBを学ぶ上では
実践ぽいかな?
と思う

<蛇足>
RDB以外のDBでは
自分がやろうと計画していた
論文データベースを作るという例にとてもフィットしているので
MongoDB を覚える時にでもやろうかなと思っている

英大研究員H英大研究員H

投資・株式情報をデータベース(DB)化する方法
DB 設計の方法を考えてみた

テーブル数を2(+2)程にして

Table 1: 会社情報 (Company) ほぼ変化なし
Table 2: 株価情報 (Price) 毎日の株価情報
(Table 3: 決算・四季報情報 (Quarterly) 3ヶ月に一度)
(Table 4: ユーザー数など)

先ずは2情報を軸に
それが慣れてきたら新情報を足し
それが慣れてきたら新情報を足し
DB 設計に慣れていきたい

英大研究員H英大研究員H
英大研究員H英大研究員H

上記の記事より


  • 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
英大研究員H英大研究員H

投資・株式情報を 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つの情報で特定