【问题标题】:data modeling in neo4jNeo4j 中的数据建模
【发布时间】:2017-09-18 20:38:43
【问题描述】:

我是 neo4j 的新手,试图为数据库建模,该数据库包含 4 个 csv 格式的表 表一(员工资料) 员工(emp_no,birth_date,first_name,last_name,gender,hire_date)

表2(详细说明谁是哪个部门的经理) dept_maneger(emp_no ,dept_no ,from_date,to_date)

表 3(有关部门的详细信息) 部门(部门编号,部门名称)

表 4(关于哪个员工属于哪个部门的详细信息) dept_emp(emp_no ,dept_no ,from_date ,to_date)

我创建了节点,但我想使用 from date 和 to date 在部门节点员工节点之间建立关系。我该怎么做。

【问题讨论】:

    标签: neo4j data-modeling


    【解决方案1】:

    您没有提供有关您的 neo4j 数据模型的信息。这是您可以使用的简单数据模型的示例。

    您可以使用标记为Employee(适用于所有员工,包括经理)和Department 的节点。例如:

    (e:Employee {id: 987, birthdate: 222, firstName: 'Fred', lastName: 'Smith', gender: 'male', hired: 12})
    (manager:Employee {id: 221, birthdate: 111, firstName: 'George', lastName: 'Jones', gender: 'male', hired: 10})
    (d:Department {id: 324, name: 'Accounting'})
    

    以下是关系示例(类型为WORKS_IN):

    (e)-[:WORKS_IN {from: 123, to: 456}]->(d)
    (manager)-[:WORKS_IN {from: 234, to: 567, isManager: true}]->(d)
    

    所有职位的开始和结束日期都存储在WORKS_IN 关系中。如果一个人与非经理在同一部门工作,然后成为经理,他/她将有一个新的WORKS_IN 关系,并添加了isManager=true 属性(并且晋升日期为from 值)。

    【讨论】:

    • 我已经从 csv 上传数据并创建了节点和索引
    • 使用“file:///dept_manager.csv”作为行匹配(emp_no:Employee {emp_no:row.emp_no})匹配(dept_no:departments {dept_no:row)的定期提交加载 CSV .dept_no}) MERGE(Employee)-[:belongs_to{from_date: row.from_date,to_date: row.to_date}]->(departments);
    • 我试过这个查询来建立关系,但它不起作用
    • 你能告诉我它有什么问题吗?有什么替代方法
    猜你喜欢
    • 2014-06-06
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多