0

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

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

以下是我的要求:

  • “客户”不一定要有“用户”。“用户”必须有一个“客户”。
  • “客户”可以有多个“笔记”。“宠物”可以有多个“笔记”。
  • 客户可以拥有多只宠物,但每只宠物都有一个客户。
  • 一个约会可以有多个“宠物”。约会只是绝育/中性,因此每只宠物只有 1 个“约会”。
  • 每个约会都有一个日期/地点。没有具体时间。
  • “访问”是宠物在某一天发生的所有事情(类似于商店中的订单)。
  • 'services_rend' 和 'goods' 应用于宠物。并且在选择宠物时加载所有内容(“pet_id”值的原因)。
  • 多个“医生”可以为一只宠物工作,一只宠物可以在一天内更改“位置”(因此它们被添加到“商品”和“服务撕裂”中
  • “项目”是可以应用于宠物的单个项目。项目可以用一系列“子项目”分组。
  • “schedule”是客户可以预订“appt”的空缺清单。
  • 措辞和代码放在自己的表中,以防以后需要更改。
4

1 回答 1

0

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

关于架构的一些评论点:

  • 几乎所有东西都可以为空。可空字段应该是例外,而不是规则。
  • 如果users:clients是 1:1,则将它们折叠成一张桌子。如果客户端可以没有用户,或者客户端可以有多个用户,则该连接是合法的。
  • 我认为petsday代表的是访问,petdetails代表的是医疗记录术语中的​​服务。
  • petsdayid不属于pet。如果您希望能够检索petsday给定的“当前” pet,请查找它。
  • petsday反转和之间的外键petdetails:一次访问可能需要提供多个服务,而不是相反。
  • petidpetdetails一旦上述外键被反转,in就会异常;除非性能需要,否则将其删除。
  • codes并且options没有与任何东西相关联。这可能是可以理解的options,但我建议将其分解codes为多个结构相同的表,每组代码一个表:诊断、服务等,以便可以构造外键来维护代码类型安全。
  • 您可能希望拆分petdetails为两个表,一个用于服务(外键键入服务代码),另一个用于商品(外键键入项目),它们之间有一个公共字段的子集。
于 2013-07-18T00:26:28.417 回答