---------- Original Message -----------
From: "Olaf Kluge" <olaf.kl...@satron.de>
> Now I have two ideas. I create a table with all fields  (separate for each
> information) and an import stored procedure fill this table with information
> from the long string. (line_number = substring(:str_in from 1 for 4)) etc.
> 
> String: 1234A1E2WEWE3432334
> 
> Into Field 1 = 1234, Field 2 = A1, Field3..
> 
> Or
> 
> I made a table with one field and save only the complete string in it. 
> In a second table I store the information about the field-names and 
> the start-byte. If the client-visualisation gives me the start-byte, I 
> can get this information from the one table and disassemble the string 
> from the other while executing. This method had the advantage, that I 
> can simply and short change the configuration if the layout of the 
> string was changed.
> 
> String: 1234A1E2WEWE3432334 into one field and get the information by
> executing the stored procedure.
------- End of Original Message -------

If the layout of the string was changed after you had already received data, it 
wouldn't make sense to change the mask globally. You'd either need to timestamp 
your format overlays, or store the mask ID with each historical record, or ... 
something. If the problem is that the client is wishy-washy, fine -- have a 
stored procedure do the splitting of the string into the table upon insert, and 
put all your configurable magic there.

I'd go with the first option, just because it can accommodate changes over time 
as your input format changes, but the underlying idea of the data doesn't (or 
varies only a little). If some day you start receiving an extra field in the 
string, great -- you can add a column that will be NULL for historical data, 
and adjust the input stored procedure or program to match. Dropped from input 
data? NULL for new records, keep old data intact. Multiple formats, from 
different sources? Multiple input procedures, same underlying data-structure 
for storage.

Don't worry about row sizes -- I don't think there'll be much cost from having 
the fields split up vs. not. Not enough to care about, anyway. Relational 
database file formats have a good deal of "wiggle room" anyway, they're not 
packed 100% tight, so slight variations in field-terminators, etc. aren't the 
end of the world.

But individual fields (a traditional relational database) do give you the 
ability to index certain columns efficiently (technically, you could do so even 
with your other solution, but please don't, it's unnecessarily complex), easily 
perform computations on them, or create convenient views that give certain 
users access only to parts of the underlying data. You can also use your 
resulting database with off-the-shelf reporting and graphing tools, which won't 
necessarily have any idea how to use your custom SP approach to gathering data. 
That compatibility (through standardization) is worth something!

-Philip

Reply via email to