====== Evolutionary Design Methods for Relational Data Models ====== By Vladislav Belovitskiy (vibelovitskiy@edu.hse.ru) ===== Introduction ===== Evolutionary Design is an approach of developing a system in a way that mimics natural evolutional growth and real-life objects interactions. This is achieved by adding just the necessary modifications to the system in an iterative and incremental manner to meet the business requirements [1]. This approach is becoming more popular with the increasing complexity and number of business requirements for modern systems. However, in context of relational database systems this approach is not yet developed well because of complexity of mapping from objects interaction to relational data models and its constraints. Current paper provides an overview of the main challenges associated with Evolutionary Design for relational data models, as well as an exploration of the existing and proposed approaches that have been developed to overcome these challenges. ===== Main Challenges ===== The first challenge is transitioning from object models to relational data models. The future of database systems relies heavily on object models, but their development is hindered by a lack of consensus on their fundamental features. The design of a unified model is heavily influenced by the requirement to seamlessly integrate with object models in programming languages and the goal of smoothly transitioning from current database technology. The second challenge is that relational database management systems (RDBMS) prevent schema inconsistencies by ensuring database consistency at all times [2]. However, this feature can complicate the evolution of the database, as it continues to run and maintain consistency throughout the evolution process. In contrast, other types of software typically require the program to be stopped during source code editing, which can temporarily result in an inconsistent state. Modifying the structure of a database implies adapting the program behavior depending on it. ===== Proposed approaches ===== The existing and proposed solutions are intended to enhance classic data modeling approach into the evolutionary manner, to handle constant change of business requirements [5]. Data modeling involves the process of identifying entities, assigning attributes to these entities, and determining the data structure that will represent these attributes. In a traditional database scenario, a logical data model is initially created to represent the entities and their corresponding attributes. However, in evolutionary data modeling, this technique is performed iteratively, with multiple data models being developed, each representing a different aspect of the database. To solve the first challenge, the unified object to relational model is proposed [2]. The referenced study reveals that it is possible to establish a foundation that takes advantage of a seamless correspondence between relational and object models. This concept is exemplified through the introduction of Object SQL (OSQL), a modified and expanded version of existing SQL that incorporates object-oriented features and functions. To overcome the second challenge, there is proposed approach that utilizing a meta-model to offer recommendations to database architects [3]. The process begins when architects initiate a change, and the tool conducts an impact analysis to provide recommendations to the architect. These recommendations guide the model towards achieving a consistent state after the change, with subsequent changes being induced and new recommendations provided until a stable state is reached. Once the architect accepts the suggested changes, an analysis is performed to generate a patch that includes all the necessary SQL queries to execute these changes. Another approach to maintain the consistency of the database schema is regression testing [4]. To ensure that a system remains functional and unaffected by updates, it is crucial to validate any new functionality added. In a database, the business logic is typically implemented through stored procedures, data validation rules, and referential integrity. When implementing changes in the system, it is important to thoroughly test these components. Regression testing involves executing all test cases whenever a new feature is introduced to the system. In the context of evolutionary database design, test-first development (TFD) is a regression testing approach commonly followed. ===== Conclusion ===== In conclusion, the Evolutionary Design approach holds promise for the future of relational database systems. However, there are significant challenges that need to be addressed. The first challenge is the transition from object models to relational data models, which requires a unified approach that seamlessly integrates with object models in programming languages. The second challenge is maintaining consistency in the database schema during the evolution process, as relational database management systems prioritize database consistency at all times. To overcome these challenges, several approaches have been proposed. One approach is the use of a unified object to relational model, which establishes a seamless correspondence between relational and object models. Another approach involves utilizing a meta-model to provide recommendations to database architects, guiding the model towards achieving a consistent state after changes are made. Regression testing is also suggested as a way to ensure the functionality and consistency of the database schema. Overall, the Evolutionary Design approach offers a way to gradually develop and adapt database systems to meet evolving business requirements. By addressing the challenges and implementing the proposed approaches, it is possible to enhance the traditional data modeling approach and pave the way for the future of relational database systems. ===== References ===== 1. Adrian Bolboaca. What is Evolutionary Design? URL: https://mozaicworks.com/blog/what-is-evolutionary-design 2. Beech, D. (1988). A foundation for evolution from relational to object databases. In: Schmidt, J.W., Ceri, S., Missikoff, M. (eds) Advances in Database Technology—EDBT '88. EDBT 1988. Lecture Notes in Computer Science, vol 303. Springer, Berlin, Heidelberg. URL: https://doi.org/10.1007/3-540-19074-0_57 3. Julien Delplanque, Anne Etien, Nicolas Anquetil, Stéphane Ducasse. Recommendations for Evolving Relational Databases. CAiSE 2020 - 32nd International Conference on Advanced Information Systems Engineering, Jun 2020, Grenoble, France. ffhal-02511466 4. Ambler, Scott; Sadalage, Pramod J (2006). Refactoring Database: Evolutionary Database Design. Addison Wesley Professional. 5. Skoulis, I., Vassiliadis, P., Zarras, A. Open-source databases: Within, outside, or beyond lehman’s laws of software evolution? In: International Conference on Advanced Information. Systems Engineering. pp. 379–393. Springer (2014)