有三个表
原料表:MaterialInfo(Id,Name)
菜谱表:MenuInfo(Id,Name)
疾病表:DiseaseSymptom(Id,Name)
疾病原料关联表:DiseaseSymptomMaterial(Id,DiseaseSymptomId,MaterialId,IsAppropriate
                IsAppropriate(0宜,1忌)
菜谱原料关联表:MenuInfoMaterial(Id,MenuInfoId,MaterialId)之间的关系为:有基础表原料、疾病,设置疾病哪些原料宜,哪些原料忌。然后再是菜谱表,由哪些原料组成。最后得到菜谱和疾病之间的关系(宜、忌、不宜又不忌)
有一种情况:如果某个菜的原料,又有宜又有忌,那么最终为忌最后想得到的查询结果为
疾病/菜谱   菜1     菜2     菜3
疾病1       宜              忌
疾病2               宜
疾病3       忌      忌      宜表操作语句如下:
create table MaterialInfo(Id int,Name nvarchar(500))
go
insert into MaterialInfo
select 1,'原料1'
union
select 2,'原料2'
union
select 3,'原料3'
gocreate table MenuInfo(Id int,Name nvarchar(500))
go
insert into MenuInfo
select 1,'菜谱1'
union
select 2,'菜谱2'
union
select 3,'菜谱3'
gocreate table DiseaseSymptom(Id int,Name nvarchar(500))
go
insert into MenuInfo
select 1,'疾病1'
union
select 2,'疾病2'
union
select 3,'疾病3'
gocreate table DiseaseSymptomMaterial(Id int,DiseaseSymptomId int,MaterialId int,IsAppropriate int)
go
insert into DiseaseSymptomMaterial
select 1,1,1,0
union
select 2,1,3,0
union
select 3,2,2,0
union
select 4,3,1,1
union
select 5,3,2,0
gocreate table MenuInfoMaterial(Id int,MenuInfoId int,MaterialId int)
go
insert into MenuInfoMaterial
select 1,1,1
union
select 2,1,2
union
select 3,2,2
union
select 4,2,3
union
select 5,3,1
union
select 5,3,3
go