领域数据库设计

时间:2016-04-05 07:49:27

标签: swift realm

我有一个示例数据库如下:

class Company:Object {
    dynamic var companyName = ""
    let employees = List<Employee>()
}

class Employee:Object {
    dynamic var companyName = "" // Is this required?
    dynamic var name = ""
    dynamic var age = ""
}

companyName中的Employee属性是否必要?如果不是,我将如何在查询中引用属于特定公司的员工。

1 个答案:

答案 0 :(得分:1)

您可以使用Realm的linkedObjects功能,如下所示:

class Company:Object {
    dynamic var companyName = ""
    let employees = List<Employee>()
}

class Employee:Object {
    dynamic var name = ""
    dynamic var age = ""
    var company: Company? {
        return linkingObjects(Company.self, forProperty: "employees").first
    }
}

这种方法可以节省您保持Employee对象的companyName属性准确的工作量,并且还可以节省您的空间,因为此处的公司未存储。如果您选择此路径,您可以轻松地获得Employee的公司对象:(如果Employee未与任何公司关联,则返回nil)

let aCompany = someEmployee.company

并回答你的问题

  

如果不是,我将如何在查询中引用属于特定公司的员工。

由于您将公司的员工存储在列表employees中,因此您已经有办法实现此目的,因此您可以像这样使用该属性来获取属于公司的员工:

let aCompanysEmployees = someCompany.employees