Алгоритм виконання операцій з таблицями та полями в базі даних
1. Видалення таблиць
- Крок I. Аналіз
-
-
Визначити таблиці, які необхідно видалити (включаючи історичні таблиці).
-
Визначити чи є в інших таблицях поля з foreign keys, що посилаються на таблиці, які необхідно видалити.
-
Визначити Search Conditions, які створені для таблиць з перших двох пунктів.
-
Визначити Analytics Views, в яких використовуються поля таблиць з перших двох пунктів.
-
- Крок II. Видалення
-
Створити changeSet-и для:
-
видалення Analytics Views;
-
видалення Search Conditions;
-
видалення таблиць та історичних таблиць (для перших двох пунктів в першому кроці).
-
- Крок III. Додавання
-
Створити changeSet-и для:
-
створення таблиць з яких видалили поля з foreign keys, що посилались на видалені таблиці;
-
створення Search Conditions для таблиць, в яких видалили поля з foreign keys, що посилалися на таблиці, які видалили;
-
створення Analytics Views для таблиць, в яких видалили поля з foreign keys, що посилалися на таблиці, які видалили.
-
2. Додавання таблиць
- Крок I. Аналіз
-
-
Визначити таблиці, які необхідно додати.
-
Визначити інші таблиці, що будуть посилатися на таблиці (нові поля з foreign keys), які необхідно додати.
-
Визначити Search Conditions, які треба створити для нових таблиць та Search Conditions, в які треба додати поля з foreign keys на нові таблиці.
-
Визначити Analytics Views, в яких будуть використовуватись поля нових таблиць та Analytics Views, в яких будуть використовуватись поля з foreign keys на нові таблиці.
-
- Крок II. Видалення
-
Створити changeSet-и для:
-
видалення наявних Search Conditions, в яких будуть використовуватись поля з foreign keys на нові таблиці (якщо необхідні зміни в наявних Search Conditions);
-
видалення наявних Analytics Views, в яких будуть використовуватись поля з foreign keys на нові таблиці (якщо необхідні зміни в наявних Analytics Views).
-
- Крок III. Додавання
-
Створити changeSet-и для:
-
створення таблиць (історичні таблиці створюються автоматично);
-
додавання полів з foreign keys на додані таблиці в наявні таблиці;
-
створення Search Conditions для доданих таблиць та створення Search Conditions для таблиць, в які додали поля з foreign keys на додані таблиці;
-
створення Analytics Views для доданих таблиць та створення Analytics Views для таблиць, в які додали поля з foreign keys на додані таблиці.
-
3. Додавання полів в таблицях
- Крок I. Аналіз
-
-
Визначити таблиці, в які необхідно додати поля.
-
Визначити інші таблиці, в яких додані поля будуть використані як foreign keys.
-
Визначити Search Conditions, що створені для таблиць, в які необхідно додати поля, та Search Conditions, де додані поля будуть використані як foreign keys.
-
Визначити Analytics Views, в яких використовуються поля таблиць, в які необхідно додати поля, та Analytics Views, в яких додані поля будуть використані як foreign keys.
-
- Крок II. Видалення
-
Створити changeSet-и для:
-
видалення Search Conditions для таблиць, в які будуть додані поля, та Search Conditions, в яких додані поля будуть використані як foreign keys (якщо необхідні зміни в наявних Search Conditions_);
<changeSet author="registry owner" id="drop search document_type"> <ext:dropSearchCondition name="document_type"/> </changeSet>
-
видалення Analytics Views для таблиць, в яких будуть використовуватись додані поля та Analytics Views, в яких додані поля будуть використані як foreign keys (якщо необхідні зміни в наявних Analytics Views).
<changeSet author="registry owner" id="drop report_table"> <ext:dropAnalyticsView name="report_table"/> </changeSet>
-
- Крок III. Додавання
-
Створити changeSet-и для:
-
додавання полів в таблиці;
<changeSet id="add new columns to staff" author="registry owner"> <ext:addColumn tableName="staff" ext:historyFlag="true"> <column name="order_date" type="DATE" remarks="Дата наказу"/> </ext:addColumn> </changeSet>
-
додавання полів таблиць, в яких додані поля будуть використані як foreign keys;
<changeSet id="add column" author="registry owner"> <ext:addColumn tableName="address" ext:historyFlag="true"> <column name="region_id" type="UUID" remarks="Місце проживання - область"> <constraints nullable="true" foreignKeyName="fk_region_id" referencedTableName="katottg_dictionary" referencedColumnNames="katottg_id"/> </column> </ext:addColumn> </changeSet>
-
створення Search Conditions для таблиць, в які додали поля, та Search Conditions, в яких додані поля будуть використані як foreign keys (якщо необхідні зміни в наявних Search Conditions);
<changeSet author="registry owner" id="create SC edu-by-external-id view"> <ext:createSearchCondition name="edu_by_external_id" limit="all"> <ext:table name="edu"> <ext:column name="edu_id"/> … <ext:column name="edu_id_external" searchType="equal"/> </ext:table> </ext:createSearchCondition> </changeSet>
-
створення Analytics Views для таблиць, в яких будуть використовуватись додані поля, та Analytics Views, в яких додані поля будуть використані як foreign keys (якщо необхідні зміни в наявних Analytics Views).
<changeSet author="registry_owner" id="full_expose_transaction table_v2"> <ext:createAnalyticsView name="exposed_transaction_table_v2"> <ext:table name="transaction" alias="transaction"> <ext:column name="transaction_id"/> … <ext:column name="order_id"/> </ext:table> </ext:createAnalyticsView> </changeSet>
-
4. Видалення полів в таблицях
Не можна видаляти поля таблиці, в яких зберігається primary key. |
- Крок I. Аналіз
-
-
Визначити поля таблиць, які необхідно видалити.
-
Визначити таблиці, в яких поля, що видаляються, використані як foreign keys.
-
Визначити Search Conditions, які використовують поля цих таблиць, та Search Conditions, в яких ці поля використовуються як foreign keys.
-
Визначити Analytics Views, в яких використовуються поля цих таблиць, та Analytics Views, в яких ці поля використані як foreign keys.
-
- Крок II. Видалення
-
Створити changeSet-и для:
-
видалення Search Conditions з полями таблиць, які необхідно видалити, та Search Conditions, в яких ці поля використані як foreign keys;
-
видалення Analytics Views з полями таблиць, які необхідно видалити, та Analytics Views, в яких ці поля використані як foreign keys;
-
видалення полів таблиць, в яких поля, що видаляються, використані як foreign keys;
-
видалення полів таблиць.
-
- Крок III. Додавання
-
Створити changeSet-и для:
-
створення Search Conditions для таблиць, в яких видалили поля, та Search Conditions, в яких видалені поля використовувалися як foreign keys,
-
створення Analytics Views для таблиць, в яких видалили поля, та Analytics Views, в яких видалені поля використовувалися як foreign keys.
-
5. Зміна формату полів у таблицях
- Крок I. Аналіз
-
Визначити поля таблиць, в яких необхідно змінити формат.
- Крок II. Змінення
-
Створити changeSet-и для:
-
змінення форматів полів таблиць.
<changeSet author="registry owner" id="modifyDataType-example"> <modifyDataType columnName="id" newDataType="int" tableName="person"/> </changeSet>
При зміні формату полів не змінюється їх назва. Якщо немає блоків з логічного порівняння даних, то вносити зміни до Analytics Views та Search Conditions необов’язково. Якщо є блоки з логічним порівнянням даних, то треба вносити зміни до тих блоків (видалити старі Search Conditions, Analytics Views та створити нові після зміни формату полів). Інакше можливі помилки при виконанні збірки регламенту.
-