Варианты 2 являются предпочтительными.
"item_id" может быть идентификатором таблицы, в которой хранятся все элементы (таблица Store) и где доступно полное описание и другая информация для этого элемента. Но я бы добавил ценник в эту корзину для каждого товара, и часто имеет смысл добавить к этой корзине также хэш сессии пользователя id / md5. Таким образом, строка SQL-запроса для PHP для создания такой таблицы может выглядеть примерно так:
$sql="CREATE TABLE ".$table_prefix."Basket (
id int(11) NOT NULL auto_increment,
sid varchar(50) default NULL,
item_id int(10) default NULL,
quantity int(10) default 1,
price varchar(10) default NULL,
PRIMARY KEY(id)
) $collate_charset;";
$ collate_charset: что-то вроде $collate_charset="DEFAULT CHARACTER SET utf8";
$ table_prefix: часто полезно иметь префикс для таких таблиц, как $table_prefix="myshop_";
С такой таблицей вы можете воспользоваться функциями SQL, такими как «Сумма», чтобы получить быстрый промежуточный итог для пользователя или всех пользователей без большого количества кода («Выберите сумму (цена * количество) ГДЕ sid
=« 1234 »»).
Если эта корзина также предназначена для "гостей", вам нужна другая таблица, в которой хранятся идентификатор сессии и дата создания, чтобы вы могли регулярно очищать корзину от неиспользуемых записей.