mysql
数据库中主要存储 2 个 主要数据:IP 地址
、域名
IP 地址
是根据新增的域名解析后存储的,因此会存在一个 域名
要对应多个IP 地址
的记录;IP 地址
也会存在同时被多个 域名
所解析的情况,因此也会存在一个 IP 地址
对应到多个 域名
的情况;需要同时记录 域名
、IP 地址
以及他们之间的对应关系;
IP 地址
列表(不重复的)域名
列表 (不重复的)域名
快速查询出所对应的全部 IP 地址
列表IP 地址
快速查询出所对应的全部 域名
列表域名
时需要同步新增对应的 IP 地址
数据,域名
时,需要删除它所对应的全部 IP 地址
希望能保持 IP 地址
,域名
字段都是唯一主键,以简化 1 ,2 的唯一查询的效率(避免额外的去重操作);
但又必须要保存 多对多 的关联关系,以实现 3 ,4 的关联条件查询需求;
虽然大部分数据逻辑的问题是可以从业务代码的层面来覆盖处理的(例如将查询全部 list 后的去重操作放在代码里处理);
但我还是想单纯从数据库的角度讨论看看,是否有最优的表设计方案,在满足以上需求的同时,最大化避免在代码中来处理部分的逻辑;
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.