【问题标题】:Simple relational database in java - What data structures to use? [closed]java中的简单关系数据库-使用什么数据结构? [关闭]
【发布时间】:2018-01-16 02:48:35
【问题描述】:

我想使用 java 实现一个简单的内存数据库来存储具有以下架构的两个关系表(一个用于 NBA 教练,一个用于 NBA 球队):

教练(Coach_ID:由少于 7 个大写字母和两位数字组成,
季节:4 位数年份,
first_name : 任何合理的英文名,
last_name : 任何合理的英文名字,
season_win : 非负整数,
season_loss : 非负整数,
playoff_win : 非负整数,
playoff_loss : 非负整数,
团队:大写字母和/或数字)

团队(team_ID:大写字母和/或数字,
地点:美国城市名称,一两个英文单词,
名称:团队名称,任何合理的英文单词,
联赛:一个大写字母)

我的问题是 java 中可用的哪些数据结构最适合表示具有上述记录类型的两个表?我的数据库必须支持添加记录、查询和其他简单命令,因此最有助于这些操作(添加、搜索等)的数据结构将是最有帮助的。

到目前为止,我想出了以下几点:

class Team_Record {  
} 

class Coach_Record {
}

ArrayList <Team_Record> teams;
ArrayList <Coach_Record> coaches;

我是朝着正确的方向前进还是有更好的方法来实现数据库表?

注意:数据库仅在内存中。当程序退出时,数据丢失。无需数据持久化。

谢谢

【问题讨论】:

  • Coach 不属于 Team ... 还是 Coach 可以执教多个团队?
  • 如果不需要持久化,为什么要使用数据库?
  • @MadProgrammer 第一个关系(表格)存储来自特定赛季的教练数据。第二个关系存储有关团队的数据,coach 字段指示该团队的当前教练。
  • @Bohemian - 它是数据库设计课程的初始任务。我假设它熟悉关系数据库模型并提供编程实践。它支持将大表从文本文件加载到可以执行其他操作的内存中。持久性将在以后出现。
  • 请阅读How to Ask 并采取行动并点击谷歌搜索“stackexchange 作业”。您不是第一个实现关系表的学生。你的问题太笼统了。

标签: java database data-structures relational-database


【解决方案1】:

贾斯汀,

通常数据库表示您打算进行查找和插入。在这种情况下,您将需要选择最佳搜索复杂度并插入复杂度数据结构。 使用 ArrayList 开始意味着要搜索教练或团队,您需要遍历最坏的情况 n,其中 n 是集合中对象的总数。

另一方面,如果您使用 Map,由于您使用的是内存数据库,因此您很可能可以将密钥传递给程序中的不同子模块,从而使教练和团队的搜索变得容易。

在处理数据库时,关键因素是可搜索性和插入。最快的查找方式和最快的插入方式。

希望这会有所帮助。

【讨论】:

  • 我查看了地图,它们看起来很合适。我还有一个问题是我应该为每个(键,值)对维护一个单独的映射吗?或者每张桌子维护一张地图会更好吗?例如,将团队键映射到包含所有值的结构的 Map。更多类似(键,记录)。
  • 考虑下表 ID|NAME|AGE|MATCHES 1|BOB|55|20 2|MARLEY|25|100 在这个表中,键是 1 和 2,值是对象类型.所以你需要 1 个 Map 这可以容纳尽可能多的人。是否有意义?更像是每个键都有一行/记录。
猜你喜欢
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 2013-09-13
  • 1970-01-01
相关资源
最近更新 更多