BTW, I want to address the question of whether it's a pain to manage all the data in one table, versus having multiple tables.
Starting assumption: you're going to want to at least have a meta-data table to store the experiment meta-data, and one-or-more table(s) to store the measurements.
If you take the "I want a table for each measurement set" approach, you'll need to know the name of the table. So your metadata table will look something like:
Metadata
----------
experimentName
experimentLocation
experimentDateTime
...
measurementTableName
And a table for each experiment, each looking the same:
Measurement0001 Measurement0002 Measurement0003 Measurementt0004
-------------- -------------- -------------- --------------
measurementNum measurementNum measurementNum measurementNum
voltage voltage voltage voltage
amps amps amps amps
Then in your program, you first need to fetch the metadata:
select * from Metadata where experimentName='Johnson Controls 1'
which will, amongst other things, return measurementTableName for the experiment of interest (say Measurement0002). Then, your next query is:
select * from Measurement0002 order by measurementNum
Now, let's take the "store all the data in the measurement table" approach. Your metadata table will look like:
Metadata
----------
experimentName
experimentLocation
experimentDateTime
...
measurementSetID
And a table for all experiments.
Measurement
--------------
measurementSetID
measurementNum
voltage
amps
Then, just as before, you first need to fetch the metadata:
select * from Metadata where experimentName='Johnson Controls 1'
which will, amongst other things, give you the measurementSetID which you will use to get only the the measurements from the desired set (let's say id=2). Then, your next query is:
select * from Measurement where measurementSetID=2 order by measurementNum
So let's compare the two approaches... The metadata queries are essentially identical. The only difference is that in the first case, you are retrieving the measurementTableName for the desired experiment table; while in the second case, you are retrieving the measurementSetId for the desired entries in the measurements table.
The measurement-fetching queries are essentially the same, too:
select * from Measurement0002 order by measurementNum
select * from Measurement where measurementSetID=2 order by measurementNum
The only variable is either the table name, or the measurementSetID:
select * from <tablename> order by measurementNum
select * from Measurement where measurementSetID=<setID> order by measurementNum
The query result is almost the same, the second approach will just give you an extra column in your data (the measurementSetID) which you can ignore, because all returned rows will have the same set ID.