0

私は以下を保存するデータベースを設計しようとしています:

- Franchise Name (string)
- Employee Count (integer)
- Locations (zip-code)

私が抱えている問題は、データベースの潜在的なサイズ(すべての潜在的なフランチャイズと場所)と、特定のフランチャイズの郵便番号を同じセルに格納できるようにデータベースを設計する方法です。これは、「95432、12345、92534、68723」のようなセルを持ち、クエリを使用して郵便番号を追加または削除するためにクエリおよび変更できるセルを持つことは可能ですか?定期的に次のようなことができるようにしたいと思います。

SELECT franchiseName
FROM database
WHERE zipCode = "12345"

そして明らかに、その郵便番号に場所があるすべてのフランチャイズを表示します。郵便番号ごとに個別のタプルを作成したくありませんか?次のようなものではないでしょう:

Pizza Hut, 23, 95432
Pizza Hut, 12, 12345 
Pizza Hut, 07, 92534 
Pizza Hut, 15, 68723

重複するフランチャイズ名の潜在的な数のために悪いデザインと見なされますか?(マクドナルドだけを想像してみてください)

どんな助けでも大歓迎です

4

3 に答える 3

1

非正規化された設計には、その名前を保持する企業と関連するフランチャイズがあります。

これにより、すべてのフランチャイズに共通の企業情報(本社情報など)を保存することもできます。

于 2013-01-31T16:17:32.887 に答える
1

その情報を2つのテーブルに分割する必要があります。

franchise(id,name, employee_count)
zipcode(franchise_id,zipcode)

「場所」に郵便番号以外の情報が含まれている場合は、すべての場所を別のテーブルに配置し、フランチャイズと場所の間にマッピングテーブルを用意する必要があります。

于 2013-01-31T16:17:40.083 に答える
1

基本的に、あなたは多対多の関係を定義しています。この状況での一般的な方法は、すべての場所を含むテーブルとマッピングテーブルを操作することです。このマッピングテーブルには、フランチャイズのIDと場所の1つが含まれています。結合を使用すると、必要なすべての情報を取得でき、データの重複はありません。

于 2013-01-31T16:18:31.230 に答える