Связывание некоторых таблиц

  • Автор темы Kukhtenko
  • 133
  • Обновлено
  • 13, May 2024
  • #1
У меня есть три таблицы: Продукт --------- Ключ идентификатора продукта изображение Описание Заказать товар ------------ Ключ идентификатора заказа Идентификатор продукта fkey Количество

Сохраненные заказы (запись купленных транзакций) --------------- Ключ SavedOrderID Имя Дата Идентификатор продукта fkey Количество Количество позиции заказа уменьшается при оформлении заказа.

Если весь товар куплен, запись о товаре заказа удаляется.

Мой вопрос:

1. Ссылка и столбцы в трех таблицах выглядят нормально?

2. Должна ли «Сохраненные заказы» быть отдельной базой данных?

3. Если существует база данных, в которой таблица, например «Клиенты», может ссылаться на более чем один столбец, что делать?

Благодаря тонну,

Джошуа

Kukhtenko


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Ну, я программировал на C++, и мне нужно было получить некоторый опыт самостоятельно, поэтому я выбрал этот проект.

Я использую PHP для серверной части.

Суть в том, чтобы трудоустроиться, начиная со стажировки.

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

В начале девяностых я немного изучал SQL, и что касается изучения основ, то на объединения у меня ушло всего час.

Однако SQLFiddle был реальным и новым примером.

Он также имеет несколько объединений.

Скоро посмотрю еще раз, был очень занят.

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

d0nc0v


Рег
26 Feb, 2016

Тем
0

Постов
2

Баллов
2
  • 21, May 2024
  • #3
Если вы прочитаете запрос, который я просил указать все позиции заказа, их заказы и имена клиентов.

Поскольку компания Acme заказала два разных товара, они появляются в списке один раз, но с одним и тем же номером заказа.

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

Если это просто демонстрация нормализации данных, сохранения и извлечения данных, то нам не нужно идти дальше.

так подробно.
 

temaprikol


Рег
29 Jan, 2014

Тем
0

Постов
3

Баллов
3
  • 29, May 2024
  • #4
Зачем вам это удалять? Если вы представляете себе квитанцию/квитанцию из магазина, на которой много товаров, это и есть ваш заказ.

Он начинается со списка вещей, которые вы хотите купить, но не оплатили, и как только вы заплатите, статус квитанции изменится с неоплаченного на оплаченный.

В бизнесе заказ может даже начаться как «новый», измениться на «оплаченный», перейти к «ожидающему выполнения», «ожидающему отправки» и, наконец, «завершенному». У каждой компании будет немного другой процесс.

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

Сотрудники склада должны иметь возможность видеть любые заказы, ожидающие «выполнения» или, возможно, «отложенные заказы» на запасы, которые им необходимо выкупить.

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

Если у вашей компании большие проблемы с отложенными заказами, у вас может даже быть статус для каждой позиции заказа - вы можете сразу же отправить виджет А, но вам придется подождать некоторое время, пока будет изготовлен виджет Б, прежде чем вы сможете его отправить.
 

Maikl86


Рег
02 Mar, 2016

Тем
0

Постов
2

Баллов
2
  • 01, Jun 2024
  • #5
Привет, Джошуа Начну с некоторой терминологии База данных — это всего лишь корзина, в которой хранятся все ваши таблицы.

Для большинства из нас у нас есть одна база данных, содержащая всю информацию для всего нашего веб-сайта. Для SavedOrders не требуется ключ продукта — он хранится в таблице OrderItem. Я создал SQLFiddle базовой системы заказов на http://sqlfiddle.com/#!9/d2c1f/2

это позволит вам возиться со столбцами в каждой таблице, выполнять запросы и т. д. На всякий случай скрипка исчезнет, вот код
 select customers.tradingas, orders.order_id, products.name, orderitems.quantity
