.pk D_Number a_ID_
ref.nn E_Mantis_bug_table a_bug_id
. D_str_250 a_title
. D_str_250 a_description
. D_str_250 a_diskfile
. D_str_250 a_filename
. D_str_250 a_folder
. D_Number a_filesize
. D_str_250 a_file_type
. D_Timestamp a_date_added
. D_BLOB a_content
E_Mantis_bug_history_table . . SQL
.pk D_Number a_ID_
ref. E_Mantis_user_table a_user_id
ref.nn E_Mantis_bug_table a_bug_id
. D_Timestamp a_date_modified
. D_str_32 a_field_name
. D_str_128 a_old_value
. D_str_128 a_new_value
. D_Number a_Type_
E_Mantis_bug_monitor_table . . SQL
ref.pk E_Mantis_user_table a_user_id
ref.pk E_Mantis_bug_table a_bug_id
E_Mantis_bug_relationship_table . . SQL
.pk D_Number a_ID_
ref.nn E_Mantis_bug_table a_source_bug_id
ref. E_Mantis_bug_table a_destination_bug_id
. D_Number a_relationship_type
E_Mantis_bug_table . . SQL
.pk D_Number a_ID_
. D_Number a_project_id
ref. E_Mantis_user_table a_reporter_id
ref. E_Mantis_user_table a_handler_id
ref. E_Mantis_bug_table a_duplicate_id
. D_Number a_priority
. D_Number a_severity
. D_Number a_reproducibility
. D_Number a_status
. D_Number a_resolution
. D_Number a_projection
. D_str_64 a_category
. D_Timestamp a_date_submitted
. D_Timestamp a_last_updated
. D_Number a_eta
. D_Number a_bug_text_id
. D_str_32 a_os
. D_str_32 a_os_build
. D_str_32 a_platform
. D_str_64 a_version
. D_str_64 a_fixed_in_version
. D_str_32 a_build
. D_Number a_profile_id
. D_Number a_view_state
. D_str_128 a_summary
.nn D_Number a_sponsorship_total
. D_Number a_sticky
<-- is target of: E_Mantis_sponsorship_table.bug_id
<-- is target of: E_Mantis_custom_field_string_table.bug_id
<-- is target of: E_Mantis_bugnote_table.bug_id
<-- is target of: E_Mantis_bug_table.duplicate_id
<-- is target of: E_Mantis_bug_relationship_table.destination_bug_id
<-- is target of: E_Mantis_bug_relationship_table.source_bug_id
<-- is target of: E_Mantis_bug_monitor_table.bug_id
<-- is target of: E_Mantis_bug_history_table.bug_id
<-- is target of: E_Mantis_bug_file_table.bug_id
E_Mantis_bug_text_table . . SQL
.pk D_Number a_ID_
. D_str_4000 a_description
. D_str_4000 a_steps_to_reproduce
. D_str_4000 a_additional_information
E_Mantis_bugnote_table . . SQL
.pk D_Number a_ID_
ref.nn E_Mantis_bug_table a_bug_id
ref. E_Mantis_user_table a_reporter_id
. D_Number a_bugnote_text_id
. D_Number a_view_state
. D_Timestamp a_date_submitted
. D_Timestamp a_last_modified
. D_Number a_note_type
. D_str_250 a_note_attr
E_Mantis_bugnote_text_table . . SQL
.pk D_Number a_ID_
. D_str_4000 a_note
E_Mantis_config_table . . SQL
.pk D_str_64 a_config_id
.pk D_Number a_project_id
ref.pk E_Mantis_user_table a_user_id
. D_Number a_access_reqd
. D_Number a_Type_
. D_str_4000 a_value
E_Mantis_custom_field_project_table . . SQL
.pk D_Number a_field_id
.pk D_Number a_project_id
. D_Number a_sequence
E_Mantis_custom_field_string_table . . SQL
.pk D_Number a_field_id
ref.pk E_Mantis_bug_table a_bug_id
. D_str_255 a_value
E_Mantis_custom_field_table . . SQL
.pk D_Number a_ID_
.nn D_str_64 a_name
. D_Number a_Type_
. D_str_255 a_possible_values
. D_str_255 a_default_value
. D_str_255 a_valid_regexp
. D_Number a_access_level_r
. D_Number a_access_level_rw
. D_Number a_length_min
. D_Number a_length_max
. D_Number a_advanced
. D_Number a_require_report
. D_Number a_require_update
. D_Number a_display_report
. D_Number a_display_update
. D_Number a_require_resolved
. D_Number a_display_resolved
. D_Number a_display_closed
. D_Number a_require_closed
E_Mantis_filters_table . . SQL
.pk D_Number a_ID_
ref. E_Mantis_user_table a_user_id
. D_Number a_project_id
. D_Number a_is_public
. D_str_64 a_name
. D_str_4000 a_filter_string
E_Mantis_news_table . . SQL
.pk D_Number a_ID_
. D_Number a_project_id
. D_Number a_poster_id
. D_Timestamp a_date_posted
. D_Timestamp a_last_modified
. D_Number a_view_state
. D_Number a_announcement
. D_str_64 a_headline
. D_str_4000 a_body
E_Mantis_project_category_table . . SQL
.pk D_Number a_project_id
.pk D_str_64 a_category
ref. E_Mantis_user_table a_user_id
E_Mantis_project_file_table . . SQL
.pk D_Number a_ID_
. D_Number a_project_id
. D_str_250 a_title
. D_str_250 a_description
. D_str_250 a_diskfile
. D_str_250 a_filename
. D_str_250 a_folder
. D_Number a_filesize
. D_str_250 a_file_type
. D_Timestamp a_date_added
. D_BLOB a_content
E_Mantis_project_hierarchy_table . . SQL
.pk D_Number a_child_id
. D_Number a_parent_id
E_Mantis_project_table . . SQL
.pk D_Number a_ID_
.nn D_str_128 a_name
. D_Number a_status
. D_Number a_enabled
. D_Number a_view_state
. D_Number a_access_min
. D_str_250 a_file_path
. D_str_4000 a_description
E_Mantis_project_user_list_table . . SQL
.pk D_Number a_project_id
ref.pk E_Mantis_user_table a_user_id
. D_Number a_access_level
E_Mantis_project_version_table . . SQL
.pk D_Number a_ID_
.nn D_Number a_project_id
.nn D_str_64 a_version
. D_Timestamp a_date_order
. D_str_4000 a_description
. D_Number a_released
E_Mantis_sponsorship_table . . SQL
.pk D_Number a_ID_
ref.nn E_Mantis_bug_table a_bug_id
ref. E_Mantis_user_table a_user_id
. D_Number a_amount
. D_str_128 a_logo
. D_str_128 a_url
. D_Number a_paid
. D_Timestamp a_date_submitted
. D_Timestamp a_last_updated
E_Mantis_tokens_table . . SQL
.pk D_Number a_ID_
. D_Number a_owner
. D_Number a_Type_
. D_Timestamp a_timestamp
. D_Timestamp a_expiry
. D_str_4000 a_value
E_Mantis_user_pref_table . . SQL
.pk D_Number a_ID_
ref. E_Mantis_user_table a_user_id
. D_Number a_project_id
. D_Number a_default_profile
. D_Number a_default_project
. D_Number a_advanced_report
. D_Number a_advanced_view
. D_Number a_advanced_update
. D_Number a_refresh_delay
. D_Number a_redirect_delay
. D_str_4 a_bugnote_order
. D_Number a_email_on_new
. D_Number a_email_on_assigned
. D_Number a_email_on_feedback
. D_Number a_email_on_resolved
. D_Number a_email_on_closed
. D_Number a_email_on_reopened
. D_Number a_email_on_bugnote
. D_Number a_email_on_status
. D_Number a_email_on_priority
. D_Number a_email_on_priority_min_severity
. D_Number a_email_on_status_min_severity
. D_Number a_email_on_bugnote_min_severity
. D_Number a_email_on_reopened_min_severity
. D_Number a_email_on_closed_min_severity
. D_Number a_email_on_resolved_min_severity
. D_Number a_email_on_feedback_min_severity
. D_Number a_email_on_assigned_min_severity
. D_Number a_email_on_new_min_severity
. D_Number a_email_bugnote_limit
. D_str_32 a_language
E_Mantis_user_print_pref_table . . SQL
ref.pk E_Mantis_user_table a_user_id
. D_str_27 a_print_pref
E_Mantis_user_profile_table . . SQL
.pk D_Number a_ID_
ref. E_Mantis_user_table a_user_id
. D_str_32 a_platform
. D_str_32 a_os
. D_str_32 a_os_build
. D_str_4000 a_description
E_Mantis_user_table . . SQL
.pk D_Number a_ID_
. D_str_32 a_username
. D_str_64 a_realname
. D_str_64 a_email
. D_str_32 a_Password_
. D_Timestamp a_date_created
. D_Timestamp a_last_visit
. D_Number a_enabled
. D_Number a_protected
. D_Number a_access_level
. D_Number a_login_count
. D_Number a_lost_password_request_count
. D_Number a_failed_login_count
.nn D_str_64 a_cookie_string
<-- is target of: E_Mantis_user_profile_table.user_id
<-- is target of: E_Mantis_user_print_pref_table.user_id
<-- is target of: E_Mantis_user_pref_table.user_id
<-- is target of: E_Mantis_sponsorship_table.user_id
<-- is target of: E_Mantis_project_user_list_table.user_id
<-- is target of: E_Mantis_project_category_table.user_id
<-- is target of: E_Mantis_filters_table.user_id
<-- is target of: E_Mantis_config_table.user_id
<-- is target of: E_Mantis_bugnote_table.reporter_id
<-- is target of: E_Mantis_bug_table.handler_id
<-- is target of: E_Mantis_bug_table.reporter_id
<-- is target of: E_Mantis_bug_monitor_table.user_id
<-- is target of: E_Mantis_bug_history_table.user_id
end of o.mantis.er1 ERD
How to read the ERD above:
Prefixes E_, R_, S_, A_, e_ in front of a name show what kind of
concept the name x in question is denoting:
E_x is an entity class. Note however:
We write e_x instead of E_x where we want to say that E_x is
occurring in the role of a superclass.
If a class E_x1 is a specialization of another class E_x,
i.e. if each instance of E_x1 can be also be seen as an
instance of type E_x, then e_x is meant to be the group of
all attributes of E_x1 defined in E_x already (the set of
all inherited attributes).
R_x is entity class E_x representing entity associations that are
not of cardinality 1:n or n:1 (they need not even be binary
relations).
A_x is an attribute of an entity class, same as a_x() in C++ or
Java.
S_x is a complex attribute (i.e. a set of attributes),
same as a_x() in C++ or Java.
We write a_x where we do not care to see whether attribute x is
complex or not.
D_x is a domain, i.e. an attribute type.
pk says that this attribute is part of the entity's primary key.
nn says that this is a NOT NULL attribute.
c: is to mark core entity types (types that do not specialize
any other type). Types not marked as core entity types inherit
structure from their - always unique - direct supertype).
A Core Type is an entity type that is not a specialization of
another entity type in the model shown.
: Specialisation hierarchies are shown in this form:
-------------------------------------------------
|
E_x3
| e_x1
| e_x2
. E_x3 structure not inherited
means: E_x3 specializes E_x2 (so that all structure of E_x2 is also
structure of E_x3). E_x3 is a direct subtype of E_x2, and E_x2 is a
direct subtype of E_x1.
: Entity Relationship Structure is shown as follows:
-------------------------------------------------
: E_x1
->> set of E_x2 a_Name
means: Given any object x1 of type E_x1, x1.a_Name() is an instance of
a List h_Name defined in the ERD (the Name can be seen as describing the
role of the list members in relation to x1).
: E_x1
. E_x2 x3 (to be read as: <-- E_x2.x3 )
means: Each value E_x1.A_x3 is primary key of an entity of type E_x2,
so that ( E_x1, E_x2 ) is a relation of cardinality (m:1) or (1:1).
: E_x1
. D_x2 x3
. S_x2 x3
means: Each value E_x1.A_x3 is an attribute of type D_x2 (resp.
S_x2, S_x2 a set of attributes such that records of type S_x2 make
sense in themselves).
R_x1 is a type E_x1 that can be interpreted as a relationship type
of a specific dimension n, 2 <= n.
Note: Classes E_x without relation structure --> or <<- tend to
be superfluous. They form a self-contained ERD model which quite often
does not make sense in isolation.
Here is an example: Classes meant to be enumerations such as e.g.
: E_Category
. A_Value D_ValueName
. A_Semantics D_Comment
. A_ObsoleteSince D_Date
need usually not exist in form of a separate table. To model it in form
of a domain D_Category together with an attribute A_ObsoleteSince in the
table E_DomainValues would be better:
: E_DomainValues
. A_Domain D_DomainName
. A_Value D_ValueName
. A_Semantics D_Comment
. A_ObsoleteSince D_Date
To have such a table documenting the semantics of all the values of
enumeration domains is recommended and definitely helpful (the fact that
most developers do not create this table is really bad practice).
  |
        | Where Domain Types are used   Here you can see whether there are Domain Types no longer in use. |
