A single table & parsing will make for more work than necessary
A handful of tables (as given) will allow you to track an unlimited number of tape sets, unlimited number of tapes per set & unlimited number of archive entities per tape
Its all nice simple relations and you can put whatever nice friendly identifiers on things your users want (or that you want)
For instance
An invoice is nice & simple
It has a header + an “array” of details
Well to model that you have
Table Invoice
invoice id
other “ONE TIME” data (date time, buyer etc)
Table InvoiceDetails
invoice id (so we know what invoice these details belong to)
line item details (sku, product name, purchase price, qty, etc )
You have an array with an array with an array
So extend this simple modelling technique (like I suggested) so
So lets say the invoice is not simple products but each line item is a project with subtasks)
IE
Biil To Norman Palardy
Project 1 $500
- implement XYZ $100
- implement XYZ $100
- implement XYZ $100
- implement XYZ $100
- implement XYZ $100
Project 2 $500
- implement abc $100
- implement 123 $100
- implement def $100
- implement ghi $100
- implement jkl $100
Table Invoice
invoice id
other “ONE TIME” data (date time, buyer, bill to, etc)
Table InvoiceDetails
invoice id (so we know what invoice these details belong to)
invoice detail ID (so we can see all the subtasks they made this line up)
total price (total of all subtasks)
Table InvoiceSubDetails
invoice detail id (so we know what invoice detail these belong to)
units, sku, extended price and whatever else
Now I have an array of arrays (an invoice has an array of invoice details that each have an array of sub details)