我们的项目有大约 40 个具有复杂关系的表。一位同事认为使用长连接查询强制我了解模块之外的表,但我认为我不应该关心与我的模块没有直接关系的表并使用数据访问函数(由负责其他模块的人编写)当我需要他们的数据时。让我澄清一下:
我负责 ContactVendor 模块,该模块使客户能够联系供应商并就某些特定产品展开对话。Products 模块有它自己的复杂表和与封装细节的函数的关系(例如 i18n、激活、产品可用性等......)。现在我需要显示一些与供应商和客户之间的对话相关的产品的产品标题。我可以编写一个长查询,一次性检索产品信息和对话内容(这迫使我了解产品表),或者我可以将相关的 product_id 传递给 get_product_info(int) 函数。
第一种方法显然要求很高,并引入了许多不良做法和我通常认为编程错误的事情。第二种方法的问题似乎是这些访问函数导致的无数迷你查询,当循环尝试使用每个执行单独查询的函数来获取 100 个产品的产品标题时,性能损失是一个问题。所以我被困在“不要对实现编码,对接口编码”和性能之间。什么是正确的做事方式?
更新:我特别担心将来可能对我的模块之外的这些表进行修改。如果产品模块决定改变他们做事的方式怎么办?或出于某种原因修改架构?这意味着其他一些模块会损坏或出现故障,直到将更改集成到它们中。通常的涟漪效应问题。