求一个优雅的数据表设计思路
数据
mysql 数据库中主要存储 2 个 主要数据:IP 地址 、域名
数据关系
IP 地址是根据新增的域名解析后存储的,因此会存在一个域名要对应多个IP 地址的记录;- 同一个
IP 地址也会存在同时被多个域名所解析的情况,因此也会存在一个IP 地址对应到多个域名的情况;
需要同时记录 域名、IP 地址 以及他们之间的对应关系;
业务需求
查询
- 能快速查询到所有的
IP 地址列表(不重复的) - 能快速查询出所有的
域名列表 (不重复的) - 能根据指定
域名快速查询出所对应的全部IP 地址列表 - 能根据指定
IP 地址快速查询出所对应的全部域名列表
更新
- 新增一个
域名时需要同步新增对应的IP 地址数据, - 删除一个
域名时,需要删除它所对应的全部IP 地址
请问最优雅的表结构该如何设计?
希望能保持 IP 地址 ,域名 字段都唯一主键,以简化 1 ,2 的唯一查询的效率(避免额外的去重操作);
但又必须要保存 多对多 的关联关系,以实现 3 ,4 的关联条件查询需求;
虽然大部分数据逻辑的问题是可以从业务代码的层面来覆盖处理的(例如将查询全部 list 后的去重操作放在代码里处理);
但我还是想单纯从数据库的角度讨论看看,是否有最优的表设计方案,在满足以上需求的同时,最大化避免在代码中来处理部分的逻辑;
