Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Хранение в БД симметричной разреженной матрицы без диаг. элементов. [RSS Feed]

#1 Окт. 9, 2010 14:58:12

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение в БД симметричной разреженной матрицы без диаг. элементов.

Помогите определиться со способом хранения такой матрицы в БД. Кроме того в качестве “координат” выступают записи другой таблицы. (т.е. данную матрицу так же можно воспринимать как граф).
Такой вариант:

class Main():
name = CharField()

class MatrixItem(Model):
value = FloatField()
x = ForeignKey(Main)
y = ForeignKey(Main)
Не слишком подходит по понятным причинам.

Вот этот вариант кажется оптимальным:
class Main():
name = CharField()

class MatrixItem(Model):
value = FloatField()
coor = ManyToManyField(Main, related_name = 'items') #Храниться две ссылки на Main
Но встаёт вопрос о том как извлекать элементы имея на руках две записи Main, самое лучшее что я смог придумать это:
def get_value(p1, p2):
try:
if p1<>p2:
return p1.items.__and__(p2.items)[0].value #Пользуясь случаем хотелось бы спросить, почему результат p1.items.__and__(p2.items) отличается от p1.items and p2.items ?
else:
return None
except IndexError:
return 0
Но если я правильно понимаю, то при такой реализации будет два запроса и будут вытаскиваться целые строки и ряды.
Так вот можно ли как-то улучшить или переделать эту схему?
Буду благодарен за любые полезные советы и указания.



Офлайн

  • Начало
  • » Django
  • » Хранение в БД симметричной разреженной матрицы без диаг. элементов.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version