我想做一个订餐系统,如菜谱表的编号是用自增好呢还是有字符串做主键好,你不可能给人家编号是1,2 ,3
吧,比如是dish0001,如果用这个怎么能保证这个是唯一的,每次插入就去检查一下数据库?会不会那个菜已有编号它自己录入啊? 如果这个菜属于多种味道类型我应该建一个表关联还是用一个字段好,一个字段好像不行?问了这么多用没有一个做过的数据库设计参考啊?

解决方案 »

  1.   

    System.Guid.NewGuid().ToString();自动生成一个编号就行了!!
      

  2.   

    知识永远不是想当然的,随之你的深度的变化,软件设计也会随时变化。即使是业务和编程技术框架也是经常被推翻、重构的(当然只有经验才能有勇气应付)。任何概念,它既可以单独作为一个class,从而与其它class关联。同时假设它极端简单,那么你完全没有必要做为一个独立的class,而应该作为关联对象class的一个简单类型(系统预设类型)属性。例如你就可以把“味道”作为“菜”的一个string或者枚举类型的属性就行了。我们设计软件,当然是越简单越好。只是因为清晰,才独立出去做为class。当然不能为了显示“自己懂class了”于是就把不论什么简单的概念都当作独立的class。基本上,假设你觉得在2个月以内,完全值得把一个属性扩展为一个独立的知识体系class,那么你就应该仔细研究这概念,并且把它设计为class。否则,不要画蛇添足,而应该把它设计为简单类型属性。但是这需要一个前提:越是有勇气重构、有勇气改变架构,越能够稳定地并且灵活地“左右逢源”来设计它。越是不断纠结于这种简单的地方,越胆小和盲目。