Стол: рубашка {shirt_id}
Таблица: ShirtAttributeDefinitions {attribute_id, attribute_description}
Таблица: ShirtAttribute {shirt_id, attribute_id}
таким образом, вы можете продолжать определять новые атрибуты ShirtAttributes, добавляя записи в Table: ShirtAttributeDefinitions.
Пример:
у вас есть две рубашки: {shirt_id: 1}, {shirt_id: 2}
у вас есть пять атрибутов рубашки: {attribute_id: 1, attribute_description: blue}, {attribute_id: 2, attribute_description: small}, {attribute_id: 3, attribute_description: ladies}, {attribute_id: 4, attribute_description: red}, { attribute_id: 5, attribute_description: men}
Теперь ваша первая рубашка - голубая маленькая женская рубашка, а вторая - красная мужская рубашка. Таким образом, ваша таблица ShirtAttribute будет иметь следующие записи:
{shirt_id: 1, attribute_id: 1}, {shirt_id: 1, attribute_id: 2}, {shirt_id: 1, attribute_id: 3}, {shirt_id: 2, attribute_id: 4}, {shirt_id: 2, attribute_id: 5}
Хотя этот подход работает, лучше всего сделать эти атрибуты полями таблицы Shirt. Таким образом, вы можете быть уверены, что рубашка не имеет атрибутов «мужской» и «женский». Этот метод - просто грязный подход, который строго соответствует вашему вопросу.
JRH.