[[TOC]]
= Generating MOLGENIS from scratch =
We will generate a new MOLGENIS by the example of a simple Address Book application:
a simple database having “Contacts” entities that each can have zero or more “Addresses”:
[[Image(address-book-screenshot.JPG)]]
== 1. Create the data model XML[[BR]] ==
Create a new xml file ‘addressbook_db.xml’ in the root of you application. This file will contain the MOLGENIS model. Use the following template:
{{{
#!xml
}}}
== 2. Add a “Contact” data type. ==
{{{
#!xml
}}}
== 3. Add properties to the “Contact” data type. ==
* A unique, automatic numeric identifier field that MOLGENIS will use to refer contacts.
{{{
#!xml
}}}
* A required and unique string field ‘displayname’ to have a unique label to find Contacts by. Note that if you provide no ‘type’ then type=”string” is implied.
{{{
#!xml
}}}
* Optional (‘nillable’) string fields for firstname, lastname and midinitials:
{{{
#!xml
}}}
* An optional field of type date for birthday:
{{{
#!xml
}}}
== 4. Similarly create a “Address” data type (to keep it simple we only do phone numbers): ==
* Entity address
{{{
!xml
}}}
* A unique, automatic numeric identifier field that MOLGENIS will use to refer addresses.
{{{
!xml
}}}
* Add the phone number field:
{{{
#!xml
}}}
* Add a field where the user can choose from an enumeration of options whether the address is ‘home’,’work’,or ‘mobile’:
{{{
#!xml
}}}
== 5. Finally we need to link the Addresses to each Contact. ==
* In the Address entity create a [http://en.wikipedia.org/wiki/Foreign_key ForeignKey] reference to Contact
{{{
#!xml
}}}
Note that the xref_field refers to unique field ‘contact_id’ in entity ‘Contact’. The xref_label attribute indicates that we want to view references to Contact by ‘displayname’ name instead of the numeric id.
Use of a meaningless numeric ‘id’ next to a meaningful ‘label’ enables us to change the ‘displayname’ name on Contact without the problem of also having to change this on each Address that refers to this contact.