History:Object Model

From MusicBrainz Wiki
Revision as of 17:42, 18 November 2005 by Azertus (talk | contribs) (typo's (DonRedman was in a hurry ;)) (Imported from MoinMoin))
Jump to navigationJump to search

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.
  • 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

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: