2011-01-16 3 views
1

Я новичок в основных данных. Я стучу головой о стену, пытаясь понять, как мне создать модель данных для этого приложения.iphone - core data model

Мне нужно создать базу данных для книг.

Books have the following characteristics: 
.englishName 
.italianName 
.frenchName 
.spanishName 
.number 

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

Что мне нужно:

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

Как я могу себе представить, что это можно было бы сделать: я бы создал 3 объекта: Bundle, Product and Type и сделать все пакеты продуктов, я имею в виду, комплект с 1 продуктом или несколькими продуктами.

Bundle 
.Number 
.Paid 
-relation to product (fromBundle) to-many 


Product 
.nameEN 
.nameIT 
.nameFR 
.nameSP 
.Number 
-fromBundle (relation to Bundle) to-many 
-fromType (relation to Type) 


Type 
.kind 
-relation to Product... to-many 

Но я не уверен, что это не так, просто потому, что нет никакого способа определить имя пакета во всех 4-х языках, и если добавить эти атрибуты к расслоению, я закончу с большим количеством избыточности ...

, пожалуйста, помогите meeeeeee! Благодарю.

ответ

1

Возможно, вы можете злоупотреблять этим, введя Product and Type - все, что вам действительно нужно, это сущности Book and Bundle, со многими отношениями между ними. Затем, чтобы разобраться с используемыми вами случаями использования:

  1. Маркировка комплекта или книги, оплаченной: для книги просто отметьте оплаченную книгу; для пакета, отметьте все свои книги оплаченными.
  2. Для извлечения данных:
    • Для извлечения всех несвободных или бесплатно книги, просто получить экземпляры сущности книги с атрибутом free установить соответствующее значение (или значения price нулю или отлична от нуля, в зависимости от того, как вы храните этот атрибут)
    • чтобы получить все книги из данного пучка, просто вызовите [bundle books] - многие-ко-многим дает вам это непосредственно
    • чтобы получить все книги, которые были куплены, просто искать книги, отмеченные paid

Таким образом, вы можете сохранить свои четыре атрибута имени в самой книге и не беспокоиться о них (если только вы не должны называть Bundles, но все равно должны быть разные имена). Кроме того, это концептуально просто - вам не нужно беспокоиться о том, что именно представляет собой Продукт или семантику этого способа.

+0

но это проблема.Если у меня есть Bundles and Books, каждый должен иметь одинаковые 2 атрибута (Price and Paid) для каждой книги и пакета, так как пользователь может купить тот или другой, и если, например, купил, и я плачу bundle as PAID Я не уверен, как я узнаю, была ли куплена книга из упомянутого, если только я не пометлю книгу как купленную после покупки пакета. Держать его, как это, не убеждает меня, что это правильный путь. Помните, что книги и пачки имеют разные цены, а в моей голове разные вещи. Если вы все еще видите, что я усложняю, я ценю, если вы ... – SpaceDog

+0

... (продолжает) ... может быть немного более конкретным в том, как он должен быть разработан ... спасибо. – SpaceDog

+0

... (продолжает) ... ах, и просто для того, чтобы прояснить немного больше. Продукты и пучки имеют одинаковую систему чисел, я имею в виду, представляю пять книг: книги 1, 2, 3, 4 и 5. Теперь представьте, что число 6 представляет собой комплект, равный книгам 1, 2 и 3 ... и 7 - это набор, состоящий из книг 3 и 4. Я представлял себе этот путь, потому что, если я набираю пакеты и книги с разными системами, когда пользователь нажимает на представление таблицы, где все они перечислены, я должен проверить, является ли этот индекс книга связки. Если обе имеют одинаковую нумерацию, я просто пересылаю номер сущности, и он сообщает, что это такое. – SpaceDog

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