これら 2 つのテーブル デザインのどちらかを選択しようとしています。パフォーマンスが優先されます (ジョイントを使用したクエリ)。
複数のテーブル : 各アイテム (またはキー) には独自のテーブルがあります
CREATE TABLE users_languages (
"user_id" bigint not null,
"language" integer not null,
primary key ("user_id", "language"),
foreign key ("user_id") references users ("user_id") on delete cascade
);
1 つの KVP テーブル: すべてのアイテム/キーを含む
CREATE TABLE users_kvp (
"user_id" bigint not null,
"key" varchar not null, -- could be "language" or other
"value" integer not null,
primary key ("user_id", "key", "value"),
foreign key ("user_id") references users ("user_id") on delete cascade
);
最後の操作はほとんどの操作で遅くなると思いますが、そうですか? はいの場合、いつ、どのくらいですか?