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

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

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

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

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

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

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

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

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

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

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

4 ответа

Решение

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

YOUR_FOOD_TABLE
food_id (PK)
description
...

FOOD_INGREDIENTS
food_id (FK)
ingredient_id (FK)
quantity

INGREDIENTS
ingredient_id (PK)
ingredient_name

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

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

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

Использование mysqlFIND_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

Другие вопросы по тегам