Data model changes and their impact levels
The data model changes are classified into three levels according to their impacts on the data model: Low, Medium and High.
When you made changes to a data model, the database schema will be updated accordingly.
The following table lists some examples of the data model changes, their corresponding impact level, and the results in the database:
Action | Impact level | Result |
---|---|---|
Add a new mandatory element without a default value | High | The entity table is dropped and recreated with the new column added. |
Add or remove anonymous types | High | All entity types using anonymous types may be dropped and recreated. |
Change an optional simple type element to a mandatory one without a default value (null values exist for the given element) | High | The entity table is dropped and recreated. |
Change an optional complex type element to a mandatory one | High | The entity table is dropped and recreated. |
Change the type of an element from one simple type to another | High | Not applicable |
Change the maximum occurrence of an element from 1 to n or vice versa | High | The entity table is dropped and recreated. |
Change the value of totalDigits or fractionDigits of a decimal element | High | The entity table is dropped and recreated. |
Make changes in inheritance | High | All tables involved in the inheritance tree are dropped and recreated. |
Make high impact changes to an entity that has foreign key relationships | High | The entity table is dropped and recreated, together with the tables of all other entities that have foreign key relationships with this entity. |
Remove a mandatory or optional simple type element in a complex type element | High | The entity table is dropped and recreated. |
Remove a mandatory or optional complex type element | High | The entity table is dropped and recreated. |
Change an optional simple type element to a mandatory one with a default value (null values exist for the given element) | Medium | The column in the entity table will be updated with the default value. |
Remove a mandatory or optional simple type element immediately under an entity | Medium | The column in the entity table will be removed. |
Remove a mandatory or optional foreign key element | Medium | The column in the entity table will be removed. |
Remove an entity | Medium | The entity table will be removed. |
Rename an optional element | Medium | A column with the old name remains and a new column with a new name is created. |
Add a new optional simple type element | Low | A new column is added to the entity table. |
Add a new optional complex type element | Low | A new column is added to the entity table, and a new table is created for the complex type. |
Add a new element of string, boolean, or numeric type with a default value | Low | A new column is added to the entity table with the default value. |
Change a mandatory simple or complex type element to an optional one | Low | The column definition in the entity table will be changed accordingly. |
Change an optional simple type element to a mandatory one (no null values exist for the given element) | Low | The column definition in the entity table will be changed accordingly. |
Change an optional multi-occurrence element to a mandatory multi-occurrence one or vice versa | Low | The column definition in the entity table will be changed accordingly. |
Increase the length of a string element for DB2/Oracle The original length is less than or equal to the maximum length of the database VARCHAR type, and the updated length is greater than the maximum length. For more information on this maximum length, see the next table. |
High | The entity table is dropped and recreated, the type of the element is converted from VARCHAR to CLOB in the database, and the length of the column is increased accordingly. |
Increase the length of a string element for MS SQL
Server/MySQL/PostgreSQL The original length is less than or equal to the maximum length of the database VARCHAR type, and the updated length is greater than the maximum length. For more information on this maximum length, see the next table. |
Low | The type of the element is converted from VARCHAR to NVARCHAR(MAX)/TEXT/TEXT in the database, and the length of the column is increased accordingly. |
Increase the length of a string element (except the above two cases) | Low | The length of the column is increased accordingly. |
Decrease the length of a string element The original length is greater than the maximum length of the database VARCHAR type, and the updated length is less than or equal to the maximum length. For more information on this maximum length, see the next table. |
High | The entity table is dropped and recreated, the type of the element is converted to VARCHAR in the database, and the length of the column is decreased accordingly. |
Decrease the length of a string element Both the original length and the updated length are less than or equal to the maximum length of the database VARCHAR type. For more information on this maximum length, see the next table. |
High | The entity table is dropped and recreated, and the length of the column is decreased accordingly. |
Decrease the length of a string element (except the above two cases) | Low | The length of the column is decreased accordingly. |
Database | Maximum length of the VARCHAR type (bytes) |
---|---|
H2 | 255 |
DB2 | 255 |
MySQL | 255 |
MS SQL Server | 4000 |
Oracle | 4000 |
PostgreSQL | 255 |