为具有不同需求的客户提供站点架构


Architecture for site with clients with different needs

我不确定这篇文章是否会违反这个网站的一些规则,我甚至不知道如何搜索这样的问题(我确实尝试过)。

我为我的公司创建了一个网站(PHP/MMySQL),为我们的客户生产名片。他们得到一个小表格,选择一些变量并订购卡片,生成一个pdf文件,我们公司打印卡片(它是打印公司)。我们现在正在寻求向该网站添加第二个客户端,我必须使该网站能够处理两个客户端,但不能使它们相互了解。这一切都很好,最终我们会有很多来自很多公司的客户使用该网站,我计划让公司内部的任何人都可以建立一个客户和他们的名片指标。目前,第一个客户端的卡度量是硬编码在php文件中的,但它最终会以某种方式从数据库中提取布局规则来生成卡。

不同的公司的名片上有截然不同的东西,不同类型的电话号码、头衔、资格、布局规则等。我对如何在SQL方面实现这一点有三个可能的想法。

1) (这是第一种方法,坦率地说,我认为这很糟糕)制作一个表,其中包含各种可能的字段,不同的客户使用不同的字段。问题是它总是需要一个程序员,我的目标是使网站(最终)完全自给自足。我想是CMS。

2) 使用一个表,但列没有集合名称,只有泛型名称(colA、colB或其他),然后由另一个表分配值。一旦让应用程序做自己的事情,这将是复杂的,很难弄清楚结构,但我们的想法是它自己管理(尽管当出现问题时,我想这将是一场噩梦)。

3) 有点像混合动力车。如果有人创建了一个客户端,站点会为每个客户端创建一个表,而另一个表只跟踪所有客户端的身份。我觉得这可能会变得一团糟。

4) 其他方式耸耸肩

5) (编辑)只是想用某种方式或将键/值对存储在表中。。。

我不是一个经验丰富或受过培训的开发人员,所以我边学习边学习(很明显,我很享受,我选择为公司做这件事)。我只是在寻找一些方向,走哪条路。我的最终目标是建立一个网站,不需要这里的工作人员来找我添加关于卡的更改内容或特定于客户的详细信息(如定价、他们可以订购的数量、他们的卡模板或其他什么)。欢迎有任何想法。

第三种选择似乎是最理想的选择,但应该稍作修改。你现在可能不会这样做,但你会想从物体的角度来思考。从你的描述中,我看到了至少两个:ClientCard。你不想为每个客户创建一个表,因为这会变得多余,我相信如果你正在为名片创建一个网站,客户之间不会有太多不同的字段。

例如,设置一个Client表,如:

Create table `Clients` {
`clientId` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`location` varchar(255) NOT NULL,
`description` `text`,
... more fields
}

做同样的事情来设置你的卡片表,显然是用必需的字段,并在php中创建相应的类。我知道你说过,每家公司的卡片上都有截然不同的东西,所以也许你可以把它分成几个部分。

最终是的,从声音上看,你可能想考虑使用CMS来管理你的内容,尽管从声音上来看,这可能没有必要。您应该研究一个简单的MVC框架,如codeigniter或yii(两者都是php框架)。如果你刚开始的话,可以看看这里的面向对象编程教程。

你不会想实施你的第一选择,因为以后要解决这个问题会很头疼,而且这不是一个好的做法。

第二种选择也是一个坏主意,因为它可能会在以后一次又一次地变得令人困惑,这不是一个好的做法。

希望我没有把你弄糊涂,给你指明了正确的方向。对不起,我觉得我一下子向你扔了很多东西。看看面向对象的编程技术,看看php端的轻量级MVC框架。