我一直在试图设计一个侧面项目的数据库模式,但我还没有能够生产任何我感到满意的东西。我正在使用ASP.Net和LINQ进行数据访问:关于动态条目的数据库设计 - 一行还是多行?
我将允许用户指定多达10个“项目”,每个项目有2个数字属性和1个参考属性,即项目名称。
如果我把这个条目放到1行中,它很容易等于大约30+列(最小),例如, item_1_name(REF) item_1_weight item_1_volume item_2_name ...等...
我不能简单地把这些列入参考表为每个属性可基本上为1至400 +。
我还想到,如果用户只决定将1个项目放入其条目中,那么我为该数据创建对象的方法将与LINQ一样是静态的,因此我必须检查属性和内容是否是NULL并相应地工作。另外,如果我想增加一个条目中允许的项目数量,这将是一个令人头痛的工作。
我想过的其他选项是简单地为每个项目创建一个行,并绑定一个条目ID。所以我基本上从来没有空的条目,但我的表会增长到天文深度,但不是很宽,因为只有5个奇数列。
在我的设计中是否有某种东西可以忽略/是否有更好和更有效率的方法?
编辑:当我说它会天文地增长时,我的意思是在这个意义上说:用户可以创建一个条目,并且每个条目最有可能有一组项目。所以说,他们每天在网站上输入1个条目,他们可以有3组商品,最大数量的商品(10个),这相当于30个商品的唯一条目。每天以该速度进行一次入场,并且该单个用户可以有210行。
对于item_id而不是外键使用CHECK约束会更好吗? – Dave 2008-11-04 16:51:21