Ваш "товар" - это позиция заказа.
"My brother and I will each have a Guiness and his wife would like a gin-and-tonic."
В этом заказе три (ПРАВКА: элементы, но две) позиции.Чтобы идентифицировать их как часть одного и того же заказа [если вам нужно это сделать], вам понадобятся две таблицы:
the OrderHeader
(orderheaderid, orderdatetime, customerid)
и
the OrderDetail
(id, orderheaderid, drinkid, howmany, extendedprice, paymentamountapplied).
Если вам не нужноидентифицируя напитки как принадлежащие к одному и тому же заказу, вы можете отказаться от структуры с двумя столами, но тогда вы можете иметь только один вид напитка на заказ.
ORDER
orderid, orderdatetime, customerid, drinkid, howmany, extendedprice, paymentapplied.
Расширенная цена - это сколько * цена напитка ввремя заказа.Вы сохраняете это значение в своей таблице заказов, так что вы можете изменить цену напитка в таблице DRINKS, не затрагивая причитающуюся сумму вкладки (в случае, если срок действия вкладки превышает день - т.е. клиенты могут запускать ежемесячную или ежеквартальную вкладку).
HowMany может по умолчанию установить 1. Сумма, причитающаяся по позиции напитка, равна (extendedprice - paymentamountapplied).PaymentAmountApplied по умолчанию равно 0 (то есть по умолчанию запускается вкладка).
Если вам не нужно отслеживать тип заказанного напитка (то есть вы не хотите использовать свою базу данных, чтобы обнаружить, что по вечерам во вторник вы продаете гораздо больше джина-тоника, чем компании, дляпо какой-то причине):
ORDER
orderid, orderdatetime, customerid, ordertotal, paymentapplied.
Ваш бармен просто введет общую сумму заказа, рассчитанную за пределами вашей системы, без ссылки на таблицу DRINKS в базе данных - возможно, бармен посмотрит на классную доску настена.