Схема базы данных для многоцветных продуктов - PullRequest
0 голосов
/ 15 марта 2012

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

Вот требования: Каждый продукт имеет несколько цветов.Каждый продукт должен быть в определенной категории.Каждая категория может иметь подкатегорию.

Пример отношения будет

Eyes[Cat]
   EyeProduct[Product]
      Color1[color]
      ...
      ColorN[color]

Lips[Cat]
   Lipgloss[Subcat]
      CoolLipgloss[Product]
          Color1[color]
          ...
          ColorN[color]

Вот мой дизайн базы данных:

Categories
-id     (pk)
-subcat_id  (fk)
-name
-description
-active     (boolean)

Sub Category
-id         (pk)
-product_id     (fk)
-name
-description


Products
-id     (pk)
-name
-price
-weight
-descritpion
-ingredients
-product_img
-active     (boolean)

SKU
-sku    (pk)
-product_id     (fk)
-name
-image_small
-image_med
-image_Lrg
-active     (boolean)

Будет ли хорошей идеей реализовать таблицы изображений.Эта таблица будет содержать ссылку на все изображения, используемые для каждого SKU (цвет), и любые дополнительные изображения продукта.Я думаю, что это имеет больше смысла, так как каждая запись sku может иметь более одного изображения.Любые входные данные приветствуются.

1 Ответ

0 голосов
/ 16 марта 2012

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

Categories
-id     (pk)
-name
-description
-active     (boolean)

Sub Category
-id         (pk)
-category_id     (fk)
-name
-description


Products
-id     (pk)
-subcategory_id     (fk)
-name
-price
-weight
-descritpion
-ingredients
-product_img
-active     (boolean)

SKU
-sku    (pk)
-product_id     (fk)
-name
-image_small
-image_med
-image_Lrg
-active     (boolean)

КСТАТИ. Вы можете использовать частичный путь для изображений, это сэкономит вам 2 текстовых поля. Например, у вас есть 3 изображения для sku 1111:

/tmp/image1111small.jpg
/tmp/image1111med.jpg
/tmp/image1111lrg.jpg

На самом деле нужно хранить только «/ tmp / image1111», и полный путь будет восстановлен путем добавления к нему «small.jpg», «med.jpg» и «lrg.jpg».

...