History:Object Model: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(add link (Imported from MoinMoin))
(list all examples with short descriptions. (Imported from MoinMoin))
Line 51: Line 51:
==Examples==
==Examples==


When we haave completed a first stab at the objects, we need to check whether they actually fit the reality. We will need a diverse set of examples for this:
Now that we have completed a first stab at the objects, we need to check whether they actually fit the reality. Big thatnks to everybody who contributed to this list in the [http://www.nabble.com/Next-Generation-Database-Schema-t614803c2885.html#a1641780 Next Generation Database Schema thread] on the [[Users Mailing List|UsersMailingList]].
# [[Object Model/Fela ITT Example|/FelaITTExample]], showing an album that is a merge of two previously released albums, and a track that is a merge of two previously seperated tracks.
* [[Object Model/Some Example|/SomeExample]]
* [[Object Model/Fela ITT Example|/FelaITTExample]]
# [[Object Model/Giant Xmas Example|/GiantXmasExample]], showing a Japanes one-time project as [[Album Artist|AlbumArtist]].
# [[Object Model/Shuuji And Akira Example|/ShuujiAndAkiraExample]], showing different ?[[Album Artist|AlbumArtist]] and ?[[Track Artists|TrackArtists]] plus confusing aliases and [[Performance Names|PerformanceNames]].
# [[Object Model/Terra Revolution Example|/TerraRevolutionExample]], showing one album with a single track being a megamix of another album.
# [[Object Model/Party People Example|/PartyPeopleExample]], showing an album containing one track being a megamix of all other tracks.
# [[Object Model/Cassetteboy Example|/CassetteboyExample]], showing an artist who changes his performance name for every track.
# [[Object Model/Run Time All Stars Example|/RunTimeAllStarsExample]], showing varying and vague artist collaboration that had only this one release.
# [[Object Model/Ahhco Example|/AhhcoExample]], showing one track by another artist on a single artist album.
# [[Object Model/Electric Light Orchestra Example|/ElectricLightOrchestraExample]], showing an album that has a different name in one country
# [[Object Model/Angeldust Example|/AngeldustExample]] by Beth ([http://musicbrainz.org/album/7fd95c15-e8c4-4239-9cbc-a2fdb468b966.html http://musicbrainz.org/album/7fd95c15-e8c4-4239-9cbc-a2fdb468b966.html] [http://musicbrainz.org/showalbum.html?albumid=87412 http://musicbrainz.org/showalbum.html?albumid=87412])
# [[Object Model/Chants Magnetiques Example|/ChantsMagnetiquesExample]] , showing two localized variants onf one album.
# [[Object Model/Don Sebsky Example|/DonSebskyExample]], whowing the case of a Jazz composer.
# [[Tracks With Multiple Artists|TracksWithMultipleArtists]] contains an example of its own, showing tracks that consist of more than one song by more than one artist
# [[Object Model/Queen Platinum Collection Example|/QueenPlatinumCollectionExample]], showing albums that were re-released as a box set without remastering.
# [[Object Model/Gyllene Tider Example|/GylleneTiderExample]], showing albums that were re-released as a box set without remastering, and later as single remastered albums.
# [[Object Model/Jesus Christ Superstar Example|/JesusChristSuperstarExample]], which has tracks containing two songs and poses a challenge to the [[Track Group|TrackGroup]] and AR.
# [[Object Model/Depeche Mode Remixes Example|/DepecheModeRemixesExample]], showing identical discs on different releases and other problems.


[[Category:To Be Reviewed]] [[Category:Development]]
[[Category:To Be Reviewed]] [[Category:Development]]

Revision as of 15:23, 28 November 2005

MusicBrainz Object Model

Status: Attention.png This page NeedsIntertwingling

This page and its subpages form a document that tries to describe the reality that MusicBrainz deals with as abstract /Objects with Properties and /Relationships. This document is not about a database schema. Its purpose is to understand what we are dealing with. Of course, this effort is strongly related to the creation of a NextGenerationSchema.

This document is written in the form of CollectiveWe, and you are invited to BeBold and write things like "we seem to (dis)agree" or "we have forgotten an important aspect...". This should avoid lengthy threaded discussions. Those should better happen on the ExpertsMailingList.

Definitions

When talking about object definitions we need a well defined language. Here are the most important ones:

  • An object is a "thing" in the object model. It does not have to be physical, but it needs boundaries that define what is and what is not an object of this class. Each object class has a SubPage of its own of the form /ThisObject. From the perspective of OO programming we are actually talking about object classes, but it is tedious to always say "an object of the xy class".
    • Note that AdvancedRelationships are objects in the ObjectModel, since they have properties. An object-relationship cannot have properties.
  • A relationship is what links two objects together. This is not a relation as in relational database. So please do not talk about 1:n or n:m relations. A relationship has two such pairs. E.g. An AObject can own 0--many BObjects. A BObject is owned by 0--1 AObjects.
  • An entity is an actual element of the database schema. While this document is not about entities, we might want to talk about them nonetheless. E.g. which objects should be merged into one entity?

These were the most important. The rest is for later.

The Object Model

The actual object model currently consists of the following elements:

There is no new model yet but only some dumped ideas about artist linking, multiple artists and other stuff which is to be worked into this model: /ArtistThoughts

There is a graph that shows the overall structure of this model. It is not complete, nor perfect nor anything but an orientation, but here it is: ObjectModel v0.1 (and the corresoponding dot source v0.1).

Examples

Now that we have completed a first stab at the objects, we need to check whether they actually fit the reality. Big thatnks to everybody who contributed to this list in the Next Generation Database Schema thread on the UsersMailingList.

  1. /FelaITTExample, showing an album that is a merge of two previously released albums, and a track that is a merge of two previously seperated tracks.
  2. /GiantXmasExample, showing a Japanes one-time project as AlbumArtist.
  3. /ShuujiAndAkiraExample, showing different ?AlbumArtist and ?TrackArtists plus confusing aliases and PerformanceNames.
  4. /TerraRevolutionExample, showing one album with a single track being a megamix of another album.
  5. /PartyPeopleExample, showing an album containing one track being a megamix of all other tracks.
  6. /CassetteboyExample, showing an artist who changes his performance name for every track.
  7. /RunTimeAllStarsExample, showing varying and vague artist collaboration that had only this one release.
  8. /AhhcoExample, showing one track by another artist on a single artist album.
  9. /ElectricLightOrchestraExample, showing an album that has a different name in one country
  10. /AngeldustExample by Beth (http://musicbrainz.org/album/7fd95c15-e8c4-4239-9cbc-a2fdb468b966.html http://musicbrainz.org/showalbum.html?albumid=87412)
  11. /ChantsMagnetiquesExample , showing two localized variants onf one album.
  12. /DonSebskyExample, whowing the case of a Jazz composer.
  13. TracksWithMultipleArtists contains an example of its own, showing tracks that consist of more than one song by more than one artist
  14. /QueenPlatinumCollectionExample, showing albums that were re-released as a box set without remastering.
  15. /GylleneTiderExample, showing albums that were re-released as a box set without remastering, and later as single remastered albums.
  16. /JesusChristSuperstarExample, which has tracks containing two songs and poses a challenge to the TrackGroup and AR.
  17. /DepecheModeRemixesExample, showing identical discs on different releases and other problems.