Нужна рекомендация по структуре таблицы - PullRequest
1 голос
/ 18 июня 2010

У меня есть сущность, которая имеет 4 различных типа свойств, которые могут иметь только одно значение для каждого случая: логическое, десятичное, строковое или текстовое. Я не хочу определять таблицу с 4 булевыми, десятичными, nvarchar и ntext столбцами. Что бы вы посоветовали покрыть этим делом?

Обновление:

Я использую MS SQL Server.

Вот определение класса:

public class Foo
{
    public int Id { get; set; }
    public string Description { get; set; }
    public bool BooleanValue { get; set; }
    public decimal DecimalValue { get; set; }
    public string NVarcharValue { get; set; }
    public string NTextValue { get; set; }
} 

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Я предполагаю, что вы хотите использовать MS SQL Server.

Если это так, то я бы не стал использовать ntext Этот тип данных должен быть удален в будущих версиях SQL Server. Если вам действительно нужно использовать тип данных не-Unicode, тогда используйте nvarchar. Другое ограничение использования ntext заключается в том, что вы не можете преобразовать его во многие другие типы данных. Из 30 нечетных типов данных вы можете конвертировать ntext только в шесть из них.

В этом сценарии вы могли бы иметь следующую структуру таблицы.

Create Table dbo.PropertyInformation
(
PropertyId int identity(1,1) not null,
PropertyName varchar(50) not null,
PropertyTypeId int not null,
PropertyValue nvarchar(max)
)

Затем добавьте справочную таблицу для хранения типов ваших свойств

Create table dbo.PropertyTypes
(
PropertyTypeId int identity(1,1) not null,
PropertyType varchar(50) not null
)

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

Хотя, у вас есть причина, почему вы не хотите иметь 4 разных столбца для хранения значений свойств?

ntext информация о типе данных

Приведение и преобразование в SQL Server (Матрица разрешенных преобразований составляет примерно половину страницы)

0 голосов
/ 18 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...