针对spay / neuter诊所的数据库设计

时间:2013-07-17 23:55:51

标签: mysql database database-design

我正在为一家喷雾/中性诊所建立一个数据库。我想我已经涵盖了所有内容,但我想就我的数据库获得第二意见。我们假设拥有100,000多个客户,每个客户都有多个宠物,每个宠物都有多个工作/发票(他们不仅仅是喷洒/中性)。至少可以说我的petdetails表需要处理超过10,000,000个条目。如果有一种更好的方法来优化我的数据库以满足这样一个不断发展的系统,欢迎提出所有建议。我正在考虑将MySQL用于数据库,因为我们希望拥有一个基于Web的系统,而且每个托管公司都有。

我使用在线数据库设计工具来帮助构建系统。可以找到以下内容:Online Database Designer 点击保存/加载 - >加载(在服务器下) - >输入字段:spay / neuter

以下是我的要求:

  • '客户'不一定要有'用户'。 “用户”必须拥有“客户”。
  • '客户'可以有多个“备注”。 “宠物”可以有多个“笔记”。
  • 客户可以拥有多只宠物,但每只宠物都有一个客户。
  • 预约可以有多个“宠物”。约会只是喷雾/中性所以每只宠物只有1'appt'。
  • 每个约会都有一个日期/地点。没有具体的时间。
  • 'visit'是指宠物在某一天发生的一切(类似于商店中的订单)。
  • 'services_rend'和'goods'适用于宠物。当选择宠物时,所有都被加载('pet_id'值的原因)。
  • 多个'医生'可以为宠物工作,宠物可以在一天内改变“位置”(因此,为什么将它们添加到'货物'和'services_rend'
  • 'items'是可以应用于宠物的单个项目。可以使用一系列“sub_items”对项目进行分组。
  • 'schedule'是客户可以预订'appt'的空缺列表。
  • verbage和代码被放入他们自己的表中,以防以后需要更改。

1 个答案:

答案 0 :(得分:0)

这似乎是一个简单的兽医患者关系管理应用程序,您正在构建,具有预约,服务呈现和计费功能。

架构上的一些评论点:

  • 几乎所有东西都可以为空。可以为空的字段应该是例外,而不是规则。
  • 如果usersclients为1:1,请将它们折叠到一个表格中。如果客户端没有用户,或者客户端可以拥有多个用户,则该连接是合法的。
  • 我认为petsday所代表的内容将被称为访问,petdetails所代表的内容将是医疗记录术语中提供的服务。
  • petsdayid不属于pet。如果您希望能够检索给定petsday的“当前”pet,请进行查找。
  • 反转petsdaypetdetails之间的外键:一次访问可能需要提供多项服务,而不是相反。
  • 一旦上述外键被反转,petid中的
  • petdetails是非正规的;除非性能要求,否则将其移除。
  • codesoptions未与任何内容相关联。对options这可能是可以理解的,但我建议将codes分成多个相同结构的表,每个代码对应一个代码:诊断,服务等,以便外键可以构建为维护代码类型安全。
  • 您可能希望将petdetails拆分为两个表,一个用于服务(外键键入服务代码),另一个用于商品(外键键入项目),以及它们之间共用的字段子集。