0

私は現在、ユーザーが追加する連絡先にカスタム フィールドを追加できるようにするシステムに取り組んでいます。

そのような能力を追加するための最良かつ最も効率的なアプローチは何だろうか?

今私が考えていたのは、ユーザーごとに 1 つのテーブル (「メイン」の連絡先テーブルへの外部キーを持つ) を作成し、ユーザーが追加するカスタム フィールドごとに列を追加することでした (100 を超えるとは思わないため)。 - データベース シャードごとに 200 ユーザー [このシステムでは、すべてのユーザーが互いのコンテンツを見ることはないため、シャーディングは簡単です])、これがこのような問題の適切な解決策であると 100% 確信しているわけではありません。

4

3 に答える 3

2

おそらく、ユーザーへの参照とフィールド名と値を格納するために 1 つの別個のテーブルを作成することを試みることができます。このようにして、多くのカスタム フィールドを作成できます。

于 2012-08-14T15:52:54.413 に答える
1

Boyce-Coddを使用する場合は、情報を分離してテーブルに保存します。外部キーを持つすべてのユーザーに対して1つのテーブルを意味します。

于 2012-08-14T15:56:53.677 に答える
0

ユーザーごとに1つのテーブルを使用すると、情報が繰り返される可能性のある数百以上のテーブルが作成されます。

ユーザーのIDと必要な固定情報を格納するUSERSという名前のテーブルが1つ必要です。次に、ユーザーが作成する可能性のある連絡先のタイプを格納するCONTACTテーブルと、ユーザーの一意のIDを作成された連絡先のIDと一致させる1つの一致するテーブルUSER_CONTACTを作成できます。

これにより、各ユーザーが作成した連絡先の数、さらに作成した連絡先など、保存されているすべての情報に関する高度なデータマイニングを行うことができます。

于 2012-08-14T15:56:48.890 に答える