| BLOB :
. E_Mantis_bug_file_table . E_Mantis_project_file_table | | ||
| Number :
. E_Mantis_bug_file_table . E_Mantis_bug_history_table . E_Mantis_bug_monitor_table . E_Mantis_bug_relationship_table . E_Mantis_bug_table . E_Mantis_bug_text_table . E_Mantis_bugnote_table . E_Mantis_bugnote_text_table . E_Mantis_config_table . E_Mantis_custom_field_project_table . E_Mantis_custom_field_string_table . E_Mantis_custom_field_table . E_Mantis_filters_table . E_Mantis_news_table . E_Mantis_project_category_table . E_Mantis_project_file_table . E_Mantis_project_hierarchy_table . E_Mantis_project_table . E_Mantis_project_user_list_table . E_Mantis_project_version_table . E_Mantis_sponsorship_table . E_Mantis_tokens_table . E_Mantis_user_pref_table . E_Mantis_user_print_pref_table . E_Mantis_user_profile_table . E_Mantis_user_table | | ||
| Timestamp :
. E_Mantis_bug_file_table . E_Mantis_bug_history_table . E_Mantis_bug_table . E_Mantis_bugnote_table . E_Mantis_news_table . E_Mantis_project_file_table . E_Mantis_project_version_table . E_Mantis_sponsorship_table . E_Mantis_tokens_table . E_Mantis_user_table | | ||
| str_128 :
. E_Mantis_bug_history_table . E_Mantis_bug_table . E_Mantis_project_table . E_Mantis_sponsorship_table | | ||
| str_250 :
. E_Mantis_bug_file_table . E_Mantis_bugnote_table . E_Mantis_project_file_table . E_Mantis_project_table | | ||
| str_255 :
. E_Mantis_custom_field_string_table . E_Mantis_custom_field_table | | ||
| str_27 :
. E_Mantis_user_print_pref_table | | ||
| str_32 :
. E_Mantis_bug_history_table . E_Mantis_bug_table . E_Mantis_user_pref_table . E_Mantis_user_profile_table . E_Mantis_user_table | | ||
| str_4000 :
. E_Mantis_bug_text_table . E_Mantis_bugnote_text_table . E_Mantis_config_table . E_Mantis_filters_table . E_Mantis_news_table . E_Mantis_project_table . E_Mantis_project_version_table . E_Mantis_tokens_table . E_Mantis_user_profile_table | | ||
| str_4 :
. E_Mantis_user_pref_table | | ||
| str_64 :
. E_Mantis_bug_table . E_Mantis_config_table . E_Mantis_custom_field_table . E_Mantis_filters_table . E_Mantis_news_table . E_Mantis_project_category_table . E_Mantis_project_version_table . E_Mantis_user_table |