У меня очень мало опыта в проектировании баз данных, и теперь я хочу создать очень простую базу данных, которая делает то же самое, что ранее у меня была в xml. Вот XML:
<services>
<service type="writing">
<small>125</small>
<medium>100</medium>
<large>60</large>
<xlarge>30</xlarge>
</service>
<service type="analysis">
<small>56</small>
<medium>104</medium>
<large>200</large>
<xlarge>250</xlarge>
</service>
</services>
Теперь я хотел создать то же самое в базе данных SQL и начал делать это (надеюсь, что с форматами все в порядке, но вы получите суть, четыре столбца и две строки):
> ServiceType Small Medium Large
>
> Writing 125 100 60
>
> Analysis 56 104 200
Это не сработало, так как я тогда хотел использовать LINQ, чтобы выбрать, скажем, Большое значение для записи (60). Но я не мог использовать LINQ для этого (насколько я знаю) и использовать переменную для размера (см. Параметры в методе ниже). Я мог бы сделать это, только если бы у меня был столбец типа «Размер», где значения «Маленький», «Средний» и «Большой» были бы значениями. Но это тоже не совсем правильно, потому что тогда я получу несколько строк с ServiceType = Writing (3 в данном случае, по одному для каждого размера), и то же самое для Analysis. И если бы мне пришлось добавить больше типов обслуживания, я бы сделал то же самое. Просто повторяющийся ... Есть ли какой-нибудь умный способ сделать это, используя отношения или что-то?
Используя второй дизайн выше (хотя и не очень), я мог бы использовать следующий LINQ для выбора значения с параметрами, отправляемыми в метод:
protected int GetHourRateDB(string serviceType, Size size)
{
CalculatorLinqDataContext context = new CalculatorLinqDataContext();
var data = (from calculatorData in context.CalculatorDatas
where calculatorData.Service == serviceType && calculatorData.Size == size.ToString()
select calculatorData).Single();
return data.Hours;
}
Но если есть другой лучший дизайн, не могли бы вы также описать, как сделать тот же выбор, используя LINQ с этим дизайном?
Пожалуйста, имейте в виду, что я новичок в проектировании баз данных, поэтому, пожалуйста, будьте максимально понятны и педагогичны: -)
Спасибо!
Андерс