というアプリケーションがあるとReportGenerator
します。ユーザーは、フィールドの数とフィールドの値を入力できます。たとえば、 を持つことができるjobApplicationReport
ので、次のようにいくつかのフィールドを定義できます: jobTitle
, expectedSalary
.
したがって、DB には次のようなものがあります: テーブル名:UserReport
とこれらのフィールド: id
、title
、fields
。
そして、データは次のようになります:
1
, jobApplicationReport
,jobTitle,expectedSalary
また、UserReportData
フィールドがあり、id
、userReportId
、value
データは次のようになります:
1
、1
、jobTitle:programmer,expectedSalary:200K
2
、1
、jobTitle:projectManager,expectedSalary:400K
したがって、私の質問は、SQL データベースを十分に活用できず、インデックスを使用してパフォーマンスを向上させることができないため、 のvalue
フィールドは非常にばかげているように見えるということです。UserReportData
ユーザーが新しいレポートを追加するときに、もう1つのテーブルを作成できるという別の解決策があると思います。この例では、抽象UserReportData
テーブルはなく、代わりにUserReportData_jobApplicationReport
テーブルがあります。そして、私が望むだけのフィールドを持っています。
しかし、1 人のユーザーが多くのレポートを持っている可能性があるため、私のデータベースにはたくさんのテーブルがあります。この問題に対処するための解決策はありますか? ありがとう。