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.