我会说你在重新发明轮子。当有优秀、快速、有能力、成熟、健壮和免费的 Java 关系数据库可用时,为什么还要担心创建自己的内存中关系数据模型。
如果我要这样做,我只需编写一个程序从文本文件中读取数据,然后将数据插入我的数据库。我推荐 HSQLDB。如果与单独提供的 JDBC 驱动程序一起使用,Apache Derby 也可以和 SQLite 一样使用。
RDBM 为您处理搜索、存储和数据映射。它可能比您尝试自行推出的任何解决方案都更加健壮和高性能。
如果我要在这个项目中使用 HSQLDB,那么我要编写的 DDL 将如下所示:
CREATE CACHED TABLE Users (
user_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
:
:
};
CREATE CACHED TABLE Tweets (
tweet_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
user_id INTEGER NULL,
:
:
CONSTRAINT twe_fk_user FOREIGN KEY ( user_id ) REFERENCES Users ( user_id )
);
CREATE CACHED TABLE Tags (
tag_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
:
:
);
CREATE CACHED TABLE Tweet_Tag_Bridge (
tweet_id INTEGER NULL,
tag_id INTEGER NULL,
CONSTRAINT bridge_pk PRIMARY KEY ( tweet_id, tag_id ),
CONSTRAINT brid_fk_twe FOREIGN KEY ( tweet_id ) REFERENCES Tweets ( tweet_id ),
CONSTRAINT brid_fk_tag FOREIGN KEY ( tag_id ) REFERENCES Tags ( tag_id )
);
表推文被映射为与用户具有多对一关系(一个用户可能有许多推文);并且推文通过桥表tweet_tag_bridge 与标签具有多对多的关系。在桥接表中使用主键可确保标签对于任何单独的推文都是唯一的(即,任何推文都不应有多个标签)。