このツールの動作
JSON の標本が CREATE TABLE になります。
{ "id": 1, "firstName": "Ada", "score": 9.5, "address": { "city": "Paris" } }
CREATE TABLE `root` (
`id` BIGINT NOT NULL,
`first_name` VARCHAR(255) NOT NULL,
`score` DOUBLE NOT NULL,
`address` JSON NOT NULL
);
列名は snake_case で、バッククォートで囲みます。鍵に予約語やハイフンがあっても困りません。同じ名前になる二つの鍵は、混ぜずに番号を付けます。
値の丈に合う列
文字列は VARCHAR(255) になります。ただし、標本がそこに収まらないと示した場合は別です。
{ "bio": "…301 文字…" }
`bio` TEXT NOT NULL
MySQL は厳密モード——5.7 以降の既定——で、列より長い値をエラー 1406 で拒みます。ここで VARCHAR(255) を出せば、自分を生んだ文書を収められない表をお渡しすることになります。本物の欠陥で、この文章を書く過程で見つけ、直しました。
境目は標本の中で最も長い値から取っています。下限であって、約束ではありません。本番の文字列が貼ったものより長いなら、列を広げてください。
すべての行を、最初の一つだけでなく
[{ "a": 1 }, { "a": 2, "b": "x" }]
CREATE TABLE `root_item` (
`a` BIGINT NOT NULL,
`b` VARCHAR(255) NULL
);
以前、表は最初のオブジェクトだけから作られていました。だから、あなた自身の標本の二行目が挿入に失敗しました——Unknown column 'b' です。今は列がすべてのオブジェクトの和になり、一部に無い鍵は null 可になります。実際にそうだからです。
型についても同じです。ある行で 1、次の行で "x" になるキーは、先に現れたほうの型を取っていました。もう一方の値には入る列がありません。いまは JSON の列になり、両方を収めます。十行目で初めて現れた300文字の値も、一行目にあったときと同じように列を TEXT へ広げます。
作り出さないもの
- 主キーも索引も、エンジンや文字集合の指定もありません。 どれもあなたのデータとサーバについての判断であり、文書は何も語りません。
- 値があったところは
NOT NULL、nullと、一部の行に無い鍵はNULLです。 - オブジェクトと配列は
JSONの列になります。 関連表も外部キーもありません。標本は関係を見せられず、作り出せば推測が三つ重なります。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。