首页 新闻 赞助 找找看

SQL Server中数据库设计是否合理![关于使用varbinary]

0
悬赏园豆:5 [已关闭问题]

数据库里面的varbinary字段类型我很少使用! 不过我现在使用了! 感觉有点麻烦! 想问问各位,给点建议和意见吧,感谢!

场景:

Table: UserInfo:用户表

Filed: id int , name , age , gender

Table: UserFriend :好友表

Filed: id int, userId int

说明:UserFriend表的UserId引用UserInfo表的Id , 如果一个用户有100个好友,则这一个人就有100条数据! (感觉这样不是很好)

2.

Table: UserFriend :好友表

Filed: id int, userFriendIdStr nvarchar(max)

说明:这种方式保存好友Id格式为:1,2,3,4...       这样的话,一个用户无论有多少个好友,只有一条数据!(感觉不上面的好些),当然也可以把userFriendIdSt字段放在userInfo表里面

3.Table:UserInfo

Filed: id int ,name,age,gender ,FriendIds nVarBinary(max)

说明: 使用这种方式,我希望把朋友Id放在一个List<int>集合里面,把他序列化为二进制流保存到FriendIds里面.而使用的时候每次反序列为List<int>.

//序列化为流

using (MemoryStream ms = new MemoryStream())
{
   BinaryFormatter bf = new BinaryFormatter();
   bf.Serialize(ms, obj);
   byte[] byteArr = ms.ToArray();
   return byteArr;
}

//还原为对象

using (MemoryStream ms = new MemoryStream(bytes))
            {
                BinaryFormatter bf = new BinaryFormatter();
                Object obj = bf.Deserialize(ms);
                return (T)obj;
            }

如果使用nVarBinary字段的话,在写T-sql或者存储过程的话,我感觉一些逻辑处理不了,比如对方是否已经为我的好友.等等...

向这种情况,各位是如何处理的呢? 你们有什么好的意见呢?

非常感谢各位!:)

JoinJ的主页 JoinJ | 菜鸟二级 | 园豆:325
提问于:2010-06-03 11:53
< >
分享
其他回答(1)
0

那是自然了,二进制了,需要拿出来在代码中处理。

设计方面给你点意见吧。

加好友,和好友列表分开做。

 

是否加好友在其他地方存储,需要查询就查询,好友列表用来登录之后显示用,直接反序列化就可以了

Virus-BeautyCode | 园豆:1619 (小虾三级) | 2010-06-03 13:00
谢谢你的建议!
支持(0) 反对(0) JoinJ | 园豆:325 (菜鸟二级) | 2010-06-04 11:41
0

过些时间你就会懂了。

数据库的多数时候的设计的关键是怎么能加快访问速度就怎么来。简单说就是空间换时间。

毕竟硬盘值几个钱。反过来你就ABC了。

路过秋天 | 园豆:4787 (老鸟四级) | 2010-06-04 11:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册