Schema

Marshall Thompson edited this page Jul 28, 2016 · 14 revisions
Clone this wiki locally

The mbrainz-sample schema is an adaptation of a subset of the full MusicBrainz schema. We didn't include some entities, and we made some simplifying assumptions and combined some entities. In particular:

  • We omit any notion of Work
  • We combine Track, Tracklist and Recording into simply "track"
  • We renamed Release group to "abstractRelease"

Abstract Release vs. Release vs. Medium

NOTE: abstractRelease data are omitted from the 1968-1973 subset database.

(Adapted from the MusicBrainz schema docs)

An "abstractRelease" is an abstract "album" entity (e.g. "The Wall" by Pink Floyd). A "release" is something you can buy in your music store (e.g. the 1984 US vinyl release of "The Wall" by Columbia, as opposed to the 2000 US CD release by Capitol Records).

Therefore, when you query for releases e.g. by name, you may see duplicate releases. To find just the "work of art" level album entity, query for abstractRelease.

The media are the physical components comprising a release (disks, CDs, tapes, cartridges, piano rolls). One medium will have several tracks, and the total tracks across all media represent the track list of the release.

Relationship Diagram

Mbrainz Relationships

Entities

abstractRelease

NOTE: abstractRelease data are omitted from the 1968-1973 subset database.

attribute type cardinality
:abstractRelease/name indexed string one
:abstractRelease/artistCredit fulltext string one
:abstractRelease/gid uniquely identifying, indexed uuid one
:abstractRelease/type enum ref, one of:
  • :release.type/album
  • :release.type/single
  • :release.type/ep
  • :release.type/audiobook
  • :release.type/other
one
:abstractRelease/artists ref many

artist

attribute type cardinality
:artist/startYear indexed long one
:artist/startMonth long one
:artist/startDay long one
:artist/endYear long one
:artist/endMonth long one
:artist/endDay long one
:artist/sortName indexed string one
:artist/name indexed, fulltext string one
:artist/gid uniquely identifying, indexed uuid one
:artist/country ref one
:artist/type enum ref, one of:
  • :artist.type/person
  • :artist.type/group
  • :artist.type/other
one
:artist/gender enum ref, one of:
  • :artist.gender/male
  • :artist.gender/female
  • :artist.gender/other
one

country

attribute type cardinality
:country/name unique string one

label

attribute type cardinality
:label/startYear indexed long one
:label/startMonth long one
:label/startDay long one
:label/endYear long one
:label/endMonth long one
:label/endDay long one
:label/sortName indexed string one
:label/name indexed, fulltext string one
:label/gid uniquely identifying, indexed uuid one
:label/country ref one
:label/type enum ref, one of:
  • :label.type/distributor
  • :label.type/holding
  • :label.type/production
  • :label.type/originalProduction
  • :label.type/bootlegProduction
  • :label.type/reissueProduction
  • :label.type/publisher
one

language

attribute type cardinality
:language/name unique string one

medium

attribute type cardinality
:medium/position long one
:medium/trackCount long one
:medium/format enum ref, one of:
  • :medium.format/dvdVideo
  • :medium.format/laserDisc
  • :medium.format/cd
  • :medium.format/hddvd
  • :medium.format/vhs
  • :medium.format/svcd
  • :medium.format/dcc
  • :medium.format/cdr
  • :medium.format/slotMusic
  • :medium.format/bluray
  • :medium.format/waxCylinder
  • :medium.format/cartridge
  • :medium.format/umd
  • :medium.format/miniDisc
  • :medium.format/vinyl
  • :medium.format/vinyl12
  • :medium.format/sacd
  • :medium.format/other
  • :medium.format/dualDisc
  • :medium.format/vinyl10
  • :medium.format/dvd
  • :medium.format/pianoRoll
  • :medium.format/betamax
  • :medium.format/vcd
  • :medium.format/dat
  • :medium.format/reel
  • :medium.format/vinyl7
  • :medium.format/dvdAudio
  • :medium.format/digitalMedia
  • :medium.format/hdcd
  • :medium.format/videotape
  • :medium.format/usbFlashDrive
  • :medium.format/cassette
  • :medium.format/cd8cm
one
:medium/tracks component ref many

release

attribute type cardinality
:release/year indexed long one
:release/month long one
:release/day long one
:release/artistCredit fulltext string one
:release/status indexed string one
:release/barcode string one
:release/name indexed, fulltext string one
:release/gid uniquely identifying, indexed uuid one
:release/artists ref many
:release/abstractRelease ref one
:release/language ref one
:release/media component ref many
:release/packaging enum ref, one of:
  • :release.packaging/jewelCase
  • :release.packaging/slimJewelCase
  • :release.packaging/digipak
  • :release.packaging/none
  • :release.packaging/keepCase
  • :release.packaging/cardboardPaperSleeve
  • :release.packaging/other
one
:release/script ref one
:release/label ref one
:release/country ref one

script

attribute type cardinality
:script/name unique string one

track

attribute type cardinality
:track/position long one
:track/duration indexed long one
:track/artistCredit fulltext string one
:track/name indexed, fulltext string one
:track/artists ref many