mirror of
https://gitlab.cern.ch/wotsubo/PSBoardDataBase.git
synced 2025-06-08 14:05:40 +09:00
50 lines
4.6 KiB
Markdown
50 lines
4.6 KiB
Markdown
# データベースについて
|
|
|
|
このリポジトリは、PS BoardのQAQC結果を主に管理するデータベースを扱ってる。
|
|
|
|
```@contents
|
|
Pages = ["index.md"]
|
|
Depth = 4
|
|
```
|
|
|
|
!!! info
|
|
- 簡易結果閲覧アプリの使い方は[Simple result viewer](./howtouse-simpleviewer.md)にあります。
|
|
- データベース本体の使い方に関するチュートリアルは[Tutorial](./tutorial.md)にあります。
|
|
|
|
## データベースの特徴
|
|
|
|
現時点(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)で実装されており[^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個ほどしか使用しない)、気軽に使うことができる。
|
|
|
|
## アクセス方法
|
|
データベースはファイルとして存在するので、そのファイルにアクセスできればよい。[^2][^3]
|
|
ファイルは _TODO_ で手に入る。
|
|
|
|
データベースを読み書きするためにはライブラリが必要で、問い合わせは[SQL](https://ja.wikipedia.org/wiki/SQL)によって行うが、ラッパーを使うこともできる。
|
|
以下に使いやすいであろうライブラリ/パッケージを列挙する。[^4]
|
|
|
|
- [sqlite3(コマンドラインプログラム)](https://www.sqlite.org/cli.html): 公式の提供するCLI。どこでも動く。CSVでのエクスポートもできる。
|
|
- [DB Browser for SQLite](https://sqlitebrowser.org): クロスプラットフォームなデスクトップアプリケーション。最も簡単。
|
|
- [Python sqlite3](https://docs.python.org/ja/3/library/sqlite3.html): Pythonの標準ライブラリ。すなわち(C)Pythonが入ってるならたいてい入っている。
|
|
- [SQLite Viewer Web App](https://sqliteviewer.app/), [beta版](https://beta.sqliteviewer.app/psboard_qaqc.db/table/qaqc_runs): ブラウザで動く。最も手軽。
|
|
- [SQLite.jl](https://github.com/JuliaDatabases/SQLite.jl/tree/master): Juliaのパッケージ。[Tables.jl](https://github.com/JuliaData/Tables.jl)準拠なため、[DataFrame](https://github.com/JuliaData/DataFrames.jl)やCSVに/から変換できる。 _この実装で用いられている。_
|
|
- [SQLite Studio](https://sqlitestudio.pl): デスクトップアプリケーション。
|
|
- [ROOT TSQLFile Class](https://root.cern.ch/doc/master/classTSQLFile.html): ROOTのTFile派生クラス。[チュートリアル](https://root.cern.ch/doc/master/group__tutorial__sql.html)
|
|
|
|
他にも[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))でもアクセスできる。
|
|
|
|
[^2]: 大抵の関係データベース(たとえばPostgres)はサーバーでホストし、TCPでアクセスする
|
|
[^3]: [sqlsync](https://github.com/orbitinghail/sqlsync)によるオンラインアクセスやRESTサーバーなどによるアクセスの案もある
|
|
[^4]: このようなプログラムはいくらでもある
|
|
|
|
## データベースの構造
|
|

|
|
|
|
四角がテーブル、その中にコラム、線でつながっているのが*FOREIGN KEY*制約を表している。
|
|
|
|
データベース作成SQLは`src/sql/create_table.sql`にある。
|
|
|