私はNeo4jを初めて使用し、音楽データベースを設定しようとして遊んでいます。明らかにこれはSong
がArtist
の子である親子関係、(あるかNeo4jで独自の子ノードを取得または作成する方法
Artist
Song
:シンプル開始するには、私はちょうど2つのラベルで遊びました
(:Artist {name:'name'})-[:RECORDED]->(:Song {title:'title'})
私がフォローを作っています。場合によっては複数のArtist
秒)し、次のようになりますINGの仮定:
- アーティスト名ユニーク
- 曲のタイトルは
- ないユニークな重複取り込みデータは私が何をしたいかの例を与えることを
避けられないですされています。
- 私はLeonard Cohenの「Hallelujah」を摂取しています。新しい
Artist
ノードとSong
ノードが作成され、RECORDED
の関係 - Jeff Buckleyが "Hallelujah"を摂取します。ここでも新しい
Artist
ノードとSong
ノードが作成され、RECORDED
の関係があります。最初の "Hallelujah"Song
は、この新しいグラフにはまったく関連付けられていません。 - もう一度Jeff Buckleyさんが "Hallelujah"を摂取します。何も起こりません。
- 私はJeff Buckleyの「ライラックワイン」を摂取しています。私たちは、私たちの古い
Artist
ノードを再利用するが、私はMERGE
は私が近づい使用して、伝えることができるものから、
RECORDED
関係で新しいSong
ノードを持って、しかしかなりあり(それはARTIST
の重複を停止しますが、ではありませんSONG
の)。 CREATE
を使用すると、ポイント番号3が正しく機能しません。
ARTIST
を追跡するSONG
ラベルに別のプロパティを追加することができます(それゆえ、私は一意にすることができます)。しかし、これは少し冗長でグラフデータベースの一義的なようですね。
誰もが、これらの関係や要件を実施する最も簡潔な方法について明るいアイデアを持っていますか?
これは、実際に作業を行い、今、構文は、これを達成するためにする必要がありますどのように複雑に見えたが、私はちょうど冗長 'artist'を使用するに傾いています私の 'ソング'のプロパティには ''マージ(a) - [:録音] - >(s:Song {タイトル: 'Hallelujah'、アーティスト: 'Leonard Cohen'} ' 'Artist'レーベルと一緒にやってみましょうか?) – Alec