0
私はスキーマを設計しようとしている(Postgresのではなく、罰金、他のSQLの)次の要件をサポートします。PostgreSQLの - キーと値のペアの正規化
- 各文書(表
documents
の行)を持っています一意のストリングID(id
フィールド)および他のいくつかのデータフィールド。 - 各ドキュメントには、0個以上のタグ(文字列のキーと値のペア)を付けることができます。その目的は、文字列のキーと値のペアを使用してドキュメントを並べ替えたりフィルタしたりできるシステムを構築することです。例えば。 『VALUE1『と 『キー1』値とのタグ値使用して出力をソート』KEY3を「私のタグを持っているすべての文書を表示する』
だから、DDLは次のようになります。(簡体字)
create table documents
(
id char(32) not null
constraint documents_pkey
primary key,
data varchar(2000),
created_at timestamp,
updated_at timestamp
)
create table document_tags
(
id serial not null
constraint document_tags_pkey
primary key,
document_id char(32) not null
constraint document_tags_documents_id_fk
references documents
on update cascade on delete cascade,
tag_key varchar(200) not null,
tag_value varchar(2000) not null
)
タグキー値を使用してフィルタリング/並べ替えを行うクエリを作成するにはどうすればよいですか?"key1" = "value1"タグを持つすべてのドキュメント(LIMIT/OFFSET付き) key3 "タグの値でソートされた" key2 "=" value2 "タグ
このクエリにはどのようなインデックスを追加しますか? –
最適なインデックスは 'document_tags(tag_key、tag_value、document_id)'です。 –