Hi,
My suggestion
Given edition-based redefinition allows having multiple versions of PL/SQL objects, views and synonyms in a single schema, which makes it possible to perform upgrades of database applications with zero downtime.
Edition-based redefinition allows to redefine the copied objects in isolation. The changes do not affect users of the application. One database must have at least one edition.
Rules
Created or upgraded Oracle Database starts with one edition named ora$base. The parent of the first edition created with a CREATE EDITION statement is ora$base. The statement CREATE EDITION e2 creates the edition e2 as the child of ora$base.
An editioned object is a schema object that has both an editionable type and an editions-enabled owner. An edition can have its own copy of an editioned object, in which case only the copy is visible to the edition. All objects are editionable.
- SYNONYM - Exception SYNONYM is an editionable type, a public synonym is a noneditioned object.
- VIEW
All PL/SQL object types:
- FUNCTION
- LIBRARY
- PACKAGE and PACKAGEBODY
- PROCEDURE
- TRIGGER
- TYPE and TYPEBODY
A noneditioned object is a schema object that has a noneditionable type. An edition cannot have its own copy of a noneditioned object. A noneditioned object is identical in, and visible to, all editions.
Example: Table
It would be a natural fit to add a new field at the model level. I would call this new property "Edition". This property would contain a List of Values (Edition names). I should be able to select one of the editions already present or create a new one.
Depending on the edition chosen by default at the model level, we would have access to this edition objects and all ora$base objects - not edited - and all objects that have a noneditionable type - such as Table.
When creating a new edition object, I should be able to achieve an import or copy/paste from an object of a previous edition. The imported object should serve as a template, inspiration, and source.
Finally, I should be able to take cognizance of the previous editionable objects by selecting a LOV property at the object level.