C++/OOP 关联模型和数据库

标签 c++ database oop model

编辑:我叫它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)

问题出在哪里

现在你有很多人和电影,你想把它们保存在某个地方:在数据库中。

  1. 你得到你的人
  2. 你得到了它关联的所有电影,以构建整个对象。

但是你如何获得它们呢?

  • 您是否为您关联的每个相关人员重建一个新的 Movie 指针? 然后,您将失去允许对象链接但过着自己的生活的关联属性。

  • 您是否将所有数据库加载到 RAM 中并且... 好吧,忘记这个

  • 巧妙的做法是什么?文档给出的正确方法是什么?

我对作为示例、论文的简化/伪代码很感兴趣……非常感谢!

最佳答案

你的问题很广泛,有很多方法,如何绑定(bind)数据库表(并表示它们的外键连接)。

这不仅仅是如何表示/处理那种域模型片段,您在此处的代码示例中展示了这一点。

@Martin Fowler提供 EAA pattern catalogue 您可以合理地研究并为这些类型应用适当的模式 object <-> relational mapping 您解决的问题。

关于C++/OOP 关联模型和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769067/

相关文章:

c++ - 运算符""在 C++ 中有什么作用?

c++ - 实现多进程日志记录的最佳方式(C++)

c++ - 为什么我们可以映射到一个文件但超过文件大小?

mysql - Application_Model_Rawdata 类的对象无法转换为字符串

sql - 有没有办法仅在存在最大值时从 SQL/Access 中的字段返回值?

PHP 警报消息

javascript - 通过触发父方法来触发实例方法

c++ - 线程参数现状

java - 我们可以从另一个类中的子类对象调用父类(super class)的重写方法吗

Matlab - OOP 方法