为类似ebay的Web应用程序设计数据库

时间:2009-11-23 03:08:25

标签: php mysql database-design zend-framework e-commerce

首先,此网站是基于有兴趣向网站所有者出售商品的客户,所以这不是像Ebay那样的拍卖。

访客基本上会输入他们想要出售的物品(科技小工具)的详细信息,包括条件,报价该物品的价值,然后填写地址信息,以便所有者向他们发送一个盒子/ label,以便他们可以将物品运送给所有者。如果所有者满足条件,则访客可通过支票或Paypal获得付款。

因此,我需要有某种orders(或者在语义上更正确地将其称为事务或其他什么?)表,其中我跟踪每一个'顺序'顾客做的。

接受的项目是预先选定的,因此只有少数特定的型号/制造商,因此我将与制造商一起制作items表并填充如下:

项目表:

item_id item_name                 manufacturer    item_category_type
1       iPhone 32gb 3GS           1               1
2       Sidekick 3                2               1

制造商表:

id  manufacturer_name
1   Apple
2   T-Mobile

还有多种类型的项目,项目类别:

item_categories:

id  item_category
1   phone
2   ipod
3   computer (pc,laptop)

订单:

id user_id item_id  estimated_price  ac_adapter   battery  manuals  cables
1  5       2        250             1             1        1        1

用户:

id user_email    user_address      user_city   user_state user_zip user_country 
1  foo@bar.com   302 Kingston Ave  Manhattan   New York   11111    United States

价格将根据条件生成,例如手机是否有交流适配器,电池,手册,电缆,我在orders表中指出了这些价格,但我不太确定我甚至应该把它存放在一张桌子里。

问题1:我在订单表中存储ac_adapter,battery,manuals列的方式是正确的吗?我很感激任何提示。



该网站还有一个管理区域,管理员可以查看所有订单,并且会有一个用户区域,用户可以查看他的订单,此外还有一个请求也可以存储电子邮件。< / p>

因此,在用户发出“订单”后,如果用户尚未注册,我将不得不向users表添加一个条目,并在orders表中添加一个条目,同时通过电子邮件向用户发送此副本,并通过电子邮件向网站所有者发送订单信息的副本。接下来是我困惑的部分,存储电子邮件 - 它是否只是创建一个电子邮件表,以及可能是第二个表关于订单交易与电子邮件的表?只需将email_body邮寄给网站所有者和用户?这是我正在考虑的架构:

电子邮件表:

id    order_number    email_title                 email_body ( TEXT column? )
1     1               sitename.com - Order #1     ( stuff )

问题#2 :对于电子邮件正文,我生成的方式是加入订单号所指示的所有列,只需创建一个HTML表格,包括日期..这通常是数据库中存储电子邮件的方式吗?

我提前道歉,因为这是一个非常有问题的问题,希望在这些类型的网站上有足够经验的人可以提供帮助。感谢。

1 个答案:

答案 0 :(得分:2)

  

我在订单表中存储ac_adapter,battery,manuals列的方式是正确的吗?

不,因为ac_adapter / battery / manuals是项目的属性 - 而不是订单。如果返回订单,并且后续人员对该项目进行了订购 - 您已复制数据与items表中的单个条目。

  

对于电子邮件正文,我生成的方式是加入订单号所指示的所有列,只需创建一个HTML表格,包括日期..这通常是电子邮件存储的方式数据库完成了吗?

有些网站客户端不能很好地处理HTML格式的电子邮件,这通常由用户在文本和HTML之间进行选择。

我根本不会存储电子邮件 - 系统创建的自动生成的电子邮件没有任何价值。我可以理解将模板存储在数据库中,但是电子邮件也不是一种可靠的联系方式,因此我所做的最多就是有一个列来指示msg状态(无论是布尔/位还是外键)。此外,为什么还要存储哪些内容还要存储在您的电子邮件发送项目文件夹中?