(Проектирование баз данных - атрибуты продуктов): Что такое более оптимальный вариант для проектирования баз данных атрибута продукта?

Я новый в проектировании баз данных. Что такое более оптимальный вариант для проектирования баз данных атрибута продукта для cms? (Предложите другие опции также).

опция 1: 1 таблица

products{
id
product_name
color
price
attribute_name1
attribute_value1
attribute_name2
attribute_value2
attribute_name3
attribute_value3
}

опция 2: 3 таблицы

products{
id
product_name
color
price
}

attribute{
id
name
value
}

products_attribute{
products_id
attribute_id
}
9
задан SagarPPanchal 4 April 2019 в 05:32
поделиться

2 ответа

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

Каждый атрибут должен быть назван по имени столбца. Цвет, страницы, размер рубашки, дата публикации должны быть именами столбцов.

Если каждый тип продукта имеет отдельный набор атрибутов, есть другие решения. См. мои ответы на:

Также пожалуйста прочитайте эту статью: Bad CaRMa: Introducing Vision прежде чем внедрять базу данных, построенную на парах "имя-значение", как это делаете вы.

25
ответ дан 4 December 2019 в 07:34
поделиться

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

products{id: integer, product_name: string, color: string, attribute_name1: string, attribute_name2: string...}. Имя_атрибута{} должно быть осмысленным словом, как и "цвет" (который тоже является атрибутом).

1
ответ дан 4 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: