2010-06-18 2 views
1

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

Update:

Я использую 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; } 
} 
+1

У вас есть определение класса или что-то, что вы можете поделиться, чтобы помочь проиллюстрировать вашу проблему? – slugster

+0

некоторые базы данных поддерживают тип данных 'sql_variant', но ожидайте трудности, если вы когда-либо захотите изменить DBM. – msw

ответ

1

Я предполагаю, что вы хотите использовать 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 datatype information

Casting & Converting in SQL Server (Матрица разрешенных переходов составляет примерно половину пути вниз страницы)

0

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

Смежные вопросы