The Data Model

The data model (aka the static model or the data dictionary) contains all of the data that is persisted within the applications transactions, grouped by logical entities, together with the relationships between those entities, as well as the calculations that the application can perform. This article provides a set of questions that should be asked during the analysis phase to build this model. These should provide the correct level of detail to enable the development team to build the application from your requirements.

Entities

Entities in this context are logical groupings of attributes that can have relationships with other entities and also contain calculations that are used to derive other attributes for the entity. These are equivalent to classes in UML terminology. The following is a list of questions that may be answered for each entity.

Title Question Explanation Condition
Name What is the name of your entity? The name of the entity most commonly used within the organisation. Required
Synonyms Can the entity be known by any other name? Any other names that the entity may be referred to as. Optional
Description Please provide a description of the entity? Description of the entity in plain English. Required
Domain Does this entity belong in a collection of related entities? It is often useful to group closely related entities together to make them easier to find. The name of the group of entities is the domain. Optional
Relationships Please identify other entities that this one is related to in the data model/domain? List of other entities that this one is related to and the relationship type. E.G. Many to many, One to many, Many to one etc.. Required
Personal Data Does this entity contain any personal data? Personal data is any information relating to an identified or identifiable natural person (‘data subject’). Any information that is clearly about a particular person is considered personal data.   The GDPR clarifies: “An identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person.” Required
Sensitive Personal Data Does this entity contain any sensitive personal data? Sensitive personal data is that data that relates to: Racial or ethnic origin, political opinions, religious or philosophical beliefs, trade union membership, genetic data, physical or mental health, sexuality, criminal offences and court proceedings.   Optional based on personal data answer.
Legal Basis What is the legal basis that is used to justify the processing of this personal data? Please select the legal basis that best describes the justification for holding this data. The following options are available: – Contractual necessity – Processing is necessary to enter into or perform a contract with the data subject. – Consent – The data subject has consented to this processing – Compliance with legal obligations – You have a legal obligation to perform such processing. – Vital interests – To protect the “vital interests” of the data subject – Public Interest – Performance of tasks carried out by a public authority or private organisation acting in the public interest. Optional based on personal data answer.
Security Classification What is the security classification of this entity? Select the option that best describes the most classified attributes within this component. The options are: – Public – Data can be freely shared with the public. – Internal use – Data should not be shared outside the organisation. – Restricted – Data should be protected and only available to those that need access to it – Confidential – Highest level of security protection. Based on answer to the personal data questions some of these options (public for personal and also internal use if the data is sensitive or financial) are not allowed.
Data Destruction Is this data destroyed when no longer required? Select yes if you wish to have a scheduled method to remove these records a certain period of time after a trigger event. This should always be yes when the component contains personal data. Required.
Trigger date attribute The date when which event occurs is used to determine when the data is destroyed? Select the date attribute, or add it if it doesn’t exist, that will be used to determine how long a component containing personal data must be maintained. An example of this is insurance companies that keep policy data for six years from policy expiry data . Required if data destruction is yes.
Duration before destruction How long after the trigger date will a record of this entity type be maintained in the application before destruction? An acceptance criteria that defines how long a record must be maintained before destruction. Required if data destruction is yes.
Attributes What attributes does this entity have? The attributes of the entity Required

Attributes

Attributes are the values that describe an instance of an entity E.G. Attributes of a person may be their first name, last name, date of birth, height, age etc.. These have their own characteristics that need to be specified and as such are also treated as components in their own rights.

Title Question Explanation Condition
Name What is the name of your attribute? The name of the attribute most commonly used within the organisation. Required
Synonyms Can the attribute be known by any other name? Any other names that the attribute may be referred to as. Optional
Description Please provide a description of the attribute? Description of the attribute in plain English. Required
Data Type What type of attribute is this? Valid values are: String, Number, Date and Time, Enumeration, Boolean. Required
Maximum Length Maximum length of text? For text what is the maximum allowable length? Optional as only required for string.
Regular Expression Do you have a regular expression that defines the rules for the format of this text string? A sequence of symbols and characters expressing a string or pattern. Optional for string. Not applicable for anything else
Number Format What is the length and precision of the number? For a number how long can it be and to how many decimal places will it be stored? Required for number.
Minimum Value What is the minimum allowed value? Enter the minimum allowed value that can be entered for this attribute. This can be negative. Optional as only required for numbers.
Maximum Value What is the maximum allowed value? Enter the maximum allowed value for the number. This is significant to developers as it determines the internal data type used by the developers. Optional as only required for numbers.
Entity Which entity is this an attribute of? Each attribute needs to belong to an entity as it will describe the entity. Required
Derived Is this attribute derived? Attributes can either be derived from other attributes or entered. Those that are entered require validation rules to determine allowed values based on type while derived values require a formula to calculate their value. Required
Formula How is this value calculated? Enter the formula here used to derive the attribute value. Optional as only required for derived values.
Valid values What are the allowable values for this data type? Where the data type is an enumeration then this holds the list of allowable values that the enumeration can take. Required for enumerations.
Unit What is the unit of measure for this number? This might be a currency, a distance, a weight etc.. Optional for numbers. Not required for other data types.
Rounding What rounding would you like to apply to this number? Numbers can be rounded up, rounded down or use a standard rounding. Required for numbers.
Nullable Is this field nullable? A nullable attribute is one that might not have a value. This is a useful designation for enumerations, dates and numbers where you want to be able to specify that you do not have a value for the attribute but don’t want to use a default. Required for numbers, enumerations, dates and Booleans.
Default Value Does this attribute have a default value? Where a field is not nullable it needs to be able to take a default value. This is the value that is loaded into the attribute when it is first created that can later be overwritten. E.G. you might default a start date to the current date. Required for all fields that are not nullable.