关于sqlserver数据库设计表问题
现在有三种类型的数据
一:
属性 - 值
二:
切换器名称 - 入口 - 出口
三:
主机名 - 主机IP - 用户名 - 密码
现在我想将这些数据存放到一张表里面,按正常的思路来说,要在一张表里面存放这些字段,则需要创建9列:
属性 值 切换器名称 入口 出口 主机名 主机IP 用户名 密码
以上9列。
然后在将数据存进表里面的时候,会出现这样的情况
属性 值 切换器名称 入口 出口 主机名 主机IP 用户名 密码
--------------------------------------------------------
属性 值 NULL NULL NULL NULL NULL NULL NULL
NULL NULL 切换器名称 入口 出口 NULL NULL NULL NULL
NULL NULL NULL NULL NULL 主机名称 主机IP 用户名 密码
也就是说,每一行数据中只有对应的类型有值,而且他列都为NULL,这样看起来总是感觉不舒服,所以想找一个更好的设计方法,表最好不要超过2张,1张那就是完美。
------解决方案--------------------你要一张表的话就直接属性 值 切换器名称 入口 出口 主机名 主机IP 用户名 密码这样存咯,不过冗余大。
------解决方案--------------------从数据看不出三类数据有什么关联
------解决方案--------------------数据没有任何关联关系吗?
------解决方案--------------------如果数据没有任何关系,还是分开存储更好。否则定会出现数据NULL的字段。
------解决方案--------------------光存的话,其实无所谓,关键是看你要怎么用!
用法决定存法!
------解决方案--------------------这样虽然有冗余信息,但是业务上就简单了。
建议你在加一个类型字段type_id,就是表示你存储的是那种类型的信息,比如:
属性 ,值 = 1
切换器名称 , 入口 , 出口 =2
主机名 ,主机IP ,用户名 ,密码=3
这样查询的时候,你要查属性 ,值,那么就是:
select 属性 ,值 from tb where type_id = 1
就可以了,非常方便
------解决方案--------------------两张表:
1. 属性做为一个基本表(属性ID,属性值)
2. 数据表:属性ID, 切换器名称,入口,出口,主机名,主机IP ,用户名, 密码
还有,不知道你的入口和出口是否同时有,不是同