日期:2014-05-17  浏览次数:20991 次

关于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张那就是完美。
sqlserver 设计 数据表 数据库

------解决方案--------------------
你要一张表的话就直接属性        值        切换器名称      入口      出口        主机名        主机IP  用户名  密码这样存咯,不过冗余大。
------解决方案--------------------
从数据看不出三类数据有什么关联
------解决方案--------------------
数据没有任何关联关系吗?
------解决方案--------------------
如果数据没有任何关系,还是分开存储更好。否则定会出现数据NULL的字段。
------解决方案--------------------
光存的话,其实无所谓,关键是看你要怎么用!
用法决定存法!

------解决方案--------------------
这样虽然有冗余信息,但是业务上就简单了。

建议你在加一个类型字段type_id,就是表示你存储的是那种类型的信息,比如:

属性 ,值 = 1        
切换器名称 , 入口 , 出口  =2      
主机名 ,主机IP ,用户名 ,密码=3

这样查询的时候,你要查属性 ,值,那么就是:

select 属性 ,值 from tb where type_id = 1

就可以了,非常方便
------解决方案--------------------
两张表:
1. 属性做为一个基本表(属性ID,属性值)
2. 数据表:属性ID, 切换器名称,入口,出口,主机名,主机IP ,用户名,  密码

还有,不知道你的入口和出口是否同时有,不是同