Если у вас есть какие-либо вопросы, дайте мне крик.

тоящее время я хотел бы разработать приложение-словарь для мобильного устройства. Сам словарь использует автономный файл / базу данных для перевода слова. он просто переводит для двух языков, например, англо - испанский словарь. У меня в голове простой дизайн. это будет две таблицы: английская и испанская. для каждой таблицы содержится:

word_id = идентификатор, который будет внешним ключом для другой таблицыслово = словоword_descriptionrespon_trans_id = идентификатор другой таблицы, которая является переводом этого слова на другой язык.

а также из-за этого для мобильных приложений, базы данных используют SQLite.

Данные определения для каждой таблицы предоставлены упорядочены по полю'слово' на столе. Однако я все еще думаю о проблеме, если есть дополнение для определения данных. Потому что таблица будет упорядочена по полю'слово'Есть ли способ поставить (вставить) новую запись по-прежнему в порядке по слову? или есть идея сделать его более эффективным?

Ответы на вопрос(4)

Решение Вопроса

для каждого перевода есть несколько возможностей перевода в зависимости от контекста. если вы хотите создать двунаправленный словарь для двух языков, вам нужно как минимум три таблицы:

ENGLISH
ID | WORD
1  | 'dictionary'

GERMAN
ID | WORD
1  | 'lexikon'
2  | 'wörterbuch'

TRANSLATION_EN_DE
ID_EN | ID_DE
1     | 1
1     | 2

Первые две таблицы содержат все слова, которые известны на этом языке, и двунаправленное отображение выполняется третьей таблицей отображения. это общий случай отображения n: n. с двумя другими таблицами вы всегда можете добавить новый язык в ваш диктатор. Если вы делаете это с одной таблицей, у вас будет несколько определений для одного слова, поэтому нет нормализованной базы данных.

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

 Gino Pane02 февр. 2018 г., 08:23
Первые две таблицы можно объединить с дополнительным «языковым» столбцом.

я бы придерживался одного стола. Также, если вы планируете использовать CoreData, моделирование индекса традиционного дизайна базы данных отличается от модели на основе графов объектов при работе в Obj. С / IOS.

Очень просто думать по традиционным направлениям запросов на выборку и внутренних / внешних объединений, но, например, ваш столбец «assign_trans_id» обычно обрабатывается путем установки «отношения» при определении модели данных для двух таблиц (если вы используете CoreData конечно).

По сути, если нет веской причины иметь две таблицы, я бы придерживался только одной.

Что касается порядка, вам может не понадобиться сохранять порядок слов в наборе данных. Я предполагаю, что вы хотите сохранить все в алфавитном порядке, что потребовало бы некоторой работы, если бы данные когда-либо изменились, даже для одной таблицы.

Снова используя CoreData, NSFetchRequest и NSSortDescriptor, очень легко вернуть набор записей, упорядоченных по указанному столбцу, избавляя вас от необходимости беспокоиться об изменениях и дополнениях в вашей базе данных.

Если у вас есть какие-либо вопросы, дайте мне крик.

если слово на языке 1 может быть переведено более чем на одно слово на языке 2? Я думаю, что вы должны использовать что-то вроде дизайна WursT, чтобы справиться с этим.

RE вставка записей в алфавитном порядке: Обычно вы не беспокоитесь о физическом порядке записей в базе данных. Вы используете предложение ORDER BY, чтобы получить их в любом желаемом порядке, и индекс, чтобы сделать его эффективным. В стандарте SQL нет ничего для контроля физического порядка. Хм, я помню, что сталкивался с чем-то, касающимся принудительного физического упорядочения в какой-то базе данных, с которой я работал, я думаю, что это был MySQL, но большинство не даст вам никакого контроля над этим. Я не работал с SQLite, поэтому я не могу сказать, если он предоставляет способ.

отношения между словами и их возможными переводами - один ко многим или многие ко многим. Мне не ясно, как вы будете представлять это в своей модели. Похоже, вам может понадобиться хотя бы еще один стол.

Ваш ответ на вопрос