2013-09-05 6 views
0

Я новичок в объектных данных c и ядра. Я делаю приложение для iOS вроде приложения для флеш-карт. У меня есть базовая информация, созданная с помощью объекта EnglishWord во многих отношениях с объектами ForeignWord (разные языки).Правильный сбор данных метаданных/объектов с использованием Core Data/sqlite

Для каждого объекта ForeignWord я хочу отслеживать определенные метаданные: сколько раз я просматривал слово, даты, которые я просмотрел, оценку, которую я ему даю, и т. Д. В идеале это было бы, если бы у меня был массив/словарь как атрибут внутри самого управляемого объекта ForeignWord. Это невозможно.

Единственный вариант, о котором я могу думать, это создать новый объект под названием «Оценка», при этом каждый объект ForeignWord «владеет» множеством управляемых объектов Score (один для многих), каждый новый управляемый объект «Score» создается каждый раз Я рассматриваю ForeignWord.

Однако это звучит очень грязно. Если у меня есть 1000 слов, тогда у меня будет 1000 разных таблиц в базе данных sqlite, по одной для каждой карты .. это замедляет работу? плохо ли иметь 1000 разных таблиц?

действительно ли это способ сделать это? Есть ли более элегантное решение? Благодаря!

ответ

0

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

enter image description here

Таким образом, вы можете создать новый ViewEntry установить его foreignVersion и word атрибутов английских и иностранные слова, установить дату, оценку, и общее время ответа (вместе с чем-нибудь еще вы хотеть). Затем вы могли бы сделать действительно хороший запрос, чтобы поднять полезную информацию.

  • дать мне все иностранные версии английского слова «школа», где счет был меньше, чем 50%.

  • Я хочу, чтобы все времена пользователь пытался выполнить русский перевод «дома» и связанных с ним баллов.

  • какие у английских слов наихудший/лучший результат?

  • Что является самым/наименее известным английским (или иностранным) словом?

Все это было бы относительно легко, так как английское слово может получить доступ ко всем временам это было просмотрены и любой иностранной версии любой английской версии может сделать то же самое. Вы также можете получить доступ к счету и посмотреть дату и вывести все английские/зарубежные версии из этих данных.

Вам также не нужно будет создавать 1000 таблиц :)

+0

hm .., который выглядит ужасно красивым .. Ухх Я думаю, что это то, что я имел в виду. Я должен быть смущен тем, как работают основные данные. Я думаю, мне нужно немного потренироваться, а затем я дам вам зеленую галочку. Большое спасибо за советы! – user2751382

+0

хорошо поиграйте и дайте мне знать, если у вас есть вопросы. Я попытаюсь обратиться к ним. – Firo

+0

эй, который отлично работал, спасибо за хорошо объясненный ответ – user2751382

1

Возможно, вы можете добавить таблицу под названием «Просмотр», которая имеет отношение (к 1) как к английскому, так и к ForeignWord. Затем вы можете отслеживать метаданные, которые вас интересуют в этой таблице, и суммировать данные в этой таблице, чтобы определить, сколько раз вы просматривали определенное слово, правильно ли вы это указали и т. Д.

+0

благодарит за ответ ..мой единственный вопрос: не создаст ли таблица просмотра для каждого «английского слова» и «иностранного слова»? так что в конце у меня есть тысячи «таблиц просмотра»? или я чего-то не хватает ... еще раз спасибо – user2751382

+0

Нет. Вам нужен только один стол. – xyzzycoder

Смежные вопросы