Open9

[SQL] いろんなやつのまとめ

あざらしあざらし

SQLite

  • 単独のアプリケーションとして動作させることが可能
  • 非常にこんぱくと!
  • アプリと一緒に配布することも可能
  • ユーザー/パスワードという概念はない
  • データソースは /data/data/com.hogehoge/files/ に保存される

MAUI での SQLite

Android での SQLite.NET の使用 - Xamarin

ORM をつかってかんたんにかける!

NuGet

  • Microsoft.Data.Sqlite
  • sqlite-net-pcl
  • SQLitePCLRaw.provider.dynamic_cdecl

書き方サンプル

.NET MAUIでsqliteを使う - Qiita

1つのテーブルのみであれば結構かんたんに設定できた!らぶORM
ただし JSON ができないので注意。泣ける

Room

SQLiteのORMみたいな立ち位置。仲介してくれる人
Googleが、AndroidでSQLiteを使うときはRoom推奨している

Truncateはない

MySQL でいうとらんけーとがSQLiteにはない
テーブルのデータをすべて削除するにはDeleteする必要がある
(そもそもとらんけーと自体がMySQLの方言みたいなもの…という見方もある)

[SQLite] 複数テーブルの Update について

例えば MySQL ではこんなかんじのことを SQLite で実現したい

update table_1 t1, table_2 t2 set
    t1.hogehoge = '1'
    , t2.fugafuga = '2'
where t1.hoge_id = t2.hoge_id
and t1.hoge_id = 1;

結論:そんなものはない(多分)
見つけることができなかった;;

ので、おとなしく

  1. トランザクション開始
  2. 1個目のUpdate文を発火
  3. 2個目のUpdate文を発火
  4. こみっと

で対応する

あざらしあざらし

正規化

データベース上で扱うデータの重複を削除し、データの更新時に発生する異常を取り除くこと

正規化手順①

  • 繰り返し項目を取り除く
  • 2つ以上のレコードが保存されているドメインを取り除く

正規化手順②

  • テーブルの各候補キーに従属する部分関数従属性が整理された状態にする
    • 候補キー:「レコードを一意に特定するための属性(=カラム)」または「レコードを一意に特定するための属性の組み合わせ」

正規化手順③

  • 候補キー以外の列に関数従属している列が整理された状態にする

【データベース】正規化とは?わかりやすく3分で解説

あざらしあざらし

マイグレーション

データベースを削除してから作り直すと、DB に保存されている情報が全て削除されてしまう
⇒DB に保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行う DB マイグレーションをすればよい

あざらしあざらし

データベースコンテキスト

コンテキストとは 1 つ以上のデータ処理アプリケーションで実行する操作またはシミュレーションに必要なリソースの集合
コンテキストを使用すると異なるデータベースやスキーマ上で同一ジョブを実行することができる

あざらしあざらし

クエリビルダ

SQL のクエリ文を生成するために用意された一連のメソッド