// Contstraints CREATE CONSTRAINT ON (n:Participant) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:Participant) ASSERT n.chartmetricId IS UNIQUE; CREATE CONSTRAINT ON (n:GlobalParticipant) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:GlobalParticipant) ASSERT n.spotifyId IS UNIQUE; CREATE CONSTRAINT ON (n:SoundRecording) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:Track) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:Product) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:Label) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:Chart) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:Chart) ASSERT (n.platform, n.target, n.country, n.type, n.frequency) IS NODE KEY; CREATE CONSTRAINT ON (n:SocialAccount) ASSERT n.id IS UNIQUE; CREATE CONSTRAINT ON (n:SocialAccount) ASSERT n.url IS UNIQUE; CREATE CONSTRAINT ON (n:SocialAccountStat) ASSERT n.id IS UNIQUE; // Indexes CREATE INDEX ON :SoundRecording(isrc); CREATE INDEX ON :Track(spotifyId); CREATE INDEX ON :Track(appleMusicId); CREATE INDEX ON :Track(amazonId); CREATE INDEX ON :Track(deezerId); CREATE INDEX ON :Product(spotifyId); CREATE INDEX ON :Product(appleMusicId); CREATE INDEX ON :Product(amazonId); CREATE INDEX ON :Product(deezerId); CREATE INDEX ON :Label(name); CREATE INDEX ON :SocialAccountStat(timestamp); // Fulltext Indexes CALL db.index.fulltext.createNodeIndex( 'globalParticipantAndSoundRecordingNames', ['GlobalParticipant', 'SoundRecording'], ['name'] );