1

イベント場所の2つのエンティティがあります。関係は次のとおりです。

1つのイベント1つの場所を持つことができます。 1場所には多くのイベントを含めることができます。

基本的にはイベントを保存したいです。また、各イベントは特定の場所でホストされます。私が特定の場所を言うとき、私は意味します:

Street, Number, City, Zip Code, State, Country

私は基本的にデザインの質問があります、それは私がいくつかの助けが欲しいです:

1-今、私は次のことを考えています:

イベントテーブルにはlocation_id、ロケーションテーブルの特定のロケーション行を指すがあります。これで何が起こるかというと、次のようになります。各行に多くの繰り返し値があります。たとえば、サンフランシスコの356 Matilda Streetでイベントが発生し、サンフランシスコの890MatildaStreetで別イベントが発生しているとします。MatildaStreetとSanFranciscoの値は、ロケーションテーブルに何度も複製されます。これを正規化するためにどのように再設計できますか?

したがって、基本的には、MySQLのようなリレーショナルデータベースの観点からこの質問を解決するための良いアプローチを聞きたいと思います。

4

4 に答える 4

1

テーブル内の各場所は、locationsそのによって一意に識別できる必要がありますPRIMARY KEY。次に、テーブル内のレコードは、eventsその値を含む列を使用して、関連付けられた場所を参照しますPRIMARY KEY

たとえば、ロケーションテーブルには次のものが含まれる場合があります。

location_id | ストリート| 番号| 市| 郵便番号| 状態| 国
------------ + ---------------- + -------- + ----------- ---- + ---------- + ------- + ---------
          1 | マチルダストリート| 356 | サンフランシスコ| 12345 | CA | アメリカ合衆国
          2 | マチルダストリート| 890 | サンフランシスコ| 12345 | CA | アメリカ合衆国

次に、eventsテーブルに次のものが含まれる場合があります。

event_id | location_id | 日付| 説明
--------- + ------------- + ------------ + ------------- ---
       1 | 1 | 2012-04-28 | 誕生日会
       2 | 1 | 2012-04-29 | 二日酔いパーティー
       3 | 2 | 2012-04-29 | 葬儀
       4 | 1 | 2012-05-01 | メーデー!

この例でlocation_idは、PRIMARY KEYlocationsテーブル内にあり、FOREIGN KEYeventsテーブル内にあります。

于 2012-04-28T17:05:26.413 に答える
1

厳密に正規化されたデータベースが必要な場合は、通りの名前、都市、州などのテーブルを作成できます。location通り、都市、州のユニークな組み合わせを保持する追加のテーブルがある場合もあります。以前は不明な場所でイベントが発生するたびに、このテーブルに行を追加します。次に、各イベントはlocationテーブルの適切な行を参照します。

ただし、実際には、位置データをeventsテーブル内に直接格納し、余分なメモリ使用量を許容する方がよい場合もあります。速度とメモリ使用の間には常にトレードオフがあります。

別の考慮事項:通りの名前が変更された場合はどうなりますか?古いイベントを古い名前または新しい名前に関連付けますか?

于 2012-04-28T17:06:10.310 に答える
0

Locationsテーブルには、1 = Matilda Street、2 = Market Streetなどの一意のIDが必要です。重複しない可能性のある場所ごとに1つのレコードが必要です。次に、Eventsテーブルには、これらのIDの1つを使用する場所IDが必要です。イベント、重複なし。

その後、このように参加できます。

SELECT events.event_name, locations.location_name
FROM events
JOIN locations on locations.location_id = events.location_id
于 2012-04-28T17:07:11.227 に答える
0

それぞれが一意の場所であるため、重複はごく普通のことです。そしてそれを超えて、サンフランシスコの場所をフィルタリングしようとするときにあなたが考えるデザインは非常に便利です。

于 2012-04-28T17:09:24.757 に答える