Changes between Version 3 and Version 4 of FDORfc7
- Timestamp:
- 07/30/07 12:24:36 (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
FDORfc7
v3 v4 22 22 == Overview == 23 23 24 The purpose of this RFC is to enhance the !FdoClassDefinition class by adding new methods !GetIsVi ewBased() and !SetIsViewBased().24 The purpose of this RFC is to enhance the !FdoClassDefinition class by adding new methods !GetIsVirtual() and !SetIsVirtual(). 25 25 26 26 27 27 == Motivation == 28 28 29 The motivation for this RFC is to expose classes based on virtual objects. The significat differenece between classes based on real and virtual objects is that the later do not contain any data themselves. A n RDBMS view is an exmaple of the virtual object. It is really an SQLquery. An FDO class based on that query exposes data that is contained in other objects referenced in the query. The class schema characterists like property types and constraints tightly depends on the these objects. Data exposed by the class is more dynamic as it can be edited or deleted from the objects that contain it.29 The motivation for this RFC is to expose classes based on virtual objects. The significat differenece between classes based on real and virtual objects is that the later do not contain any data themselves. Also, a virtual object is not stored in the datastore as a distinct object. An RDBMS view is one exmaple of the virtual object. It is just a named query. An FDO class based on that query exposes data that is contained in other objects referenced in the query. The class schema characterists like property types and constraints tightly depends on the these objects. Data exposed by the class is more dynamic as it can be edited or deleted from the objects that contain it. 30 30 31 How these classes can be used? Classes based on virtual objects can be used for limiting or restricting access to some data ,for analysis where a class exposes data that is combination of many classes joined in certain way with sometimes complex conditions.31 How these classes can be used? Classes based on virtual objects can be used for limiting or restricting access to some data and for analysis where a class exposes data that is combination of many classes joined in certain way with sometimes complex conditions. 32 32 33 Why is it important to distinguish these classes in FDO? These classes virtualitycannot be expressed by any existing methods of !FdoClassdefinition. In fact, their characteristics are somewhat unpredictable and depend on the underlying virtual object definition.33 Why is it important to distinguish these classes in FDO? Because these classes fall into a different category, for the same reasons why in RDBMSs views are distinguished from tables. These classes virtualness cannot be expressed by any existing methods of !FdoClassdefinition. In fact, their characteristics are somewhat unpredictable and depend on the underlying virtual object definition. 34 34 35 35 == Proposed Solution == … … 44 44 ... 45 45 /// \brief 46 /// Gets the value of m_IsVi ewBased. It is true if a class is based on view; otherwise is false.46 /// Gets the value of m_IsVirtual. It is true if a class is based on virtual object; otherwise is false. 47 47 /// 48 48 /// \return 49 49 /// Returns bool 50 50 /// 51 FDO_API bool GetIsVi ewBased();51 FDO_API bool GetIsVirtual(); 52 52 53 53 /// \brief 54 /// Sets the value of m_IsVi ewBased. It is true if a class is based on view; otherwise is false.54 /// Sets the value of m_IsVirtual. It is true if a class is based on view; otherwise is false. 55 55 /// This is an internal method that can only be called by providers. Application should not use this method. 56 56 /// … … 58 58 /// Returns nothing 59 59 /// 60 FDO_API void SetIsVi ewBased( bool value );60 FDO_API void SetIsVirtual( bool value ); 61 61 ... 62 62 63 63 private: 64 64 ... 65 FdoBoolean m_isVi ewBased;65 FdoBoolean m_isVirtual; 66 66 ... 67 67 } 68 68 69 69 }}} 70 71 Note that for the providers where the virtual object concept cannot be used, GetISVirtual() will always return ''false''. 72 70 73 == Implications == 71 74