我正在努力为我家的家居装修业务设计工作估算软件,并对如何最好地整理数据抱有一些难题。当然,对于“工作”来说,这将是一个数据库表。存储工作名称,地址,描述等。
每个作业都有一系列与之相关的测量值,这些测量值将用于生成估算值(发送给潜在客户)和装载单(用于确定要将哪些材料带到作业现场)
我的问题是测量结果并非一致。这里有一些我用来测试这个概念的代码 - 注意一些测量需要多个阵列(参见:gutters& shutters),并且许多项目需要的不仅仅是标准键(数量,unit_of_measure,描述,价格) )。
毫无疑问,我没有编码高手,但我在这里学习。 MySQL是否是这里工作的错误工具?我是否需要一个不同的工具,或者我是否应该完全放弃使用数据库的想法?如果MySQL是答案,我应该如何组织这些数据?
我认为JSON存储在数据库中,但似乎表现不佳。
<?php
$gable_soffit = array(
'qty'=>125,
'uom'=>'ft',
'desc'=>"Gable Soffit",
'price'=>6.50,
'os'=>12, // inches
'ss'=>12 // inches
);
// qty, uom, desc, price, overhang size, soffit size
$level_soffit = array(
'qty'=>200,
'uom'=>'ft',
'desc'=>"Level Soffit",
'price'=>6.50,
'os'=>12, // inches
'ss'=>12 // inches
);
// qty, uom, price,desc
$brick_mold = array(
'qty'=>15,
'uom'=>feet,
'price'=>1.50,
'desc'=>"Brick Mold"
);
$gable_vents = array(
'qty'=>5,
'uom'=>ea,
'price'=>48.00,
'desc'=>"Gable Vents"
);
$window_tops = array(
'qty'=>2,
'uom'=>ea,
'price'=>10.00,
'desc'=>"Window Tops"
);
$openings = array(
'qty'=>2,
'uom'=>ea,
'price'=>50,
'desc'=>"Openings Capped"
);
$garage_doors = array(
'qty'=>1,
'uom'=>ea,
'price'=>100,
'desc'=>"Garage Doors Capped"
);
$porch_ceiling = array(
'qty'=>124,
'uom'=>sqft,
'price'=>2.00,
'desc'=>"Porch Ceiling"
);
$porch_beam = array(
'qty'=>36,
'uom'=>ft,
'price'=>3.60,
'desc'=>"Porch Beam"
);
$siding = array(
'qty'=>22,
'uom'=>sq,
'price'=>165.00,
'desc'=>"Siding"
);
$insulation = array(
'qty'=>22,
'uom'=>"sq",
'price'=>30.00,
'desc'=>"Insulation"
);
$shutters = array(
array(
'type'=>'Louvered',
'length'=>50,
'width'=>12,
'color'=>'Brick Red'
),
array(
'type'=>'Louvered',
'length'=>50,
'width'=>12,
'color'=>'Brick Red'
),
array(
'type'=>'Raised Panel',
'length'=>36,
'width'=>12,
'color'=>'Black'
),
array(
'type'=>'Raised Panel',
'length'=>50,
'width'=>12,
'color'=>'Black'
),
);
$gutters = array(
array(
'qty'=>100,
'type'=>"5-inch",
'uom'=>"ft",
'desc'=>"5-inch Gutter",
'price'=>3.00
),
array(
'qty'=>50,
'type'=>"6-inch",
'uom'=>"ft",
'desc'=>"6-inch Gutter",
'price'=>4.00
),
array(
'qty'=>10,
'type'=>"screen",
'uom'=>"ft",
'desc'=>"Gutter Screen",
'price'=>2.00
),
array(
'qty'=>5,
'type'=>"guard",
'uom'=>"ft",
'desc'=>"Gutter Guard",
'price'=>5.00
)
);
?>
答案 0 :(得分:2)
有趣的答案:如果您想尝试新的东西,可以使用MongoDB - 它是一个面向文档的数据库,带有JSON样式的文档。它使用动态模式,提供简单性和强大功能。它应该完全符合您的需求。
无聊的答案:你可以使用MySQL来创建一个只包含所有产品通用的最基本字段的表。
Products
id name quantity description price
2 Level Soffit 200 Level Soffit 6.50
5 Porch Beam 36 Porch Beam 3.60
此外,您可以拥有一个包含属性的表格。
Attributes
id attribute value
2 Os 12
2 Ss 12
5 Color Black
5 Color Brown
答案 1 :(得分:0)
我的建议是在Drupal 7中使用Views 3和Node Relationship and Node Reference模块构建站点来进行报告。这就是你想要做的。您可以创建作业内容类型和项目内容类型。
项目内容类型将包含:
然后确保在作业内容类型中它具有节点关系字段,该字段可以具有无限的项目条目(内容类型)。这样你可以添加你想要进行计算的任何项目。您可以使用视图快速构建报告,估计,页面等。您甚至可以为您的客户提供登录门户以查看估算值。
查看Drupal.org和drupalize.me。有很多很棒的视频,文章和资源供你使用。此外,如果您能想到它,那么有人可能已经编写了一个模块来进行此操作并在Drupal.org上免费列出以扩展您的网站。
Drupal将负责数据库架构。这使您可以自由地进行Web应用程序构建。从themeforest.net获得一些很棒的设计,我建议使用Omega 960gs基本主题来帮助您前进。
答案 2 :(得分:0)
MySQL是大多数工作的标准工具。实际上谷歌使用了一个高度修改的版本,他们称之为BigTable,允许他们进行超高速搜索。至于这个项目,使用一些连接表。
这是我推荐的。你有这些表:project,project_items,measurement_types,item_types
项目表包含项目名称,项目ID以及整个项目的任何其他有用项目详细信息。
project_items表列出了您上面提供的所有订单项。它包含以下列:项目名称,项目描述,数量,重量,长度,宽度,高度,价格,measurement_type_id(指的是measurement_types表),item_type_id
measurement_types表包含测量类型的名称,描述(如果需要),类型ID(自动分配的主键)。此表用于数据分类和用于确定从保存的测量中使用的计算类型。这些计算(公式)可以保存在此表的另一列中,也可以直接放入代码中。
item_types表包含排水沟,百叶窗,门,绝缘等物品类型。您需要一个id列和一个名称列。该表主要用于数据分类。
您使用此方法的方法是创建一个项目以将所有项目关联到,然后将项目添加到项目中。每个项目都有其测量,名称,描述,数量,类型和价格。根据您选择的类型,您可以在输入表单上显示/隐藏正确的测量字段。然后,当您稍后进行计算时,您可以使用此类型来了解每个项目使用的公式。
您还可以使用此生成一些好的报告。对于价格,项目细分等