Как сохранить список данных (например, массив) в ячейке mysql?(но по-прежнему можно искать) - PullRequest
2 голосов
/ 03 марта 2012

Я новичок в mysql, так что я, вероятно, просто не знаю, как правильно настроить что-то вроде этого.

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

Но у меня есть массив "ингредиенты" и массив "сколько" в массиве.

По сути, я могу использовать ингредиент Array [0] howMuch [0], чтобы отобразить ингредиент и его количество.

Итак, я хочу сохранить оба этих массива в ячейкедля ряда еды.

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

(кроме того, количество ингредиентов не ограничено. Поэтому я не могу иметь столбец для каждого из них, поэтому я иду по маршруту массива)

edit: еще одна вещь, если это может помочь ... howMuch никогда не будет ничего, кроме int 0 1 2 3 4 5 6 7 8 9

Каков наилучший способ сделать это?

Я занимаюсь программированием на AS3 и использую AMFPHP для подключения к Mysql

Ответы [ 4 ]

2 голосов
/ 03 марта 2012

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

YOUR_FOOD_TABLE
food_id (PK)
description
...

FOOD_INGREDIENTS
food_id (FK)
ingredient_id (FK)
quantity

INGREDIENTS
ingredient_id (PK)
ingredient_name
1 голос
/ 03 марта 2012

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

1 голос
/ 03 марта 2012

Намного лучше иметь таблицу ингредиентов, содержащую столбец (food_id), который ссылается на идентификатор записи в таблице продуктов питания, а также столбцы для названия и количества ингредиента.

Затем вы можете выполнить поиск потаблица ингредиентов, и получите идентификаторы всех продуктов, которые содержат этот конкретный ингредиент

0 голосов
/ 03 марта 2012

использование mysql FIND_IN_SET

Пожалуйста, избегайте значений массива перед созданием этого запроса

$insert_qry = 'INSERT INTO `table` (`ingredients`,`howmuch`) VALUES ("'.implode(',',$ingredientsArray).'", "'.implode(',',$howMuch).'")';

$search_qry = 'SELECT * FROM `table` WHERE FIND_IN_SET("bread",`ingredients`);';

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

...