MYSQL таблица скидок для каждого клиента на свою группу товаров своя скидка кратко

Практика 5 мин.



Нужно создать таблицу MYSQL скидок для каждого клиента на свою группу товаров своя скидка
уже существует таблица с клиентами и табл с группами товаров

CREATE TABLE IF NOT EXISTS `goup_product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_name` varchar(255) NOT NULL,
`block` int(11) NOT NULL DEFAULT '0',
`vid` int(11) NOT NULL DEFAULT '0',
`autor_name` varchar(60) NOT NULL DEFAULT ' ',
`autor_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) TYPE = InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1
CREATE TABLE IF NOT EXISTS `client` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT ' ',
`Tel` varchar(255) NOT NULL DEFAULT ' ',
`fax` varchar(255) NOT NULL DEFAULT ' ', 
`Manager` varchar(255) NOT NULL DEFAULT ' ',  
`Email` varchar(100) NOT NULL DEFAULT ' ',  
`autor_id` int(11) NOT NULL DEFAULT '0',
`region` varchar(255) NOT NULL DEFAULT ' ',
`autor_name` varchar(255) NOT NULL DEFAULT ' ',
`Status` int(11) NOT NULL DEFAULT '0',
`Block` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) TYPE = InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

создаю связанную таблицу


CREATE TABLE IF NOT EXISTS `percentages` (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    client_id INT(11) NOT NULL,
    group_id INT(11) NOT NULL,
    PRIMARY KEY (id),
    INDEX client_id USING BTREE (client_id),
    INDEX group_id USING BTREE (group_id),
    CONSTRAINT orders_ibfk_1 FOREIGN KEY (client_id)
    REFERENCES db.client (id) ON UPDATE CASCADE,
    CONSTRAINT orders_ibfk_2 FOREIGN KEY (group_id)
    REFERENCES db.goup_product (id) ON DELETE CASCADE
)
ENGINE = INNODB
AUTO_INCREMENT = 1
AVG_ROW_LENGTH = 4096
CHARACTER SET cp1251
COLLATE cp1251_general_ci;


Я с базами данных знаком на очень среднем уровне. Нужно подумать. Нужно создать таблицу скидок для каждого клиента на свою группу товаров своя скидка.
Уже существует таблица с клиентами и табл с группами товаров, создаю связанную таблицу `percentages`, но как ее заполнить ?
Нужно на каждого клиента по ID все группы товаров с ID в таблицу всунуть.
Возможно ли это в табл `percentages` с такой структурой сделать?

Ответ - Смотри... есть клиенты, есть товары. У каждого клиента своя скидка на отдельный товар?

Вопрос - Да на отдельную группу товаров и у всех разные скидки и у клиентов и на группы товаров и количество групп произвольное.
Как правильно таблицу со скидками сделать?

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

CONSTRAINT orders_ibfk_1 FOREIGN KEY (client_id)
REFERENCES db.client (id) ON UPDATE CASCADE,
CONSTRAINT orders_ibfk_2 FOREIGN KEY (group_id)
REFERENCES db.goup_product (id) ON DELETE CASCADE

это связывает уже существующие записи при удалении или изменении но как их создать??? в новой третьей таблице со скидками

ща дам схематично структуру таблиц- а полностью я их вверху написал


CREATE TABLE IF NOT EXISTS `client` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT ' ',................

CREATE TABLE IF NOT EXISTS `goup_product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_name` varchar(255) NOT NULL,....................

а нужно

CREATE TABLE IF NOT EXISTS `percentages` (

id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
client_id INT(11) NOT NULL,
group_id INT(11) NOT NULL,
PRIMARY KEY (id),
INDEX client_id USING BTREE (client_id),
INDEX group_id USING BTREE (group_id),
CONSTRAINT orders_ibfk_1 FOREIGN KEY (client_id) REFERENCES db.client (id) ON UPDATE CASCADE,
CONSTRAINT orders_ibfk_2 FOREIGN KEY (group_id) REFERENCES db.goup_product (id) ON DELETE CASCADE
)
ENGINE = INNODB AUTO_INCREMENT = 6 AVG_ROW_LENGTH = 4096
CHARACTER SET cp1251 COLLATE cp1251_general_ci;.............




​Вопрос
правильно ли структура третьей табл со скидками спроектирована? и как ее заполнить с данными клиентов и групп? Как ты думаешь?

Ответ
во-первых Primary key не нужен. ты и так используешь составной PRIMARY KEY - это 3 айдишника клиент-группа-товар - чем не уникальный блин параметр?
то есть таблица со скидками будет без PRIMARY KEY?
объясни зачем там PRIMARY KEY?


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

Ответ Тебе полюбому нужно будет связать товар и клиента и выставить скидку... отношение многие ко многим - много товаров, много клиентов, нужно разбивать и делать (в идеале) отношение 1 к 1 - 1 товар 1 клиент 1 скидка ....
Полюбому нужно отталкиваться от того что у 1 клиента - скидки (РАЗНЫЕ) на каждый товар (или на группу товаров)

Вопрос Как это на практике сделать? или 1 клиент - 1 группа товаров - 1 скидка?

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

создано: 2011-07-29
обновлено: 2026-03-09
437



Помог ли вам этот ответ?
Нажмите оценку и напишите коротко почему. Так мы сможем сделать следующие ответы точнее и полезнее.
Насколько вы довольны ответом?
Ваш отзыв напрямую влияет на качество следующих подсказок и ответов.


Поделиться:
Пожаловаться

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выполнения задания
  • Возможно применение функции гаранта на сделку
  • Приоритетная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можете продать (как исполнитель) или купить (как заказчик) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно применение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии

Оставить комментарий

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

Лекции и учебник по "Базы данных - MySql (Maria DB)"

Термины: Базы данных - MySql (Maria DB)