3

これが初心者の質問のように思えるかもしれませんが (おそらくそうです)、申し訳ありませんが、リレーショナル データベースの概念を紹介しただけで、この概念に苦労しています。

「ユーザー」のさまざまな特性を表す約 75 のフィールドを持つデータベースがあります。これらのフィールドの 1 つは、ユーザーが行った場所を表します。データを簡単に取得して後で使用できるようにするには、データを保存する最善の方法を考えています (つまり、Google マップでルートを追跡し、ユーザーが同じ場所を共有した場合など)

問題は、合計で 5 つの場所を持つユーザーもいれば、100 をはるかに超えるユーザーもいるということです。

これらの場所を、各ユーザーの一意の ID を使用して名前を付けたテキスト ファイル (各行に 1 つの場所、または csv) に保存するのが最善ですか? または、一意のIDに接続されている個々のユーザーごとに個別のテーブルを作成するには(私にはやり過ぎのように思えます)? または、すべての場所を元のテーブルの 1 つのフィールドに直接格納する方法はありますか?

コンセプトが欠けているか、理解に役立つチュートリアルへのリンクがあることを願っています。

それが役立つ場合は、場所が順番に保存され、保存されると変更されないと想定できます。また、これらの場所は静的です (更新できないため、これ以上場所を追加する必要はありません)。

私を助けてくれてありがとう。それは有り難いです!

4

3 に答える 3

3

ユーザーの位置データを別のテーブルに保存します。ロケーション テーブルは、共通の によってユーザー テーブルにリンクされますuser_id

特定のユーザーの複数の場所を 1 つのテーブルに保持することはお勧めできません。非正規化されたデータになってしまいます。

あなたは以下を読みたいと思うかもしれません:

于 2012-10-10T01:51:29.133 に答える
0

リレーショナル データベースでは、マッピング テーブルを使用します。したがって、user、location、および userlocation テーブルが作成されます (user は予約語であるため、別の名前を使用することをお勧めします)。これにより、多対多の関係を持つことができます。つまり、多くのユーザーが多くの場所を訪問できます。ルートを場所の順序付けられたコレクションとしてモデル化したい場合は、さらに作業を行う必要があります。このサイトは例を示しています

于 2012-10-10T01:55:10.020 に答える
0

最も一般的な方法は、別のテーブルを用意することです。

USER_LOCATION
+------------+------------------+
|  USER_ID   |   LOCATION_ID    |
+------------+------------------+
|            |                  |

ユーザー 3 に 5 つのロケーションがある場合、user_id 3 を含む 5 つの行があります。

ただし、場所の順序が重要であると言う場合は、ユーザー内の場所の順序を指定する追加のフィールドを使用できます。

個別のテーブル アプローチは、正規化と呼ばれるものです。

たとえば、場所リストを場所 ID のカンマ区切りの文字列として保存する場合、順序を維持するのは簡単ですが、データベースが「場所 x にいたユーザーは?」という質問にすばやく答えることができなくなります。 . あなたのデータは、私たちがdenormalizedと呼んでいるものです。

もちろんオプションはありますが、リレーショナル データベースはテーブルの結合に非常に優れており、やり過ぎではありません。あなたが言及したような注文要件がある場合、それらは少しおかしく見えます。しかし、人々は常にそれらを使用しています。

于 2012-10-10T01:55:34.457 に答える