Database table for 2-dimensional array

My Doppler Value Investing site (http://www.dopplervalueinvesting.com)
uses
Ruby on Rails and a Postgres database.

There are two important parts: the superficial analysis and an in-depth
analysis.

An example of the superficial analysis is at:
http://www.dopplervalueinvesting.com/stocks/FAST

An example of the in-depth analysis is at:
http://old.doppler.webfactional.com/sites/default/files/stock-results/FAST.html

Note that the results of the superficial analysis are 1-dimensional -
just
parameters. This easily fits into one row in one table of a database.

Note that the results of the in-depth analysis are 2-dimensional -
parameters AND year. How would this fit into a Postgres database? What
are your suggestions? Is it possible to have a table within a table?

On 13 August 2013 18:47, Jason H., Android developer
[email protected] wrote:

http://old.doppler.webfactional.com/sites/default/files/stock-results/FAST.html

Note that the results of the superficial analysis are 1-dimensional - just
parameters. This easily fits into one row in one table of a database.

Note that the results of the in-depth analysis are 2-dimensional -
parameters AND year. How would this fit into a Postgres database? What are
your suggestions? Is it possible to have a table within a table?

Split it into multiple tables with associations between them
(has_many, belongs to). Conceptually that can be likened to tables
within tables. Have one table for each type of data.

Colin

Jason H., Android developer wrote in post #1118601:

An example of the in-depth analysis is at:
http://old.doppler.webfactional.com/sites/default/files/stock-results/FAST.html

Note that the results of the in-depth analysis are 2-dimensional -
parameters AND year. How would this fit into a Postgres database? What
are your suggestions? Is it possible to have a table within a table?

Technically speaking database tables are 2-dimensional. They have
columns and rows. It just happens to be that the “columns” dimension is
fixed and the “rows” is variable.

If you take your “Per Share Values” table that’s actually what you see.
The real issue is that you have decided to present the table transposed.
You have a fixed number of rows and possibly a variable number of
columns (years).

The data itself could be represented using a single table:
±-----±--------±--------±--------------±---------+
| Year | Int Vlu | Net Liq | Proj Fr Ca Fl | Pl/Pr/Eq |
±-----±--------±--------±--------------±---------+
| 2011 | 14.55 | -0.27 | 1.459 | 2.414 |
| 2010 | 13.22 | -0.04 | 1.302 | 2.106 |
| 2009 | … | … | … | … |
±-----±--------±--------±--------------±---------+

In this case the four numeric values are functionally dependent on the
year.

This would be the most efficient way to store the data shown in your
table. However, this is making the assumption that the four columns are
fixed. If you actually have two variable sets of data then you would
need multiple tables to store the data.

If course the other tricky thing is laying out the stored data into your
HTML table columns and rows. I would likely create an Array of Hashes
from the ActiveRecord objects with the data laid out as it looks in the
HTML table. This gives you the flexibility of matrix like data structure
that is variable in both dimensions. This might be useful regardless of
whether your data is stored in one table or many.