我目前正在为自己的业务用途开发一个小型CRM,但是在进行数据库设计时,我对如何设计它感到有些困惑。
我需要快速加载而不会给服务器或客户端带来压力。
以下是我需要的类别
如果说我想让那些不会访问我超过一年的客户,我是否需要在访问中添加一个表格?或者只是使用SQL查询类型来进行列表?
非常感谢您的建议。
谢谢, 珍
答案 0 :(得分:0)
不确定您是否询问您的架构是否良好或如何获取正确的信息,所以这两者都是:
我会将您的架构更新为:
客户(p_key = CustomerId)
电话(p_key = CustomerId,PhoneType,DateEffective)客户可能有多种电话类型(小区,家庭,工作),可能会提供多种电话类型(获得新号码)。您可以使用DateTime覆盖或保留历史记录,使数字生效。
地址(p_key = CustomerId,AddressType,DateEffective)邮件和物理地址,以及电话等历史记录。
治疗(p_key = TreamentId)
TreatmentStage (p_key = TreamentId,Stage)
访问(p_key =所有列)客户可以在同一天进行多个治疗/治疗阶段。
约会(p_key = CustomerId,AppointmentDate,AppointmentTime)您可以将AppointmentDate和AppointmentTime结合到AppointmentDateTime中,尽管这并不是大多数人会想到的。
交易(p_key = TransactionId)
评论(p_key = CommentId)这会从您的所有其他表格中获取您的自由格式文本,并将其集中在评论中。这将具有性能,因为大多数时候您不需要加载注释,而且数据可能会超过默认页面大小。
代码(p_key = CodeType,代码)
代码表应存储您的"类型" (ApportionmentType,TransactionType,Phone Type等),因此您有一个代码列表及其描述,如果需要,您可以在连接条件中使用它(报告)。
查询部分非常简单:
SELECT c.*
FROM Visit v
INNER JOIN Customer c
on v.CustomerId = c.CustomerId
WHERE v.DateVisit > DATE_ADD(NOW(), INTERVAL 1 YEAR)