2015-09-05 2 views
1

Мое приложение имеет простой интерфейс, который при нажатии кнопки отображает экран карты Google с 5 маркерами. Когда эти маркера щелкнули, появляется всплывающее окно, в котором отображается цены в магазине, например:Проектирование структуры базы данных по нескольким ценам за магазин

Food: £1 
Water: £2 

Я пытаюсь реализовать базу данных с моим приложением, так что я могу хранить несколько цен только продукты питания и воду, ничего больше. Например, -

В магазине A есть еда и вода, цены на которые могут варьироваться от 1 до 10 фунтов стерлингов, а в магазине B также есть еда и вода, цены на которые могут варьироваться от 1 до 10 фунтов стерлингов, таких как магазин A.

Как создать таблицу, в которой есть магазин A в виде строки, с 10 различными ценами в виде столбцов, а другая строка называется Shop 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 

Можно ли перебирать каждый столбец и отображать цены на определенный маркер?

Это, возможно, не совсем идеальный дизайн, приложение не будет опубликовано. Главное, что я хочу сделать, - это возможность отображать каждую цену отдельно, поэтому сложная структура не нужна.

+0

Вы, кажется, в обратном направлении. Если у вас десять разных цен, у вас должно быть десять разных _rows_ в таблице, а не десять столбцов. –

+0

@ ThomasPadron-McCarthy Как это происходит назад? Я думал о том, как это у меня есть, поэтому я мог просто сделать запрос, например: «SELECT FoodPrice_1, WaterPrice_1 FROM Shops WHERE Shop_Name =« Shop A'' – funky

ответ

0

В вашем примере я бы предположил, что название столбца будет маркой продукта? Вы этого не хотите. Это не модуляция вообще.

Вы могли бы хотеть таблицы, которые выглядят, как это вместо:

Магазин стол с 2-мя колонками:

id | shop_name 

Таблица product_list с 4-мя колонками:

id | shop_id | product_id | product_price 

за столом продукта с

id | product_name | other_attributes 

Или даже магазин стол с 2-мя колонками:

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 

Но с раствором, который вы бы имеют

Таблица товаров product_list с 3 колонками

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 
+0

Спасибо за ответ! Нет в моем примере, имя столбца будет где 'Shop A', а цена продукта - там, где говорится« FoodPrice_1 ». Так что это будет' Shop A | 1.99' например. Это нормально, если оба магазина имеют одинаковую цену за тот же товар. Причина, по которой я думал, что мой путь был бы в порядке, заключался в том, что я мог легко запросить 'Shop A' за каждую из цен – funky

+0

, может быть, я выразил себя плохо, но я имею в виду, откуда вы знаете, какой продукт является waterprice_1? Если ваш пример не таков: 'Магазин A | Water_type1_price | Water_type2_Price ', я не понимаю, как вы можете сказать разницу между water1 и water2.The столкновение должно представлять разницу между двумя нет? TBH Я действительно не получил ваш вопрос больше :) – jayD

+0

Да, извините, оглядываясь назад на мой вопрос сейчас, не слишком ясно, что я пытался объяснить. Заголовки таблицы будут 'Shop A | WaterPrice_1 | FoodPrice_1 | 'И под« WaterPrice_1 »будет цена, я обновлю свой оригинальный вопрос, чтобы узнать, станет ли он более понятным. – funky

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, которая представляет продукт, его цену и то, что принадлежит магазину.