数据库里面的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或者存储过程的话,我感觉一些逻辑处理不了,比如对方是否已经为我的好友.等等...
向这种情况,各位是如何处理的呢? 你们有什么好的意见呢?
非常感谢各位!:)
那是自然了,二进制了,需要拿出来在代码中处理。
设计方面给你点意见吧。
加好友,和好友列表分开做。
是否加好友在其他地方存储,需要查询就查询,好友列表用来登录之后显示用,直接反序列化就可以了
过些时间你就会懂了。
数据库的多数时候的设计的关键是怎么能加快访问速度就怎么来。简单说就是空间换时间。
毕竟硬盘值几个钱。反过来你就ABC了。