编辑:我叫它association是因为在我的脑海里它应该是这个,但是我好像把它实现为一个聚合...这个也可以讨论...
上下文
你在 IT 中学到的是,当你进行关联时,你应该使用指针。
例如:您有 2 个对象:Person 和 Movie。一个人可以拍几部电影,一部电影可以由/与几个人一起完成。然后你会:
class Person
{
public:
Person::Person();
int id;
vector<Movie*> movies;
};
class Movie
{
public:
Movie::Movie();
int id;
};
main()
{
Person person;
Movie *movie = new Movie;
person.movies.push_back(movie); // With a setter it would be better but...
}
或者类似这样的东西(如果我做错了请纠正我=D)
问题出在哪里
现在你有很多人和电影,你想把它们保存在某个地方:在数据库中。
- 你得到你的人
- 你得到了它关联的所有电影,以构建整个对象。
但是你如何获得它们呢?
您是否为您关联的每个相关人员重建一个新的 Movie 指针? 然后,您将失去允许对象链接但过着自己的生活的关联属性。
您是否将所有数据库加载到 RAM 中并且... 好吧,忘记这个
巧妙的做法是什么?文档给出的正确方法是什么?
我对作为示例、论文的简化/伪代码很感兴趣……非常感谢!
最佳答案
你的问题很广泛,有很多方法,如何绑定(bind)数据库表(并表示它们的外键连接)。
这不仅仅是如何表示/处理那种域模型片段,您在此处的代码示例中展示了这一点。
@Martin Fowler提供 EAA pattern catalogue 您可以合理地研究并为这些类型应用适当的模式 object <-> relational mapping
您解决的问题。
关于C++/OOP 关联模型和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769067/