有数十亿的公民.比如50,比赛很少.
什么是将每个公民与其种族联系起来的sqlite方式?
在标准编程语言中,我只需在每个种族上附上一个包含所有相应公民rowID的集合.这将允许我做各种事情:
>鉴于比赛,快速找到所有成员.
>鉴于一个公民,快速循环比赛(因为几场比赛),并查看集合,找到他或她的种族.
>添加公民很简单.我只是将新的rowID放入他或她的比赛中.
>同样,删除公民很简单.
我怎么能在sqlite中做到这一点?鉴于sqlite只有B树索引,这可能会很棘手吗?也许这种数据不属于sqlite数据库开头?
SQLite has support for FOREIGN KEYS,所以您应该按如下方式对表进行建模.Race表中的RaceID是CitiZen表中的FOREIGN KEY,如果1 CitiZen在您的应用程序用例中只能有1个主要竞赛.
CREATE table Race( RowID INTEGER auto_INCREMENT PRIMARY KEY,Racename TEXT);CREATE table CitiZen ( RowID BIGINT auto_INCREMENT PRIMARY KEY,CitiZenname TEXT,RaceID INTEGER,FOREIGN KEY(RaceID) REFERENCES Race(RowID));
如果你想支持多种族(这些天很有可能),那么从CitiZen表中删除FOREIGN KEY并创建一个名为CitiZenRace的新MANY-2-MANY表,它将具有CitiZenIDs和RaceIDs,如下所示.
CREATE table Race( RowID INTEGER auto_INCREMENT PRIMARY KEY,CitiZenname TEXT); CREATE table CitiZenRace( CitiZenID BIGINT,FOREIGN KEY(CitiZenID) REFERENCES CitiZen(RowID),FOREIGN KEY(RaceID) REFERENCES Race(RowID));总结
以上是内存溢出为你收集整理的在SQLite关系数据库中对此进行建模全部内容,希望文章能够帮你解决在SQLite关系数据库中对此进行建模所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)