Ho una domanda generale sulla modellazione in un database di diagrammi che non riesco proprio a spiegarmi.Come modellare le relazioni del mondo reale in un database grafico (come Neo4j)?
Come si modella questo tipo di relazione: "Newton ha inventato il calcolo"?
In un simple graph, si potrebbe modellare in questo modo:
Newton (node) -> invented (relationship) -> Calculus (node)
... in modo che ci si dispone di un gruppo di "inventato" relazioni grafico come si è aggiunto più persone e invenzioni.
Il problema è, si inizia la necessità di aggiungere un po 'di proprietà al rapporto:
- invention_date
- influential_concepts
- influential_people
- books_inventor_wrote
... e vorrai iniziare a creare relazioni tra queste proprietà e altri nodi, come ad esempio:
- influential_people: legame con la persona nodi
- books_inventor_wrote: rapporto di prenotare nodi
Così ora sembra che le "relazioni del mondo reale" ("inventato") dovrebbe in realtà essere un nodo in il grafico, e il grafico dovrebbe essere simile a questo:
Newton (node) -> (relationship) -> Invention of Calculus (node) -> (relationship) -> Calculus (node)
e a complicare le cose più, altre persone sono hanno partecipato anche nell'invenzione di calcolo, in modo da il grafico diventa ora qualcosa di simile:
Newton (node) ->
(relationship) ->
Newton's Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
Leibniz (node) ->
(relationship) ->
Leibniz's Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
chiedo Quindi la domanda perché sembra non si desidera impostare le proprietà del database grafico vero e proprio "rapporto" oggetti, perché può essere utile ad un certo punto trattarli come nodi nel grafico.
È corretto?
Ho studiato lo Freebase Metaweb Architecture e sembra che stiano trattando tutto come un nodo. Ad esempio, Freebase ha l'idea di un Mediator/CVT, in cui è possibile creare un nodo "Prestazioni" che collega un nodo "Attore" a un nodo "Film", come qui: http://www.freebase.com/edit/topic/en/the_last_samurai. Non sono sicuro se questo è lo stesso problema però.
Quali sono alcuni principi guida che si utilizzano per capire se la "relazione del mondo reale" dovrebbe effettivamente essere un nodo grafico anziché una relazione grafica?
Se ci sono buoni libri su questo argomento mi piacerebbe sapere. Grazie!
risposta eccellente! questo chiarisce davvero le cose per me, grazie. –