update: doc(add about why choose sqlite & alt for db structure)

This commit is contained in:
Wataru Otsubo 2024-09-14 18:28:30 +09:00
parent 367ccf75fc
commit 4f88659288

View file

@ -12,14 +12,16 @@ Depth = 4
現時点(2024-09-13)でQAQC試験は[Google Sheetsで作成したデータベース](https://docs.google.com/spreadsheets/d/128qOseOy4QDotehYe4Wf2jj88tnwiXGVdR3NHrjcDYU/edit)でデータが管理されているが、主にデータを統合して参照するときに手作業が多く必要となり、エラーが発生する問題があった。
そこで[リレーショナルデータベース](https://ja.wikipedia.org/wiki/関係データベース)の形式にすることでより体系的にデータを扱えるようにしたのがこのリポジトリである。
データベースは[SQLite](https://www.sqlite.org/index.html)で実装されており、軽量かつ様々な手段によるアクセスが可能となっている。
データベースは[SQLite](https://www.sqlite.org/index.html)で実装されており[^1]、軽量かつ様々な手段によるアクセスが可能となっている。
[^1]: Why SQLite?: (クライアント・サーバーの形式ではなく)Cライブラリであるという点でシンプルでありながら、れっきとしたRDBMSであり、[非常に多くの場所で使われている](https://www.sqlite.org/mostdeployed.html)(例えばブラウザの履歴やブックマーク管理)。依存も少なく([SQLite is a Self Contained System](https://www.sqlite.org/selfcontained.html)にあるが、C stdlibのうち10個ほどしか使用しない)、気軽に使うことができる。
## アクセス方法
データベースはファイルとして存在するので、そのファイルにアクセスできればよい。[^1][^2]
データベースはファイルとして存在するので、そのファイルにアクセスできればよい。[^2][^3]
ファイルは _TODO_ で手に入る。
データベースを読み書きするためにはライブラリが必要で、問い合わせは[SQL](https://ja.wikipedia.org/wiki/SQL)によって行うが、ラッパーを使うこともできる。
以下に使いやすいであろうライブラリ/パッケージを列挙する。[^3]
以下に使いやすいであろうライブラリ/パッケージを列挙する。[^4]
- [sqlite3(コマンドラインプログラム)](https://www.sqlite.org/cli.html): 公式の提供するCLI。どこでも動く。CSVでのエクスポートもできる。
- [DB Browser for SQLite](https://sqlitebrowser.org): クロスプラットフォームなデスクトップアプリケーション。最も簡単。
@ -31,12 +33,12 @@ Depth = 4
他にも[diesel](https://diesel.rs)や[SQLAlchemy](https://www.sqlalchemy.org)のようなORM、C/C++, tcl(いずれも[公式のチュートリアル](https://sqlite.org/quickstart.html)に載っている)、[LuaSQLite3](http://lua.sqlite.org/index.cgi/index)、[ODBCドライバ](http://www.ch-werner.de/sqliteodbc/)とODBCでアクセスできるソフト([LibreOffice Base](https://www.libreoffice.org/DISCOVER/BASE/)や[Microsoft Access](https://support.microsoft.com/ja-jp/topic/odbc-データ-ソースを管理する-b19f856b-5b9b-48c9-8b93-07484bfab5a7))でもアクセスできる。
[^1]: 大抵の関係データベース(たとえばPostgres)はサーバーでホストし、TCPでアクセスする
[^2]: [sqlsync](https://github.com/orbitinghail/sqlsync)によるオンラインアクセスやRESTサーバーなどによるアクセスの案もある
[^3]: このようなプログラムはいくらでもある
[^2]: 大抵の関係データベース(たとえばPostgres)はサーバーでホストし、TCPでアクセスする
[^3]: [sqlsync](https://github.com/orbitinghail/sqlsync)によるオンラインアクセスやRESTサーバーなどによるアクセスの案もある
[^4]: このようなプログラムはいくらでもある
## データベースの構造
![](./assets/sqlite-db.svg)
![db structure](./assets/sqlite-db.svg)
四角がテーブル、その中にコラム、線でつながっているのが*FOREIGN KEY*制約を表している。