私のリレーショナルデータベースでは、ユーザーに関する詳細情報(firstName
、、email
...)を保存したいと考えています。つまり、私はUsers
テーブルを持っていることを意味します。リレーショナルデータベースの動的値と複数値
これらのフィールドは将来変更できます(追加/削除することができます)。一部のユーザーにはemail
がない場合があります。
このデータは、何らかの形で送信されたときにユーザーから収集されます。
たとえば、ユーザーが最初に入力したフォーム(「マイク」、「マイク」、「マイケル」、「マイケル」など)を何回保存できるようにしたいのですか?彼らはそのようにそれを入力しました。
オプション:私のUsers
テーブルで
- は、例えば
{"Mike": 5, "Michael": 3}
(各文字列のエンコードされたJSONオブジェクトを格納し、複数のカラム/フィールドを持っていることは明白な理由のために悪いです - 一にして、別のテーブルを追加します。 -many各レコードには外部キーとして
userId
が格納され、タイプはfirstName
です。これは、フィールドごとにテーブルを作成(または削除)することを意味するため、不適切です。 - 可能なすべてのフィールド/を保存します外部キーとしてと、そのユーザーに入力されたデータ。
私は、リレーショナルデータベースでそれを達成するためのよりよい方法があるのか、それとも非リレーショナルデータベースに切り替えるための転換点なのかを理解しようとしています。
なぜそれが必要なのか、どのように使用するのかによって異なります。また、ほとんどのSQLデータベースはjsonのサポートをいくつか持っているので、#1の*悪い理由*は私にはあまり明らかではありません。 –