Jump to content
  • 0

Проектирование БД mysql


solovin1986
 Share

Question

Есть таблица на 200 000записей (ID, Наименование)

Есть примерно около 500 магазинов число которых может расти.

Нужно сделать так чтобы магазин мог отмечать что товар у него есть.

Как возможно построить далее БД более рационально и правильно?

Edited by solovin1986
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Таблица с товарами, таблица с магазинами, таблица связи товар-магазин. Не понимаю чего сложного.

P.S. Конечно, всё от задачи зависит. Возможно, для каких-то задач будет эффективнее в табличке с товарами создать поле для хранения списка магазинов или наоборот в табличке с магазинами поле создать. 200 000 записей — не так уж и много, так что вполне себе прокатит решение с тремя таблицами для выполнения практически любой задачи.

Link to comment
Share on other sites

  • 0

1. Если каждый магазин имеет каждый товар, то нафиг их связывать? И так понятно, что везде всё есть.

2. 200 000 ? 500 = 100 миллионов. MySQL вполне себе столько держит. Попробуйте, что мешает-то?

Link to comment
Share on other sites

  • 0

1. Если каждый магазин имеет каждый товар, то нафиг их связывать? И так понятно, что везде всё есть.

2. 200 000 ? 500 = 100 миллионов. MySQL вполне себе столько держит. Попробуйте, что мешает-то?

Вопрос 1 может 70% каждый магазин будет иметь наименований здесь хз

Link to comment
Share on other sites

  • 0

Все бы ничего есть еще одна проблема в таблице с магазинами еще есть поле в котором хранятся ID регионов с которыми они работают. в таком виде '235,122,14,1036'

Как с этим быть?

Будет просто выборка по региону виду товара и параметрам

Edited by solovin1986
Link to comment
Share on other sites

  • 0

Все бы ничего есть еще одна проблема в таблице с магазинами еще есть поле в котором хранятся ID регионов с которыми они работают. в таком виде '235,122,14,1036'

Как с этим быть?

Будет просто выборка по региону виду товара и параметрам

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

Link to comment
Share on other sites

  • 0

Итак, вот что получилось. Было создано три таблицы

CREATE TABLE `goods` (
`id` int(7) NOT NULL AUTO_INCREMENT,
`name` varchar(50),
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

CREATE TABLE `goods_shops` (
`good` int(7) NOT NULL,
`shop` int(4) NOT NULL,
KEY `good` (`good`),
KEY `shop` (`shop`)
) ENGINE=MyISAM;

CREATE TABLE `shops` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` varchar(50),
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

Далее они были заполнены. Таблица с товарами содержит 200 000 записей (6.2 MiB), с магазинами 500 записей (16.8 KiB), связка — 100 000 000 записей (3.0 GiB). Все магазины связаны со всеми товарами — так больше данных. Сервер: Phenom 955, RAM 4G, HDD SATA 7200, Linux x64, MySQL 5.1 со стандартными настройками.

А вот и пара запросов:

1. Надо посмотреть какие у магазина есть товары

SELECT
`goods`.*
FROM `goods_shops`
JOIN `goods` ON `goods_shops`.`good`=`goods`.`id`
WHERE `goods_shops`.`shop`=318
LIMIT 100

Query took 0.0015 sec

2. Надо посмотреть в каких магазинах есть данный товар

SELECT
`shops`.*
FROM `goods_shops`
JOIN `shops` ON `goods_shops`.`shop`=`shops`.`id`
WHERE `goods_shops`.`good`=78533
LIMIT 100

Query took 0.0014 sec

Сервер чувствует себя лучше некуда.

Смотря на чем он построен. Апачу или денверу будет трудновато, но есть другие сервера, выдерживающие такую нагрузку (nginx например)

А при чём тут апач денвер и нжинкс?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy