Difference between revisions of "History:Object Model"

From MusicBrainz Wiki
(started new base for collaborative work on "wtf is actually the problem"[TM] :-) (Imported from MoinMoin))
 
(typos (Imported from MoinMoin))
Line 1: Line 1:
 
=MusicBrainz Object Model=
 
=MusicBrainz Object Model=
  
This page and its subpages form a document that tires to describe the reality that [[MusicBrainz]] deals with as abstract [[Object Model/Object|/Object]]s with [[Object Model/Property|Properties]] and [[Object Model/Relationship|/Relationship]]s. ''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 [[Next Generation Schema|NextGenerationSchema]].  
+
This page and its subpages form a document that tries to describe the reality that [[MusicBrainz]] deals with as abstract [[Object Model/Object|/Object]]s with [[Object Model/Property|Properties]] and [[Object Model/Relationship|/Relationship]]s. ''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 [[Next Generation Schema|NextGenerationSchema]].  
  
This document is written in the form of [[Collective We|CollectiveWe]], and you are invited to [[Be Bold|BeBold]] and write things like "we seem to (dis)agree" or "we have forgotten an important aspect...". This shold avoid lengthy threaded discussions. Those should better happen on the [[Experts Mailing List|ExpertsMailingList]].  
+
This document is written in the form of [[Collective We|CollectiveWe]], and you are invited to [[Be Bold|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 [[Experts Mailing List|ExpertsMailingList]].  
  
 
==Definitions==
 
==Definitions==

Revision as of 00:41, 18 November 2005

MusicBrainz Object Model

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 obejct model currently cosists of the following elements: