I come from the rdbms world and very new to graph databases. I have been struggling with modelling a neo4j database involving Student, University, Department, Program and Course entities. Some examples of these entities in the real world are -
-
'Carnegie Mellon University' has a 'Department of Computer Science' that offers a 'M.S in Human Assisted Information Systems' program that includes a course in 'Deep Learning'. Jane is a student of this program.
-
'Massachusetts Institute of Technology' has a 'Department of Information Technology' that offers a 'M.S in Software Engineering' program that includes a course in 'Deep Learning'. Jack is a student of this program and is friends with Jane.
If I start with have a query like 'Show me all universities where friends of Jane are studying a course in Deep Learning'..This is what I tried -
Student - [:IS_STUDYING] -> University
University - [:HAS_DEPARTMENT] -> Department
Department - [:OFFERS] - > Program
Program - [:INCLUDES] - > Course
The challenge I am facing is Department, Program and Course can have the same names. Is it recommended to use an identifier property to differentiate the same programs (or courses) offered by different universities? what would be the best way to model this?