Introduction
Recall the article Build a Business Process Management System – System Index Concepts that there are 3 system index levels including System, Meta System and Meta System2 , this article is go to discuss the Meta System2 level.
Problems in Relational Database
To understand why there is a need in Meta System2, it should start by going through the problem patterns that we faced when using relational database to build the Business Process Management System.
Recall the article Relationship between Human Learning and Data Structure , Relational Database is the database which is built on top of the relational data structure. For decades, even nowsaday it is the most common and popular way for us to build any the Business Process Management System, which works fine.
But work fine does means there is no problem, it only means limited by technology, we can do nothing in old days and so we used to embrace with the problems in the relational database. And it’s new to review the problems.
Let’s start the story with a typical business case – an Invoicing System.
In the simplified model of an Invoicing System, at least there are 4 Tables inside the relational database :
Sales Invoice
Sales Invoice Order Line
Product
Client
Each of the Tables will have some simple basic Properties as below:
Sales Invoice Table’s Properties
- Sales Invoice #
- Invoice Date
- Total Invoice Amount
- Payment Due Date
- Client#
Sales Invoice Order Line Table’s Properties
- Sales Invoice Order Line #
- Sales Invoice #
- Product Item Quantity
- Product Item Unit
- Product Item Unit Price
- Product Item Sub Total
- Product Item Name
Product
- Product#
- Product Name
- Product Description
- Product Unit
Client
- Cilent#
- Client Name
- Client Address
- Client Phone Number
The Properties in the above 4 Tables are good enough for us to build a simple but functional Invoicing System. It work properly and smoothly until one day your shop is going to expand your business line from retail to wholesale. You want to have a Quotation Function on top of the Invoicing System in order to cater the request for quotation from the wholesale client.
As an experienced system engineer like you , your intuitive thinking is that you simply add a Sales Quotation
Table in your relational database. Yes it is.
However, due to the fact that instead of an system engineer , you are also the boss of the business that you cannot stay in front of the laptop and open the No-Code platform to expand the current Invoicing System, the only way you can do is to use your mobile phone to enumerate the Properties and the metadata of the Properties (i.e. We called it Table Schema) which a Sales Quotation
should have.
After 10 hours of work, you are exhausted. You want to postpone the Sales Quotation Table expansion project to the weekend which you think to be less busy. Of course, instead of 1 weekend, the task is delayed to 4 weekends , which the wholesale order is overwhelming and you spend most of the time on tackling the back and forth of the wholesale order.
It is ironic that while the main purpose of your business is to make profit, the overwhelming amount of the incoming sales order exactly fit your business purpose, and at the same time also is the main reason that you cannot expand your business due to the fact that these incoming sales order burnt out all your development time.
Of course this is a happy problem. Whether you want to overcome it or not depends on your level of ambition. If in case you are ambitous that you are not satified with the current scale and want to scale up to national level, you should have built the system to systemise and automate the workflow.
Co-ordination in Business Process Management System Development
Rather than the pursuit of perfectionism, due to the fact that your new wholesale business line thrives, therefore you compromise and believe that you can afford to hire a system engineer to do the hands-on coding tasks for you, and you focus on designing the blueprint of the system instead.
When the system engineer – Anna is on board, you are excited to share to him the mighty vision of your retail and wholesale business, which he showed his support to you by asking you to provide him the blueprint and documentation the current system that you have built, so that he don’t need to reinvent the wheel.
As you don’t want to cool down the enthusiasm of Anna, you finger crossed to provide him the blueprint within a week, which in turn for sure failed the promise again due to the fact that the wholesale incoming new business is overwhelming , as said before.
Thinking of Building Meta System
As expected , after Anna quit for a week, you review yourself and realise that Anna did not do anything wrong. The bottleneck of building a system is now shifting from the hands-on coding task to designing the blueprint of the system. Even a seasoned system engineer cannot acquire the knowledge domain of your industry comprehensively like you do. It is not reasonble for you to expect that the system engineer can grow the blueprint from scratch, at least not in a system engineer whom the salary you can afford.
To summarize your failure , you deduced the problem pattern of building a system:
- A person can go fast, but a team can go far.
- If you want a team, you should place communication in 1st prority.
- Communication protocol is the prerequisite of communication.
- How to fetch the expertise of your knowledge domain from your brian, and fit them into the communication protocol is the key to speeding up.
Having concluded these widsom in expense of your failure, you relieved and transformed. You start reading the books on how to build a meta system. And thanks to Diamond Digital Marketing Group, you figured out the BFs-WAITER Pivot Table is exactly what you are seeking for.
After 6 months reading and practising, you master the essense of BFs-WATIER Pivot Table. You have identified much more concepts than the Invoicing System you built before. You enumerate some of the concetps as below:
Entity
- Retail Client
- Wholesale Client
- Cashier
- Salesperson
- Book-keeper
- Shipping Agent
- Vendor
Business Rules
- Tiered Pricing base on wholesale’s membership role
- Bundled Pricing to bundle the product with low stock turnover
- Role based discount rules based on Retail Client
Workflow
- Issue Sales Quotation
- Sales Quotation signed back from Client
- Convert Sales Quotation into Sales Invoice
- Shipping to Client
Information Flow
- Sales Invoice
- Blank Sales Quotation
- Paymenet Receipt
- Signed Quotation
- Delivery Note
- Thank You Email
The Tables that are needed to be created in your relational database increase exponentially due to your ability of modelling your business process, which is a good sign.
After your turn you enumerate all the concepts and turn them into Tables, you finally realise that there are more than 50 Tables that you should creating. Below are extract of the Tables and its extracted Properties lists below:
SalesInvoice
SalesQuotation
SalesInvoiceOrderLine
SalesQuotationOrderLine
Client
ClientsStaff
ClientAddress
ClientPhone
ClientBank
ClientCreditLine
Product
Vendor
Vendor Staff
JobTitle
- BDM
- COO
- CEO
- MD
Salutation
- Mr.
- Ms.
Gender
- M
- F
Vendor Address
Vendor Bank
Vendor Phone
Vendor Credit Line
Country
District
Zip Code
- …
Based on the extract of the Table Lists, you address the pattern that:
1 Table = 1 Business Object
Table is in fact an business object. Each Table represents 1 Business Object.
Object to Property = 1 to 1 Relationship
Each Property (i.e. Column) of an Object (i.e. Table) has a 1 to 1 relationship with the Object (i.e. Table) itself.
When to create a new Table
Whenever there is a 1 to Many relationships between the Object and the Property, a new Tables should be created. For example while 1 Person only have 1 Last Name, the Property LastName
is 1 to 1 relationshiop between the object Person
, which make the Property LastName
can stay in the same Table Person
. (i.e. Person.LastName
)
However , while 1 Person has Many Phone Number, a new Object Phone Number is identified and a associated new child Table PhoneNumber
should be created in order to link up with the parent Table Person
.
Number of Tables increased when Business Object increased
The relational database is weak on recording the relationships among Objects. Every time if I want to record a 1 to Many relationship , a new child Table should be created, which means that the workload of operating inside the Database will be increased.
If there are 1,000 business objects are needed to be recorded, it means 1,000 Tables should be created. The Entity Relationship Diagram for these 1,000 Tables will be like a maze which leads the system engineer get lost very soon.
Moreover, if there is a new system engineer onboard, it is really hard for him/her to check if the Tables that he/she want to build already existed, due to the fact that every single person may use different name to name the Table. For example, If your colleage created a Table Entity
, you may have no idea what it is and you probably will create another Table called Person
, which in fact is referring to the same business object.
There is a demand on a Table of Table to record the hierarchical relationship among business objects (i.e. Tables). You start feeling the birth of system of system (i.e. Meta System2)
Number of SQL Statement increased when Business Object increased
On top of that , as a system engineer, you realise that you need to rewrite the SQL statement whenever a new Table is referred. For example, when you want to enumerate all the Phone Number from All Person, you should write the SQL statement in below:
SELECT Person.Name, PhoneNumber.Number
FROM Person
JOIN PhoneNumber ON Person.PersonID = PhoneNumber.PersonID;
If there are 1,000 relationships among 1,000 Tables, you may need to write 1,000 SQL statements like this because the Table Name inside each SQL statement will be different.
Challenge on recording objects with hierarchical relationship by Relational Database.
Even worse, what if you want to record a hierarchical relationship among Objects which the relationship chains have no start and no end?
For example, if I want to record the categories of the products.
Leave a Reply