Categories are used in ]project-open[ to specify the "Type" and "Status" of most business objects. They define the values of most drop-down boxes in the system.
Categories are actually not a real object type, but they behave very similarly, so we have included them in this section.
For a view of all available categories see: Categories
For further discussion about about categories and their function in the data-model see: Categories
Normally it is recommended (according to many database design books) to create a separate table for each of these types or stati, in order to be able to use full Referential Integrity and to enhance the types and stati by additional information. However, this approach typically leads to a large number of tables.
Instead we have chosen to follow the model of the ArsDigita Intranet 3.4 to use categories where possible, in order to reduce code size and to allow for easy adaptation to different companies.
Therefore, each database object will contain two integer identifier values (one each for "Type" and "Status") that are utilized to look-up the corresponding values contained in the global list i.e. im_categories.
The contents of the im_categories table:
create table categories ( category_id integer constraint categories_pk primary key, category varchar(50) not null, category_description varchar(4000), category_type varchar(50), profiling_weight integer default 1 constraint im_profiling_weight_ck check(profiling_weight >= 0), enabled_p char(1) default 'f' constraint im_enabled_p_ck check(enabled_p in ('t','f')), mailing_list_info varchar(4000) );
There is a category editor available in the /intranet/admin/categories/ section of ]project-open[ to dynamically change the system categories.