Это зависит от того, что вам нужно делать со свойствами.Если свойства представляют только косвенный интерес, то 4 является очень гибким и компактным решением.Что я имею в виду под косвенным интересом?Если вам нужно получить и отобразить информацию в свойствах, это косвенно.Если вам нужно сделать расчеты или подробные манипуляции со свойствами, то это более прямо.Другими словами, если единственный метод, который вы, вероятно, будете использовать в свойствах, это ".ToString ()", тогда вы можете обойтись без 4. Эта схема обладает значительным преимуществом, позволяя вам добавлять новые типы свойств без изменения базы данных.схема, поскольку это просто новые вставки строк в таблицу типов свойств.
Если, с другой стороны, необходимо манипулировать различными типами свойств способами, которые зависят от их типов данных, то это будет проблемойхранить различные типы свойств в одном поле.Если это так, вы могли бы сделать 3., но это также проблема, потому что это требует, чтобы вы знали, к какой таблице перейти, чтобы получить значение определенного типа.Это не непреодолимая проблема, но она не изящна.
Вместо 3. Вы можете попробовать своего рода гибридный подход, в котором ваша таблица свойств имеет несколько столбцов, по одному для каждого типа данных, и желательноеще один столбец - возможно, вычисляемый столбец - который действует как «ToString».Таким образом, ваше косвенное использование может перейти к простому, предсказуемому месту, и только ваши более вовлеченные приложения должны беспокоиться о том, к какому столбцу перейти для определенного типа свойства.