I run a database for a sequencing centre. There are other developers getting data out of this and running automated and semi automated processes from the database.
We are discussing a change to the database.
At the moment we have a library that has a one-to-one relationship with a multiplex_index, which can be used to identify the library. We now want to add an optional GBS_index to each library (another optional one-to-one relationship). So each library will have a multiplex_index and optionally a GBS_index.
The columns stored on the new GBS_index will be the same as for the multiplex_index. So we have 2 options for storing the GBS_index data.
1) Store the GBS_index data in the original multiplex_index table, and identifying it by its "type" field.
2) We can add a parallel table for the GBS_index, which mirrors the multiplex_index table.
I favour the second parallel table option, as I see it as less likely to break existing code (scripts query the database for a list of multiplex_indexes, these would need to exclude the GBL_indexes in this case).
Conceptually the two types of indexes are both "multiplex indexes", but used in a slightly different manner.
Are there any strong arguments for or against either option?
Ok, a quick explanation of DNA sequencing may help.
DNA sequencing involves taking DNA from cells and splitting them up into "reads" of approx 200 base pairs (each base pair is like a DNA char A,T,G or C).
We load libraries (DNA from a prepared biological sample) on to a machine and sequence them. The two types indexes I talked about are a another piece of DNA with a known sequence, that is attached to the start of the library DNA before it is sequenced. That way, we can read the first bit of sequence we can identify what library each read (~200 chars) came from. (We are generally interested in the numbers of reads matching a position on a reference genome).
Now we can have one (multiplex) or two (multiplex + GBS) indexes at the start of the library DNA (one comes after the other), which form a unique combination to identify the library.
Initially two libraries with the same multiplex_index should not be loaded together, as you couldn't identify them from the multiplex_index sequence. Now the combination of the two indexes should be unique.