How to select sets of data from a table I have a table containing data that represents a tree structure of data, using the nested set model.  I'd like to store data for more than one tree in the table and have only one of the sets of data be available.  The idea is that there may be more than one version of the tree and even trees in development before going "live" with them.  

My question is about where to safely store the "This is the live set" flag.

This is what I have (minimalized):

TreeDataSets      
id
DataText
...
VersionId

Versions
id
VerName
InUse


Version
id
InUse

TreeDataSets      
ID  DataText    VersionId
1   ABCD           100
2   EFGH           100
3   IJKL           100
4   1234           101
5   5678           101
6   3456           101
7   AB12           102
8   CD34           102

Versions
ID  Vername     InUse
100 Characters  Y
101 Numbers     N
102 Mixed       N

Version
ID  InUse
1   100


So, I can either store the "InUse" flag against every row of the versions table, or have it in a separate table.  (Both option are shown - I hope you get the idea).

Disadvantages with storing the flag in every row is that if more than one row is set to InUse, the data will be messed up.  The disadvantages with storing the flag in an extra table is err, that there is an extra table and sql is a little more complex.

Is this a common data storage pattern?  What is the best practice?

Is there a way of enforcing only one row is set to true within the database, if the 2 table option is preferred?
With one table you would need to limit it to a single row.  

I think a trigger on InUse would be a better solution.