首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于sqlserver数据库设计表有关问题

2013-11-06 
关于sqlserver数据库设计表问题现在有三种类型的数据一: 属性 - 值二: 切换器名称 - 入口 - 出口三: 主机

关于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 ,用户名,  密码

还有,不知道你的入口和出口是否同时有,不是同时有的话,可以放在属性表里面。


[解决办法]

引用:
Quote: 引用:

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

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

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

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

select 属性 ,值 from tb where type_id = 1

就可以了,非常方便

6楼跟我之前想的一样,就是不知道有没有更好一点的存储方式


我也试了,如果把数据拆分成列,那么到时候,比如:属性-值,拆分成2行数据,一行存属性,一行存列,
这样看上去倒是好一点,

但是在查询的时候,还是得行转列,比较麻烦。

其实设计表,就是得考虑:性能,业务,占用存储,开发速度。

我原来的公司,需要非常快的开发速度,于是,就把不同业务的数据,放到一个表中,通过增加一个func_code字段,来区分是不同功能产生的,然后后面是一堆字段,A业务用xx字段,B业务用yy字段,其他都是空着的,这样的话,非常方便开发,在理解业务的时候,也很容易,不同业务,用不同的字段。

但是,如果你不懂业务,就会很迷惑,看不懂,怎么一眼看过去,一堆没用的字段放在那儿,全是null。

也想过拆分,但是这样也麻烦,就是刚才说的,开发的难度就上去了,而且性能也不会太好,因为你得做动态的行转列,每个业务用到的字段个数,和字段名称,都不完全一样,这可非常的麻烦。

所以,你一开始想的还是对的,这种表的设计,虽然看着,有很多null值,但是开发上就比较容易,性能也不错。

热点排行