минимизировать количество таблиц в MySQL? - PullRequest
1 голос
/ 19 сентября 2010

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

  1. таблица для каждого магазина, с первым или двумя столбцами, идентифицирующими товар, столбец для инвентаря и столбец для цены
  2. aтаблица для инвентаря и таблица для цен, где первый столбец в обоих идентифицирует продукт, и отдельные столбцы для каждого магазина

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

Кроме того, для первого варианта я должен хранить эти данные в отдельной БД или я могу хранить общий продукт ихранить таблицы сведений в одной и той же БД?

Ответы [ 2 ]

5 голосов
/ 19 сентября 2010

Ни.Вы должны нормализовать таблицу.Вы можете использовать что-то вроде этого:

Product Store Price
FooBar  CA    1.22
FooBar  MA    1.34
BarBaz  CA    2.30
BarBaz  MA    1.99

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

0 голосов
/ 19 сентября 2010

Каждый из двух вариантов нарушает принципы правильного проектирования реляционных баз данных.

  1. Наличие нескольких таблиц с одинаковым дизайном - признак того, что вы делаете что-то не так.

  2. Наличие нескольких столбцов, в которых хранятся одинаковые данные (цены), является признаком того, что вы делаете что-то не так.

  3. Изменение количества таблиц или столбцов при измененииВаш бизнес расширяется (например, добавляя больше магазинов) - это признак того, что вы делаете что-то не так.Они могут измениться, когда ваш бизнес изменится (нужно начать взимать налог или отслеживать клиентов), но не тогда, когда он просто расширяется.

Вы не упоминаете, меняются ли цены в магазине, яПредполагаю инвентарь.Если цены меняются в магазине, вы можете создать таблицу, например:

Product  Store   Price   Inventory
Shoes    Boston  54.00   27
Juice    Miami   1.49    100

Если цены фиксированы для каждого товара, вы можете удалить столбец «Цена» из этой таблицы и создать новый для цен товара:

Product   Price
Shoes     54.00
Juice     1.49
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...