from customers
left join orders on (orders.customer_id = customers.customer_id)
left join orderitems on (orderitems.order_id = orders.order_id)
left join products on (products.product_id = orderitems.product_id);
Код (разметка):
 CREATE TABLE `products` ( `product_id` int(11) NOT NULL AUTO_INCREMENT, `image` varchar(150) NULL, `name` varchar(150) NOT NULL, `description` text NULL, PRIMARY KEY (`product_id`) ); CREATE TABLE `orderitems` ( `orderitem_id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `quantity` int(5) NOT NULL, PRIMARY KEY (`orderitem_id`) ); CREATE TABLE `orders` ( `order_id` int(11) NOT NULL AUTO_INCREMENT, `customer_id` int(11) NOT NULL, `orderdate` datetime NOT NULL, `ponumber` varchar(15) NULL, PRIMARY KEY (`order_id`) ); CREATE TABLE `customers` ( `customer_id` int(11) NOT NULL AUTO_INCREMENT, `tradingas` varchar(150) NOT NULL, `address1` varchar(100) NULL, `address2` varchar(100) NULL, `address3` varchar(100) NULL, `postcode` varchar(10) NULL, `country` varchar(100) NULL, PRIMARY KEY (`customer_id`) ); CREATE TABLE `contacts` ( `contact_id` int(11) NOT NULL AUTO_INCREMENT, `customer_id` int(11) NOT NULL, `firstname` varchar(50) NOT NULL, `lastname` varchar(50) NULL, `email` varchar(100) NULL, PRIMARY KEY (`contact_id`) ); INSERT INTO `customers` values (1,'Acme Ltd','45 Willow Lane','','','','USA'), (2,'WidgetsRUs', '32 Maple Row', '','','','USA'); INSERT INTO `contacts` values (1, 1, 'John','Smith','[email protected]'), (2, 1, 'Sally', 'Brown', '[email protected]'); INSERT INTO `products` VALUES (1, '', 'AL123',''), (2, '', 'AZ654',''); INSERT INTO `orders` VALUES (1, 1, NOW(), '231'); INSERT INTO `orderitems` VALUES (1, 1, 1, 10), (2, 1, 2, 3);
Код (разметка):
 

Стас3


Рег
10 Apr, 2012

Тем
0

Постов
2

Баллов
2
  • 03, Jun 2024
  • #6
Это потому, что ваша таблица продуктов, вероятно, выглядит так:

Таблица ПРОДУКЦИИ:

ProductID (основной ключ автоматического увеличения)

изображение (варчар)

описание (текст)

количество (int не ноль)

Сделайте так:

Таблица ПРОДУКЦИИ:

ProductID (основной ключ автоматического увеличения)

имя продукта varchar(256)

изображение (варчар)

описание (текст)

количество (int не ноль)

Я не использую сайт sqlfiddle, @sarahk может рассказать об этом лучше.

Ей это очень хорошо знакомо.
 

Norman1


Рег
09 Nov, 2015

Тем
0

Постов
3

Баллов
3
  • 08, Jun 2024
  • #7
Могу ли я получить помощь, пожалуйста? Я пытался использовать SQLFiddle, но не понимаю значения, обведенные кружками. Когда я пытаюсь упростить SQL, я получаю: Ошибка: неизвестный столбец «products.name» в «списке полей». Спасибо!
 

Tsegmee


Рег
01 Jan, 2011

Тем
0

Постов
3

Баллов
3
  • 08, Jun 2024
  • #8
Сара К, очень благодарна. Я с нетерпением жду возможности попробовать SQL Fiddle. Совершенно круто. Вы сказали: «SavedOrders не нужен ключ продукта — он хранится в таблице OrderItem». Я думаю, поскольку таблица orderitem удаляется, когда покупки уменьшают ее до нуля, мне это нужно. Да нет? Джош
 

Enthroned


Рег
02 Jan, 2015

Тем
2

Постов
3

Баллов
23
  • 09, Jun 2024
  • #9
Я не вижу смысла в создании таблицы «позиция заказа». Это только количество хранения, ничего больше. Подумайте об этой структуре: Таблица ПРОДУКЦИИ: ProductID (основной ключ автоматического увеличения) изображение (варчар) описание (текст) количество (int не ноль) Таблица ЗАКАЗЫ идентификатор заказа (основной) Код товара Пользовательский ИД количество_заказано order_date (метка времени) Таблица КЛИЕНТ идентификатор клиента (основной) клиентЭлектронная почта Пароль клиента Имя Клиента и т. д. и т. п. Когда товар заказан, просто вычтите из «количества» в таблице ТОВАРЫ. Если количество уже равно нулю, не разрешайте размещать заказы на этот товар.
 

mega182


Рег
02 Jan, 2014

Тем
1

Постов
3

Баллов
13
  • 12, Jun 2024
  • #10
Выбранные записи запроса отображаются с кнопками покупки, имеют количество. при покупке идентификатор записи сохраняется в массиве, а количество - в другом массиве, индексом которого является идентификатор.

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

Также для их записей отправляется электронное письмо.
 

_GRAFF_


Рег
13 Feb, 2012

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966

Интересно