我与symfony2和doctrine一起工作;
我有 2 个实体:Question
和 Answer
。从逻辑上讲,我会建立一个 1:* 关系来链接它们。
但是由于Answer
对象与其他任何对象无关,因此永远不会在其Question
之外进行索引(或访问)。因此,我使Question
持久化,属性$answers其中包含Answer
对象的数组。
直到现在它工作正常。我想利用Sonata管理表单,但它仅适用于持久层(ORM或ODM)。
所以我的问题是:
- 将对象集合保存在持久对象属性中是"不好的做法"吗?
- 如果我撤销我的选择(使答案持久化),它会对我的应用程序产生很大影响吗?
是的,这是一种不好的做法。而且非常糟糕。
我目前正在重构一个继承的应用程序,该应用程序在列中存储了许多序列化对象和数组,我想扼杀这些混蛋——我的意思是原始开发人员。
这样做会产生很多问题。例如,不能使用其他语言的同一数据库。或者,您甚至无法移动或重命名用于序列化的类,因为反序列化将不再起作用。它还使应用程序和数据库难以掌握和维护。
作为一般规则,请保持数据库应用程序的独立性。也就是说,永远不要假设将使用数据库的特定语言或框架。始终设计数据库,以便用不同语言编写的应用程序可以访问它,甚至可以直接从命令行执行普通 SQL 查询。
如果没有其他方法能说服你,请记住,一个不稳定的人最终可能会继承你的代码。我们都听说过人们来到办公室并枪杀他们的同事的故事;)