If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register or Login
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Implementing dynamic database structures using C++

We´re designing a new software and we want it to be customizable without code. That, for us, mean we can change the software behaviour without re-writing code. All will be developed using C and .NET.

One of our goals is to have what we are calling "dynamic tables". This means that these database tables may have different fields depending on the customization. We got to know it using high-level ERPs like SAP or CRM´s system like VTIGER or even SalesForce. Let me give an example:

CUSTOMER TABLE:

FIELDS: ID, NAME, ADDRESS, PHONE.

This would be the standard Customer Table.

Now, a new customer needs to add FINANCE SCORE and RANKING to the database. We them would like to go to our application (not the database itself) and adding these new fields. After that, all of my input forms and reports would start to show and process these new fields.

We haven´t found the best way or methodology to architect and develop that, so I very much appreciate any kind of help regarding this theme.

Re: Implementing dynamic database structures using C++

We´re designing a new software and we want it to be customizable without code. That, for us, mean we can change the software behaviour without re-writing code. All will be developed using C and .NET.

Costumization without coding is a contradiction of terms really. It's simply not possible.

You cannot do anything on a computer without coding. What's to be accomplished must be expressed in some language somehow. It could be a traditional language but it could also be an application language. And programming in it could be anything from laying down syntax in a textfile to selecting symbols on screen.

In my view you need to develop a language and you need to device a way to program in it. The rest will fall in place as a question of how this language best can be implemented given the target system.

I think "language" is a very profitable design view. Especially at the level of users of a system, but also within. For example the "language" approach is manifest in the OO pattern of Interpretor. Unfortunately most designers wait for big companies to introduce new languages forgetting they could do the same (at different levels of sophistication) to accomplish very clean interfaces internally in designs.

Re: Implementing dynamic database structures using C++

Well, it really depends on requirements. I participated in project where end customers were allowed to add columns of predefined types to basic column set, and the new data was immediately integrated into the whole app. As the app was a MAM system, the main focus was on searching through data and reporting search results, but data modification was allowed in GUI as well. The project was web app with a sophisticated C++ server dedicated to versatile data processing in background, including integration with third party system. External databases were also allowed to be included into federated search. Not bad, uh?

Well, with all this said I don't say we looked for any existent methodology. As all the teamers had quite a solid experience in database programming we just started to work on requirements analysis and architectural design. From a sort of prototype the system finally evolved to a product on the market sold worldwide. The key word here is evolved. You need to work on formal requirements and do formal design iteratively, build prototypes and test how those meet requirements. You should not expect that somebody could give you a 'silver bullet' advice and you see the light. No, all you need is to work hard and have money enough to break through. Sorry for this trivial sentence, but I have nothing else to advise.

Re: Implementing dynamic database structures using C++

Originally Posted by Igor Vartanov

Well, it really depends on requirements. I participated in project where end customers were allowed to add columns of predefined types to basic column set, and the new data was immediately integrated into the whole app. As the app was a MAM system, the main focus was on searching through data and reporting search results, but data modification was allowed in GUI as well. The project was web app with a sophisticated C++ server dedicated to versatile data processing in background, including integration with third party system. External databases were also allowed to be included into federated search. Not bad, uh?

Well, with all this said I don't say we looked for any existent methodology. As all the teamers had quite a solid experience in database programming we just started to work on requirements analysis and architectural design. From a sort of prototype the system finally evolved to a product on the market sold worldwide. The key word here is evolved. You need to work on formal requirements and do formal design iteratively, build prototypes and test how those meet requirements. You should not expect that somebody could give you a 'silver bullet' advice and you see the light. No, all you need is to work hard and have money enough to break through. Sorry for this trivial sentence, but I have nothing else to advise.

Thanks for the answers. I may had miswritten some words. I doesn´t mean that we will do it without coding. What I was trying to say is that we want the final user (customer) or the customization team to do it using GUIs only.

Igor - this is what I was afraid of... Not having an specific methodology or tool to do so. In that case we would need to code database schemas and tables management code. I was researching this topic and found out the EAV model (entity-attribute-value model) that may contribute for the final solution, but it´s not a definitive solution for my case.

vTigerCRM is a good example of what I wanna do, but I know most (if not all) of their implementation is tied to specific code for table management. Maybe that could be some framework or methodology to help us develop that.