Люди продолжают возвращаться к этой модели, потому что они думают, что она «гибкая».Ну, я полагаю, что гибкость имеет огромную цену: каждое обновление и каждый запрос медленные и сложные.Quassnoi упоминает, что если атрибуты редки, то есть большинство экземпляров сущности имеют только небольшой процент возможных атрибутов, это может сэкономить место.Это правда, но с другой стороны, если это не редкость, это занимает значительно больше места, потому что теперь вам нужно хранить имя атрибута или код для каждого атрибута в дополнение к значению, плюс вам нужно повторить какой-то видключ для идентификации экземпляра логической сущности для каждого атрибута.
Единственный раз, когда я могу подумать, когда это будет хорошей идеей, это когда список атрибутов нужно обновлять на лету, то есть пользователядолжен быть в состоянии решить создать новый атрибут, когда ему нравится.Но что тогда будет делать система с этим атрибутом?Если вы просто хотите, чтобы пользователь мог набрать его, а затем извлечь то, что он напечатал, достаточно просто.Но повлияет ли это на обработку каким-либо образом?Например, если пользователь решит добавить «код распродажи», как ваша программа узнает, как это влияет на цену продажи?Конечно, это может быть сделано: у вас могут быть дополнительные экраны, где пользователь вводит данные, которые каким-то образом описывают, как каждое поле влияет на цены, или на повторный заказ, или на что-либо еще.Но это добавило бы еще больше уровней сложности.
Итак, мой короткий ответ: если у вас нет особых требований, не делайте этого.Если вы пытаетесь создать базу данных с описанием предметов, которые вы продаете, с такими вещами, как описание, цена и количество, то создайте одну таблицу с полями, такими как описание, цена и количество.Жизнь достаточно трудна, не выходя из вашего пути, чтобы сделать ее сложнее.