]project-open[ : @This Wiki
Portrait

Welcome, Unregistered Visitor

Contents

User Profiles

3 registered users
 in last 24 hours

]po[ Category

Categories are used in ]project-open­[ to spe­cify 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

Categories and Referential Integrity

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.