为每个商店设计多个价格的数据库结构

时间:2015-09-05 21:10:58

标签: java android sqlite google-maps

我的应用程序有一个简单的界面,当点击一个按钮时,它会显示一个带有5个标记的Google Map屏幕。单击这些标记后,会出现一个显示商店价格的弹出窗口,例如:

Food:  £1
Water: £2

我正在尝试使用我的应用程序实现数据库,因此我可以存储多个只有食物和水的价格,没有别的。例如 -

A铺有食物和水,价格从1英镑到10英镑不等,B铺也有食品和水,价格从1英镑到10英镑不等,就像商店A一样。

如何设计一个将商店A作为一行的表格,其中10个不同的价格作为列,另一行称为商店B,其中还包含10个不同的价格? 做以下事情是否有意义 -

Shop A | FoodPrice_1 | WaterPrice_1 | FoodPrice_2 | WaterPrice_2 | FoodPrice_3
Tesco  | 1.99        | 2.05         | 1.04        | 2.31         | 1.93

Shop B    | FoodPrice_1 | WaterPrice_1 | FoodPrice_2 | WaterPrice_2 | FoodPrice_3
Sainsburys| 1.99        | 2.05         | 1.04        | 2.31         | 1.93

是否可以遍历每一列并将价格显示给某个标记?

顺便说一下,这不一定是一个完美的设计,应用程序将不会发布。我想要做的主要是能够分别显示每个价格,因此不需要复杂的结构。

2 个答案:

答案 0 :(得分:0)

我建议你创建两个表:
Shop(#shop_id, shop_name);

Product(product_id, product_name, product_price, (ref) shop_id);
不要忘记将检查约束添加到product_name(check product_name in {'Food', 'Water'};) 现在,您可以在Product表中添加任意数量的行,这些行代表产品,价格以及它所属的商店。

答案 1 :(得分:0)

在您的示例中,我会假设该列的名称将是该产品的品牌?你不需要它。它根本不是模块化的。

您可能需要一个看起来像这样的表:

有2列的商店桌:

id | shop_name

包含4列的product_list表:

id | shop_id  | product_id | product_price

的产品表
id | product_name | other_attributes

甚至包含2列的Shop表:

id | shop_name

的产品表
id | product_name | product_price | shop_id

所以这一切都取决于你的需求。

在您的情况下,如果应用程序没有发展,您可能希望使用第二个选项,只要没有大量重复数据就不会有问题。

一般情况下,我不会选择第二个,因为完全相同的商店可能会销售与另一个相同的产品,唯一的区别是价格,因此您可能不希望有重复的product_name或属性(重量,尺寸,颜色) ,...),想象如果5商店出售完全相同的产品(我将添加额外的信息,使其看起来更明显)你的数据库将是这样的:

id | product_name | product_price | shop_id | product_weigth | product_flavor

id | Coca-Cola    | product_price | 1       | 2L             | Cherry
id | Coca-Cola    | product_price | 2       | 2L             | Cherry
id | Coca-Cola    | product_price | 3       | 2L             | Cherry
id | Coca-Cola    | product_price | 4       | 2L             | Cherry

但是使用解决方案之一

包含3列

的product_list表
id | shop_id  | product_id | product_price
1  | 1        | 1          | product_price
2  | 2        | 1          | product_price
3  | 3        | 1          | product_price

的产品表
id | product_name | Weight | Flavor
1  | Coca-Cola    | 2l     | Cherry