Android: отношение SQLite One-To-Many для таблицы, в которой записи часто меняют порядок - PullRequest
0 голосов
/ 12 января 2011

Соответствующий вопрос: Android: SQLite один-ко-многим

Это мой первый пост здесь, а также мой первый раз, когда я имею дело с базами данных.Если есть какие-либо разъяснения или исправления, которые я могу внести, пожалуйста, сообщите мне

Я пытаюсь настроить базу данных SQLite для лучшего хранения элементов, собранных из RSS-канала.Я пытаюсь настроить 3 стола.Это выглядит так:

Таблица 1: Таблица каналов (элементы остаются в постоянном порядке)

_id |Место подачи |Название канала |Описание канала |...

Таблица 2: Таблица элементов (элементы должны храниться в хронологическом порядке для удобства доступа и удаления)

_id |Название предмета | ... |ID канала |...

Где идентификатор канала имеет номер строки, в которой находится канал, частью которого является элемент.

Эта часть довольно проста, но вот моя проблема.Я хочу иметь возможность запрашивать элементы по категориям, которые имеют к ним отношение.Они включены в XML, который будет проанализирован, и было бы здорово отсортировать по этим значениям.Поэтому я начал создавать другую таблицу и реализовывать те же отношения один-ко-многим, как описано выше, но затем столкнулся с проблемой.Поскольку идентификаторы этих элементов могут изменяться при разборе большего количества элементов, идентификаторы не являются статичными, и я не могу иметь ссылки на категории, как это делалось ранее.Кроме того, еще одна проблема, которую я обнаружил, заключалась в том, что в идеале каждой категории в идеале требовалось указывать на множество различных элементов, поскольку элементы могли относиться к одной и той же категории.

И вот где я застрял.

1 Ответ

0 голосов
/ 12 января 2011

Теперь я не уверен, что правильно понимаю вашу ситуацию: являются ли идентификаторы категории нестатичными?Это кажется немного странным, поскольку сама идея идентификатора заключается в том, что он остается постоянным в течение всего срока службы.

Если это все еще так, я бы попытался реализовать свою собственную структуру идентификатора и заверить, что онпостоянная.Возможно, вы могли бы рассчитать идентификатор на основе имени категории (используйте сумму md5 или sha1 в качестве идентификатора, избыточное количество, но гарантированно останетесь неизменным и уникальным).Наличие уникальной структуры идентификаторов для ваших категорий позволит вам использовать ту же структуру таблиц, что и раньше (для элементов и каналов).

Возможно, было бы даже целесообразно сделать все буквы в имени категории строчными.и удалите не буквенно-цифровые значения перед вычислением идентификатора.Таким образом, вы избавитесь от категорий, которые, скорее всего, одинаковы (тогда «Категория» будет равна «Cat-e-gory»).

Я не уверен, что на самом деле ответил на ваш вопрос, но янадеюсь, вы сможете использовать его: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...