SQL

Как в одной записи таблицы хранить несколько полей одного типа (не фиксированное число)?

У меня есть БД. Предметная область - оптовые продажи магазина, а именно их учет. Есть таблица Товар, содержащая наименование позиции, уникальный код, стоимость и кол-во на складе; таблица Заказ, которая используется для хранения информации об оформленных заказах и еще пара таблиц. Я очень долго пытался найти ответ на вопрос: как можно сделать так, чтобы в одной записи таблицы Заказ можно было хранить несколько позиций приобретаемых продуктов? Может есть какие-то специальные типы данных на подобии массивов?
Это очень просто если знать теорию реляционных баз. Один заказ может содержать множество товаров, один товар может быть в множестве заказов. Связь многие-ко-многим. Разрешается таким образом - нужно 3 таблицы, таблица товары, таблица заказы, и связующая таблица товары-заказы, которая состоит из двух полей - id заказа и id товара.
Алексей Демиденков
Алексей Демиденков
40 393
Лучший ответ
Карелин Александр да, именно так и надо, просто автор смотрит на нормализацию до 3НФ, а его задача лежит в плоскости отношений между данными...
Некоторые базы поддерживают поля-массивы, но это крайне неудобно.
Если тебе что-то такое понадобилось, создай дополнительную таблицу с нужными тебе данными. Вообще, прежде чем лепить таблички кое-как, почитай что-нибудь умное про реляционную модель - получишь просветление мозга и полное исчезновение подобных вопросов.
Вадим Власов
Вадим Власов
93 777
Вадим Смагин Чтобы получить просветление, нужно иметь, то что просветлять! А то вон он уже удаляет мой ответ, "умник"!
Калмурат Маматов Jurijus Zaksas, моя БД составлена согласно реляционной модели, все таблицы в 3НФ. Я только не до конца понимаю как именно это можно реализовать.
если количество полей заранее неизвестно, то нужно создавать еще одну таблицу и там хранить список этих полей (групп полей)
Определенные основы удерживают степь-массивы, однако данное весьма некомфортно.
В случае если тебе то что-в таком случае подобное потребовалось, сотвори вспомогательную таблицу вместе с необходимыми тебе сведениями. В целом, в первую очередь нежели вылепливать таблички кое-равно как, без мала то что-нибудь разумное насчет реляционную форма - обретешь прозрение мозга а также абсолютное утрата аналогичных проблем.
Если указанные ответы вам не подходят, объясните зачем вам нужно в заказе хранит сразу несколько позиций?

Как вариант. Можно хранить заказы в двух таблицах
1 таблица
1) Код заказа,
2) Дата,
3) Описание

2 таблица
1) Код заказа из таблицы 1
2) Код товара
3) Количество