Financial Statement table

database-design

I want to ask about database design for financial statement.
I want to combine balance sheet, profit loss, cash flow,and ratio into one big table since each statement is dependent each other.

Here is my table structure:

Id, 
RegistrationNo, 
Year (date),  
ProfitLossNetSales, 
ProfitLossMonthlySales, 
....., 
BalanceReliabilityFinInformation, 
BalanceCashBank, 
BalanceTimeDeposit,
.....,
CashFlowInterestExpenses,
......

Is it okay to have table structure like this (having many columns in one table)?

Update:
In application, the user input balance sheet form and profit loss form (like input data in excel).
The Cash Flow and Ratio form is read only and the value are based balance and profit loss.

Best Answer

It is OK to have many columns in one table. Indeed, this is the normal situation. It is not OK, however, to mix different types of information in a single table.

Each table models a single class of "thing" in the real world. The rules of normalisation guide a database designer to separate classes from one another. Denormalisation (storing several things in one table) is a legitimate technique but should be used sparingly, with caution, and proper risk mitigation in place.

In your specific case you will have to consider what is your business domain. Are your users interested solely in the balance sheet bottom-line numbers for several corporations over several years (e.g. investment and trading point of view), or do they need the detail of how those numbers are calculated (e.g. an accountancy / book-keeping point of view)? For the former the table you mentions would be OK in my opinion. For the latter you need to model individual transactions, double-entry ledgers etc., and calculate your bottom-line numbers from these as required.