Я разрабатываю таблицу, в которой хранится информация о дисциплинах - она позволяет пользователю добавлять записи, но мне также нужно иметь возможность добавлять записи самостоятельно (которые будут отображаться пользователю при обновлении).
Проблема, конечно же, заключается в автоматическом увеличении идентификатора - если я запусту приложение с 9 перечисленными и добавлю 10-ю дисциплину в обновление, на моей стороне оно появится с идентификатором 10, но они, возможно, уже создали 20. Это очевидно, если учесть основы c, но если я вместо этого разделю данные на отдельные таблицы с одной и той же схемой, у меня возникнет проблема с другой таблицей (в которой перечислены субъекты), которой нужен единственный список PK для его Discpline FK.
Таким образом, они не могут быть двумя отдельными списками автоинкрементных идентификаторов, поскольку FK не может иметь повторяющиеся значения, но они также не могут быть одним и тем же столбцом, чтобы избежать дублирования идентификаторов. Единственное, о чем я подумал - это сохранить данные в одной таблице, убрав автоинкремент на уровне базы данных и в коде приложения, запустив автоинкремент (от +1 до последнего числа) с указанного c числа. Я знаю, что не буду подходить близко к добавленным записям пользователя. Но это кажется грязным и неэффективным, и я знаю, что есть более простой метод на уровне базы данных, о котором я просто не думаю.
Спасибо за любую помощь, Пол
Редактировать: Я вижу, что я недостаточно ясен, поэтому извиняюсь за любую путаницу. В настоящее время у меня есть две таблицы, однако это будет применяться и к будущим таблицам.
- tbl_disciplines (дисциплины_id, дисциплины_имя)
- tbl_subjects (subject_id, subject_name, subject_fk_disciplines)
Я понимаю, что в tbl_disciplines могут быть записи как от себя, так и от пользователя, однако я надеялся, что они будут иметь две отдельные таблицы из-за моего понимания SQLite и знания, что я буду добавлять больше таблиц, многие с десятками полей и ФК. Я не хочу вручную записывать каждую новую запись в onUpgrade, когда в будущих таблицах может потребоваться добавить более 100 новых записей при обновлении. Приложение, которое будет использовать базу данных, разработано, чтобы сделать добавление в базу данных более эффективным и простым процессом.
Если это отдельные таблицы, я знаю, что с помощью onUpgrade я могу просто удалить и заменить более старая таблица моих записей на стороне пользователя с новой таблицей всех записей, которые я добавил с помощью приложения с момента последнего обновления, оставив вторую таблицу пользовательских записей без изменений. Из того, что я понимаю, если я сохраню свои записи и записи пользователя в одной и той же таблице, мне нужно будет вручную добавить все свои записи обновлений по записи в одну и ту же существующую таблицу в области onUpgrade, чтобы не стирать их данные. Более того, я не могу использовать приложение в качестве внешнего интерфейса для добавления своих собственных записей, потому что я не могу просто заменить их tbl_disciplines на мои tbl_disciplines при обновлении.
Кроме того, если мне нужно что-то редактировать Что касается одной из добавленных мной записей, я не могу запросить запись по ее идентификатору, поскольку она будет отличаться для каждого пользователя.