Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Json型の使い方

tsuda.a
September 04, 2017

 Json型の使い方

JSON型と正規形の両立について検討してみました。

tsuda.a

September 04, 2017
Tweet

More Decks by tsuda.a

Other Decks in Programming

Transcript

  1. 正規化の目的を確認 • 正規形とは、データベースにおいて正しいデータを破壊しないこと、または間違ったデー タを作らないことを保証するための試みである。 そうしたエラーを回避するための方法の 1つは、データベースにおいて1つの事実を1つ の場所にだけ格納することだ。 • というのも、もし1つの事実が2つの場所に現れるとしたら、更新の際に正しく同期を取 らないと不整合が起きることになる

    • 2つの腕時計をしている人間は、どちらが正しい時刻を指しているのかという不安に常 につきまとわれる。だから我々は、多くの時計を1つのマスタとなる時計に同期させ、1 つのデータソースから派生するビューとして扱うのだ。 「プログラマのためのSQL 第4版 (翔泳社刊)」 の 9章「正規化」より引用
  2. CHAR や VARCHAR, あるいは TEXT • 非スカラ値 (配列値相当) なのに、スカラ値 (単一値)

    扱い。 • 文字列は最近の言語では string ですが、C では char[] ですし、 Haskell とかも文字の集合 (list) として扱ったりしますね?
  3. あるいは LOB (Large Object) • ファイルや画像。これも Byte 配列。 • SQL

    標準としては、配列型が認められた SQL99 からの型だが、 配列型や JSON 型のように、正規化の問題として語られることはない。
  4. いやまあ、できますよ?確かに。 • select ENAME from EMP where substr(ENAME,2,1) = 'A';

    • select ENAME from EMP where regexp_like(ENAME, 'L.*K', 'i') ; (↑oracle の場合) でも、こんなことすると遅いし! ポスグレには 「関数インデックス」 という機能があるから速くできるよ!