Нет, «лучшего» способа сохранить последовательность элементов в одном столбце нет. Реляционные базы данных предназначены , в частности , для хранения одного значения на комбинацию строки / столбца. Чтобы сохранить более одного значения, вы должны сериализовать свой список в одно значение для хранения, а затем десериализовать его при получении. Нет другого способа сделать то, о чем вы говорите (потому что то, о чем вы говорите, это плохая идея, которую, как правило, никогда не следует делать ).
Я понимаю, что вы думаете, что глупо создавать другую таблицу для хранения этого списка, но это именно то, что делают реляционные базы данных. Вы ведете тяжелую борьбу и нарушаете один из самых основных принципов проектирования реляционных баз данных без веской причины. Поскольку вы заявляете, что изучаете только SQL, я бы настоятельно посоветовал вам избежать этой идеи и придерживаться рекомендаций, рекомендованных вам более опытными разработчиками SQL.
Принцип, который вы нарушаете, называется первая нормальная форма , что является первым шагом в нормализации базы данных.
С риском упрощения вещей, нормализация базы данных - это процесс определения базы данных на основе того, что данные равны , так что вы можете писать разумные, согласованные запросы к ним и иметь возможность легко их поддерживать , Нормализация предназначена для ограничения логических несоответствий и искажений в ваших данных, и для этого существует множество уровней. Статья в Википедии о нормализации базы данных на самом деле довольно хороша.
По сути, первое правило (или форма) нормализации гласит, что ваша таблица должна представлять отношение. Это означает, что:
- Вы должны быть в состоянии отличить одну строку от любой другой строки (другими словами, ваша таблица должна иметь то, что может служить первичным ключом. Это также означает, что ни одна строка не должна дублироваться.
- Любое упорядочение данных должно определяться данными, а не физическим упорядочением строк (SQL основан на идее набора, что означает, что упорядочение only , на которое вы должны полагаться, то, что вы явно определяете в своем запросе)
- Каждое пересечение строк / столбцов должно содержать одно и только одно значение
Последний пункт, очевидно, является существенным моментом здесь. SQL предназначен для хранения ваших наборов, а не для того, чтобы вы могли хранить наборы самостоятельно. Да, это возможно сделать. Нет, мир не закончится. Вы, однако, уже искалечили себя в понимании SQL и лучших практик, которые сопровождают его, сразу же приступив к использованию ORM. LINQ to SQL - это просто фантастика, как и графические калькуляторы. Однако в том же духе они должны , а не использоваться вместо знания того, как на самом деле работают процессы, которые они используют.
Ваш список может теперь быть полностью «атомным», и это может не измениться для этого проекта. Но, однако, вы привыкнете делать подобные вещи в других проектах, и вы в конечном итоге (скорее всего, быстро) столкнетесь со сценарием, в котором вы сейчас подгоняете свой быстрый и простой список в столбце подход там, где это совершенно неуместно. В создании правильной таблицы для того, что вы пытаетесь сохранить, не так много работы, и другие разработчики SQL не будут насмехаться над вами, когда увидят ваш дизайн базы данных. Кроме того, LINQ to SQL увидит ваше отношение и предоставит вам надлежащий объектно-ориентированный интерфейс для вашего списка , автоматически . Зачем вам отказываться от удобства, предлагаемого вам ORM, чтобы вы могли выполнять нестандартные и необдуманные хакерские действия с базой данных?