我使用xcode和核心数据创建数据模型。这是一个对象图,而不是实体关系模型,所以我有继承和多对多关系。我该如何建模某些实例无法修改?
这是我的问题: 我有一个名为Category的类或实体。某些类别是由应用创建的,不能由用户删除或修改。用户可以创建自己的类别。
经过思考,我找到了4种方法来模拟这个。看到图片:
我想最实际的解决方案只是把一个标志,isSystemCategory,但我不知道什么是从一个造型点的最佳解决方案。我猜第一个。一个称为Category的抽象类和2个后代,可编辑和可删除的UserCategory,以及不可修改的SystemCategory,用户不能删除它或修改。请注意,后代不会添加任何属性,关系或任何更改,所以,这就是我的问题的原因。这对建模者来说是否正确?
我想知道你的想法。谢谢。
很棒的回复。 “创建单独的子类型将防止一些讨厌的条件逻辑”,这正是我所想的。但是,我想知道是否使用核心数据(第一种情况下的类别是抽象类/实体),我可以发送如下请求:“属于此类别的所有食谱(即,用户或系统类别)”和相反,“属于用户创建的类别的食谱”。我认为是可能的,但不确定。非常感谢。 – Ricardo 2012-04-11 12:29:11
不客气。我不熟悉Core Data。然而,如果你不能要求(a)所有系统类别(系统类别的实例),(b)所有用户类别(用户类别的实例)和(c)所有类别(实例类别)。类别可能是抽象的 - 但在运行时仍然有它的实例(每个{User | System}类别实例同时是一个Category实例)。心连心。 – sfinnie 2012-04-11 20:39:22