这是我的第一个问题,但我已经有一段时间了。
我想要创建一个OO/MVC web应用程序( php、mysql、codeigniter中的比萨饼商店),其中披萨对象是完全可定制的。每一块比萨饼都被设计成可变的,我不确定数据方案是否优化,所以我想征求一些建议。
每个必胜客由以下几个部分组成:
地壳物体:它可以是薄的,厚的,平底锅,有颗粒的,等等。
一个边缘对象:它可以是薄的,厚的,填充的(可以用一种成分填充),等等。
A PizzaSize object:小、中、大等。
A PizzaLayout object:1味,2味(半半),2味(2/3-1/3)等。
Observations字符串:任何用户额外的选项,如“生肉”,“烤洋葱”等。
1至4风味:风味1、风味2、风味3和风味4。(只有风味1不可为空)
例如,PizzaLayout对象与定义披萨分区的属性一起工作:
"1" =只有一种风味
"4:4" =2种口味,每种4片
"3:3:3" =3种口味,各3片(这是8片的唯一例外)
"6: 2 " =2种口味,一种是6片,另一种是2种。
例如,如果比萨饼的布局是6:2,而Flavor1是培根,Flavor2是Mozzarella,那么它将有6片培根和2片马苏里拉。
每一种风味都由一份配料列表组成(例如:" pepperoni :乳酪,意大利辣香肠,牛至,西红柿等“)。用户可以通过单独改变配料来改变比萨饼的风味(例如,将培根添加到辣椒口味中),或者从零开始创造它自己的风味。
比萨饼店将预先配置:
一张可用结壳的桌子。
一张可用的配料表。
一张可用布局表。
一张可用边表。
一张可用的口味表。
一张可用尺寸的桌子。
我愿意创造一个更灵活的设计,我可以添加8种不同的口味,但我不满意的固定属性在比萨桌。我考虑创建一个PizzaLayoutItem,删除4种口味列。每一项都有自己的口味和数量。每个比萨饼都有一个项目列表,所以我会创建一个表: PizzaLayoutItem: id,pizzaId,flavorId,片,
因此,用户定义的火腿/培根比萨将有:"4:4“布局。2 LayoutItems,1片:火腿4片。一份:培根4片。
我的意思是,我必须创建所有这些表吗?每次用户构建比萨饼时,数据库都会查询6或7个表?我们可以认为表的大小是不相关的,因为比萨饼店的结壳、口味等的数量不会很大,所以这是一个快速的查询,但是,是否有更好的设计方法呢?
我不能张贴图片,所以我不能发布我设计的方案=/。
如果这个问题的布局也没有优化,我很抱歉。
发布于 2014-01-27 23:27:38
您可以对表使用邻接列表模型。它很简单,但也适用于复杂的数据库方案,如家族树。然后,我将在大部分逻辑中使用装饰模式。
https://stackoverflow.com/questions/21390033
复制相似问题