在SQLite关系数据库中对此进行建模

在SQLite关系数据库中对此进行建模,第1张

概述假设我有一个Citizen表(列:rowid,name)和一个Race表(列:rowid,name).这些是世界公民,比赛是“高加索人”,“非裔美国人”等.sigid是SQLite提供的默认列. 有数十亿的公民.比如50,比赛很少. 什么是将每个公民与其种族联系起来的SQLite方式? 在标准编程语言中,我只需在每个种族上附上一个包含所有相应公民rowid的集合.这将允许我做各种事情: >鉴于比赛 假设我有一个CitiZen表(列:rowID,name)和一个Race表(列:rowID,name).这些是世界公民,比赛是“高加索人”,“非裔美国人”等.sigID是sqlite提供的默认列.

有数十亿的公民.比如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关系数据库中对此进行建模所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/sjk/1160475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存