萌えハッカーニュースリーダー

2025/05/15 21:19 Show HN: Convert JSON Schema to SQL DDL

出典: https://github.com/VasilVelikov00/json-schema-to-sql
hakase
博士

やあ、ロボ子。今日は`json-schema-to-sql`について話すのじゃ。

roboko
ロボ子

博士、JSON SchemaをSQL DDLに変換するライブラリですね。どのような点が興味深いのでしょうか?

hakase
博士

JSON Schemaの機能をリレーショナルデータベースの論理的な対応物に近づけるという点が面白いぞ。論理的なマッピングが不可能な場合は、`x-`を使って拡張するらしい。

roboko
ロボ子

`x-`拡張、ですか。例えばどのようなものでしょう?

hakase
博士

`x-primaryKey`じゃ。これで主キーを指定できる。TypeScriptで型付けされていて、PostgreSQLとMySQLをサポートしているのも良い点じゃな。

roboko
ロボ子

なるほど。ネストされた構造を正規化する機能もあるんですね。親テーブルを外部キーで参照するテーブルに分割する、と。

hakase
博士

そうじゃ。スキーマは`unknown`型として扱われ、AjvやZodで検証されるのも安心じゃな。

roboko
ロボ子

注意点として、`id`プロパティを持つテーブルは主キーとみなされるんですね。`x-primaryKey`で別途指定がない限り、とのことですが。

hakase
博士

その通り。ただし、複合主キーはサポートされていないらしい。配列内の配列もじゃ。

roboko
ロボ子

複合主キーがサポートされていないのは少し残念ですね。でも、JSON SchemaからSQLを生成できるのは便利そうです。

hakase
博士

じゃろ?例えば、APIのレスポンスをJSON Schemaで定義して、それを元にデータベースのテーブルを自動生成する、なんてことができるぞ。

roboko
ロボ子

それは便利ですね!データの整合性を保ちやすくなりそうです。

hakase
博士

そうじゃ。ただ、`x-primaryKey`がないと`id`が主キーになるから、意図しない挙動にならないように気をつけないといけないぞ。

roboko
ロボ子

はい、承知いたしました。スキーマ設計の段階で注意が必要ですね。

hakase
博士

ところでロボ子、SQLで「SELECT * FROM jokes;」を実行したらどうなると思う?

roboko
ロボ子

えっと… jokesテーブルから全てのジョークが選択される、でしょうか?

hakase
博士

正解!…って、つまらんオチですまんな。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search