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

您应该将该信息拆分为两个表:

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

如果“位置”包含的信息不仅仅是邮政编码,您应该将所有位置放在一个单独的表中,并在特许经营和位置之间建立一个映射表。

于 2013-01-31T16:17:40.083 回答
1

基本上,您正在定义多对多关系。这种情况下的常见做法是使用包含所有位置的表和映射表。此映射表包含特许经营权的 ID 和位置之一。使用联接,您可以获得所需的所有信息,并且不会出现数据重复。

于 2013-01-31T16:18:31.230 回答