Architects and developers of data-oriented applications have struggled with the need to achieve two different objectives. They must model the entities, relationships, and logic of the business problems they are solving, and work with the data engines used to store and retrieve data.
## Data modeling
Business Foundation (BF) lets developers work with database data in the form of domain-specific objects and properties. Because BF is a component of the .NET Framework, BF applications can run on any .NET Framework-installed computer. A longstanding and common design pattern for data modeling is the division of the data model into three parts:
**Conceptual model**. The conceptual model defines the entities and relationships in the system that is being modeled.
**Logical model**. The logical model for a relational database normalizes the entities and relationships into tables with foreign key constraints. The physical model addresses the capabilities of a particular data engine by specifying storage details, such as partitioning and indexing.
**Physical model**. The physical model is refined by database administrators to improve performance. Programmers writing application code primarily confine themselves to working with the logical model by writing SQL queries and calling stored procedures. Conceptual models are generally used as a tool for capturing and communicating the requirements of an application, frequently as inert diagrams that are viewed and discussed in the early stages of a project and then abandoned. Many development teams skip creating a conceptual model and begin by specifying tables, columns, and keys in a relational database.
BF gives life to conceptual models by letting developers query entities in the conceptual model while relying on the Entity Framework to translate those operations to data source-specific commands. Typically, developers work with static physical models and should rebuild the application if the relational structure is modified. But business applications should be more flexible to allow extension of new and ready-to-use entities with custom properties. BF supports dynamic conceptual models by letting developers modify the physical model through the Meta Model Management API.
The Relational model is fixed and standardized. Modern business applications require complex data-types, complex objects and should be extendable. The Business Meta-Model implements a custom meta-model with user friendly types, meta-classes, dynamic objects, cards, relations (1-N, N-1, N-N), event pipe lines, modules and plugin systems.
## Supported Meta-Models
### SQL Meta-Model
The [SQL Meta-Model](🔗) is a native MS SQL relational meta-model. It defines tables, views, stored procedures, relationships and so on. With this, Business Foundation can:
Translate SQL Meta-Model tables to .NET classes.
Create, update and delete database records using object-oriented methods.
List database records to an array of objects using object-oriented filters.
Read and modify the SQL Meta-Model.
### Business Meta-Model
The [Business Meta-Model](🔗) is a custom meta-model. It defines meta-types, meta-classes, meta-fields, meta-class cards, relations relationships and so on. With this, Business Foundation can:
Translate meta-classes to .NET classes.
Create, update and delete entity objects using object-oriented methods.
List entity objects to an array using object-oriented filters.
Read and modify the Business Meta-Model.
Be customized with types, modules and plug-ins.