如何将 OOP 中的对象存储在 MySQL 等数据库中
Posted
技术标签:
【中文标题】如何将 OOP 中的对象存储在 MySQL 等数据库中【英文标题】:How to store objects from OOP on a database like MySQL 【发布时间】:2013-06-30 12:38:23 【问题描述】:我最近一直在使用 Java,但我的 OOP 已关闭。最近,我一直在使用 jQuery、javascript、php 和最近的 mysql 进行基于 Web 的编程。使用 OOP 可以很容易地管理对象和读/写有关它们的信息。现在我正在学习 MySQL,我发现很难将简单的 OOP 程序转换为将其数据存储在数据库中的在线“程序”。我一直在玩Access,只是为了让我可以看到整个数据库,但似乎无法找到存储数据的好方法。出于学习的目的...这是一个简单的 OOP 类结构 (Java),我想将其转换为数据库(可以这么说)。
public class Tournament
////////////////////////////////////////////
//Variable Declaration
////////////////////////////////////////////
Team[] theTeams; //Array of Team Objects
int numTeams; //Number of Teams
////////////////////////////////////////////
//Functions and stuff
////////////////////////////////////////////
public class Team
////////////////////////////////////////////
//Variable Declaration
////////////////////////////////////////////
Player p1; //Player 1
Player p2; //Player 2
int teamNum;
////////////////////////////////////////////
//Functions and stuff
////////////////////////////////////////////
public class Player
////////////////////////////////////////////
//Variable Declaration
////////////////////////////////////////////
String fName; //First Name
String lName; //Last Name
////////////////////////////////////////////
//Functions and Stuff
////////////////////////////////////////////
对于数据库,我想要这样的东西吗?
也许我完全不同意整个想法。我不知道。如果有人可以让我知道我在哪里,那就太好了。感谢所有帮助。
【问题讨论】:
IMO,你可以使用一些面向对象的数据库。 @Jari:这是 RDBMS 的经典任务 如果您使用一些 PHP 框架,例如 Yii 或 Zend,您的表将是Model
(每个都是一个类)。 yiiframework.com/doc/guide/1.1/en/basics.mvc
如果您了解 java oop 并且以前使用过任何类型的数据库,则无需问此问题。 db 对于所有项目总是相同的。如果你是 php oop 新手,你应该学习一些框架 zend + 一些类似 orm 的学说。
您是说您不了解标准数据库数据类型吗?喜欢在设置架构时遇到问题?或者您的意思是您不知道如何从您认为正确建立的数据库中连接、存储和检索数据?
【参考方案1】:
您可以使用ORM 库,例如Doctrine。
【讨论】:
【参考方案2】:如果我理解正确,您基本上是在就您的数据模型寻求建议?这很简单,这个呢:
这里没什么特别的:
一名球员拥有一支球队,一支球队拥有一对多球员 一支球队有零到多场比赛 一场锦标赛有一个(实际上是两个)对许多球队注意球队和锦标赛之间的多对多关系。我会让您在表格中添加相关信息。例如,您可以在Tournaments_has_teams
中添加日期字段来跟踪团队的比赛。为了进一步推动示例,您还可以在锦标赛中拥有另一张桌子和一对多的比赛/比赛。
设置好数据库后,您可以创建自己的 DAL 或使用 ORM 从您的应用程序中查询它。请注意,由于impedance mismatch,您不能有直接的 OOP/RDBMS 映射(您可以通过使用其他技术来克服这个问题,例如面向对象的数据库,如 cmets 中提到的)
【讨论】:
这帮助很大。谢谢!我想我只需要尝试找到一个可以使用的 OO 数据库(可能是上面提到的一个)。很高兴您证实了我的怀疑,即没有办法直接从对象很好地转到数据库。我可能会按照你在这里的方式尝试它,但我想让它变得比它必须的更复杂是没有意义的。再次感谢! @JoshI 请注意,OODBMS 从未取得突破是有原因的***.com/questions/170649/… 还要确保您验证了最有帮助的答案。以上是关于如何将 OOP 中的对象存储在 MySQL 等数据库中的主要内容,如果未能解决你的问题,请参考以下文章