原则 - 关系与对象内集合保存


Doctrine - relation vs in-object collection saving

我与symfony2和doctrine一起工作;

我有 2 个实体:QuestionAnswer 。从逻辑上讲,我会建立一个 1:* 关系来链接它们。

但是由于Answer对象与其他任何对象无关,因此永远不会在其Question之外进行索引(或访问)。因此,我使Question持久化,属性$answers其中包含Answer对象的数组。

直到现在它工作正常。我想利用Sonata管理表单,但它仅适用于持久层(ORM或ODM)。

所以我的问题是:

  1. 将对象集合保存在持久对象属性中是"不好的做法"吗?
  2. 如果我撤销我的选择(使答案持久化),它会对我的应用程序产生很大影响吗?

是的,这是一种不好的做法。而且非常糟糕

目前正在重构一个继承的应用程序,该应用程序在列中存储了许多序列化对象和数组,我想扼杀这些混蛋——我的意思是原始开发人员。

这样做会产生很多问题。例如,不能使用其他语言的同一数据库。或者,您甚至无法移动或重命名用于序列化的类,因为反序列化将不再起作用。它还使应用程序和数据库难以掌握和维护。

作为一般规则,请保持数据库应用程序的独立性。也就是说,永远不要假设将使用数据库的特定语言或框架。始终设计数据库,以便用不同语言编写的应用程序可以访问它,甚至可以直接从命令行执行普通 SQL 查询。

如果没有其他方法能说服你,请记住,一个不稳定的人最终可能会继承你的代码。我们都听说过人们来到办公室并枪杀他们的同事的故事;)