On 12/10/14 10:13 AM, Monnier, Gary wrote:
For your scenario:
Two tables to define the meal..
	One table for the meal (header) the protein/non-protein (must be in the proteins master table).
	- Tofu is a protein albeit not meat of any sort.
	- The non-protein entry in the protein master may be described as desired: maybe as Air or Protein-Free?
	One table for the addition dishes for the meal (detail)
	- dish type (starch, vegetable, etc.)
	- dish ID (ID must be in the corresponding master table)
Keep in mind that the food analogy here is exactly that: an analogy. 
We're not really talking about food here, except as a metaphor for the 
real world situation (which I'm not at liberty to discuss). We can 
assume that, for the sake of the analogy, the protein file has non-meat 
records including (but not limited to) "tofu," "TVP," "Scrambled eggs," 
"overripe Limburger," "peanut butter," and "nothing at all."
And indeed, the food analogy breaks down on the conceit that only 
certain starches and vegetables are compatible with any given protein. 
If I want to have poultry dressing, Yorkshire pudding, and carrot mousse 
with Spam piccata, it may be a weird combination, but it's certainly 
possible. In the real world scenario, we can assume that dressing ONLY 
goes with poultry dishes, and Yorkshire pudding ONLY goes with roast beef.
Now, the obvious answer to me, if everything were closed-ended, would be 
either (1) to have a bitmap (or more likely byte-map) field in the 
starch and vegetable fields, with one element for every protein, 
indicating compatibility, or (2) to have two bitmaps in the protein 
file, indicating the compatible starches and vegetables. The problem 
with this is that it's inherently closed-ended, and even if some 
expansion space were built into the bitmaps, it would be necessary to 
change the structure if that expansion space were exceeded.
--
JHHL
As an Amazon Associate we earn from qualifying purchases.