CakePHP数据库设计指南

时间:2010-09-13 20:59:45

标签: database-design orm cakephp scalability entity-relationship

我正在使用CakePHP框架开发应用程序,目前正在设计数据库。我想确保正确设计对象及其关联,以便应用程序运行良好,组织正确,可扩展,并且可以很好地扩展。我将首先详细描述该应用程序,并提出一个对象关系模型。我需要一些关于最佳实践和CakePHP约定的指导。请仔细阅读说明,然后在下面解答我的问题。

如果您需要澄清任何内容,请发表评论。

申请背景和要求

该应用程序将作为各种专门的CRM运行。客户将使用它来跟踪和管理客户,联系人,工作,库存,供应商和机会。客户端当前有一个没有组织的大型数据库和破坏的应用程序代码。他们需要使用CakePHP ORM和基于数据结构构建的新应用程序从头开始重建数据库。数据库将在MySQL中构建。应用程序需要支持具有访问控制列表的多个用户类型。它需要设计为有效扩展,并且需要在以后的对象模型上构建新的应用程序。

建议的对象(子项目符号从上面的对象继承)

  • 公司 - 客户与之合作的任何公司
    • 客户 - 客户的客户
    • 承包商 - 由客户承包工作的公司
    • 供应商 - 向客户提供零件或服务的公司
    • 制造商 - 制造零件的公司
  • 帐户 - 封装客户与客户之间关系的对象
  • 工作 - 公司提供的工作单元
  • 任务 - 与特定作业关联的可计费服务
  • 部分 - 客户端作为作业或任务的一部分安装的项目
  • InventoryItem - 库存中的零件
  • 人 - 人类记录
    • 员工 - 客户处理的其中一家公司的员工
    • 技术员 - 客户聘用的服务技术员
    • 联系方式 - 客户处理的特定公司的联系人
    • 管理员 - 网站管理员
  • 机会 - 任何特定帐户的潜在工作机会

建议的关系

(HO = hasOne,HM = hasMany,BT = belongsTo,HABTM = hasAndBelongsToMany)

      
  • 公司     
            
    • HM:联系方式,技术员,员工
    •       
    • HABTM:管理员
    •     
      
  •   
  • 制造商从公司继承
  •   
  • 供应商继承自公司
  •   
  • 承包商从公司继承
  •   
  • 客户继承公司     
            
    • HM:帐户
    •     
      
  •   
  • 作业     
            
    • BT:帐户
    •       
    • HM:任务
    •       
    • HABTM:部分,承包商,技术员
    •     
      
  •   
  • 任务     
            
    • BT:工作
    •       
    • HABTM:部分,承包商,技术员
    •     
      
  •   
  • 部分     
            
    • HABTM:供应商
    •     
      
  •   
  • InventortyItem     
            
    • 何:部分
    •     
      
  •   
  • 员工从人员继承     
            
    • BT:公司
    •     
      
  •   
  • 技术人员继承人     
            
    • BT:公司
    •     
      
  •   
  • 联系人的继承     
            
    • BT:公司
    •     
      
  •   
  • 管理员从人员继承
  •   
  • 机会     
            
    • BT:帐户
    •     
      

我尽力在UML图上说明这一点,虽然我不确定我是否已经使符号约定正确: http://twitpic.com/2o5r0a

我的疑问和疑虑

  1. 您对此架构进行了哪些更改,以及为什么?
  2. 在CakePHP中处理对象继承的最佳方法是什么?
  3. 通过此架构引导客户端的最佳方法是什么,解释它如何满足项目要求?
  4. 此提议的设计是否会产生任何潜在的可扩展性问题?
  5. 在开发应用程序代码时,您是否预见到这种设计会造成任何困难?
  6. CakePHP的任何智慧之词都会对此进行审核吗?

1 个答案:

答案 0 :(得分:1)

我想帮助你,但我不想为你做你的工作。

Database Answers处有几个CRM数据库图表。

选择一些,并将它们与您的设计进行比较。您将了解您可能正在做的事情以及您可能做错的事情。