Мне интересно, как хранить список индексов идентификаторов для каждого идентификатора в таблице. Они эффективно сформируют «отношения» между идентификаторами. Вот основная таблица на данный момент:
таблица основных:
А теперь для каждой строки будет список идентификаторов других строк, который покажет мне, как одна строка связана с другой. Например, строка с идентификатором # 5 может быть связана с идентификаторами 6,7,9,25, ... и т. Д.
Вот варианты, которые я рассмотрел:
Создать новый столбец в виде текстового поля и сохранить сериализованный список этих целочисленных значений. Тогда просто десериализуйте, когда я хочу их.
Создайте новую таблицу под названием «отношения» со столбцами отношение_ид (первичный ключ с автоматическим приращением int), имя1, имя2, [и необязательные другие поля, указывающие тип отношения, что было бы неплохо].
Я чувствую, что вариант 1 немного взломан. Я сделал это раньше, и это работает, но, возможно, вариант 2 лучше дизайн?
Хотя я беспокоюсь о скорости. С опцией 1 я могу просто сделать SELECT отношения из основного WHERE id = $ id, а затем снять сериализацию результата и получить мой массив с целочисленными индексами. Но с вариантом 2 мне придется просмотреть таблицу, которая будет во много раз (в 10 раз или более) больше, и выполнить «ВЫБОР name1, name2 ОТ ОТНОШЕНИЙ».
Скорость - мой главный приоритет. Я не уверен, какой из них лучше для космоса, хотя мне было бы интересно узнать.
Так какой вариант мне выбрать? Есть ли другие хорошие варианты, которые я не рассмотрел? Я также был бы признателен за несколько хороших общих советов по проектированию баз данных!
Спасибо большое.