可变长度的集合List 怎么存储到数据库中
可变长度的集合List<long> 如何存储到数据库中?
1:对于SQL和mysql关系数据库来说,如何存储长度可变的集合呢?
比如
class Person
{
public string name;
public int age;
public int gender;
//goods表示此人拥有的物品,它的长度可能是0--N
public List<long> goods;
}
Person pone;
如何将pone的数据存储到数据库中? 尤其是如何存储可变长度的集合List<long> goods; ?
------解决思路----------------------
关系数据库并不是层状数据库,它只能保存类似Excel工作表那样的“平面”数据。如果你专门学习过关系数据库就会学到了,所有的数据都是平面的、关系的。例如数据库表: 某人拥有的物品长度(Person_Name, 长度) ,这个表的两个字段,一个是外键,引用 Person 表的主键,另一个就是你的“长度”。
------解决思路----------------------
person一张表 goods一张表 goods里面存person的id
------解决思路----------------------
子表子表子表
------解决思路----------------------
不用存人物1 你这边放个人物1的ID就可以了
别告诉我你的表没有ID这个主键
------解决思路----------------------
有多种方法可将可变长度的数据集合一次性插入数据库,只是你暂时还没去了解。
不过,我建议你在了解上面的这些方法之前先合理的设计表及其关系,你提问中已经看得出来,如果你要这样插入的话,你的表设计存在不合理。
------解决思路----------------------
因为不了解你实际的需求,比如这些long要不要跟其它地方关联查询,或者本身会不会作为查询条件之一,所以稳妥点的做法都是做主子表,但如果你这个数据仅仅是记录,而且所在表的查询频率并不频繁,甚至只是基础数据,基本都是从缓存读取的话,破坏数据库设计范式也许不可,用逗号分割,合并成一个字符串记录进一个字段,当然字段长度你就要预估了
------解决思路----------------------
如何存储可变长度的集合List<long> goods; ?
可将 goods 用 xml序列化 后存入 XML 类型字段
------解决思路----------------------
序列化json 存字符串
到时候 可以反序列化回来..
不过LZ你确实有点那个了...因为这本身 真的是主重的关系...
不晓得你在纠结什么...
而且基于你这样 把"对象的对象集合"存入到一个"字段"中的做法 估计是你自创的吧...
1:对于SQL和mysql关系数据库来说,如何存储长度可变的集合呢?
比如
class Person
{
public string name;
public int age;
public int gender;
//goods表示此人拥有的物品,它的长度可能是0--N
public List<long> goods;
}
Person pone;
如何将pone的数据存储到数据库中? 尤其是如何存储可变长度的集合List<long> goods; ?
------解决思路----------------------
关系数据库并不是层状数据库,它只能保存类似Excel工作表那样的“平面”数据。如果你专门学习过关系数据库就会学到了,所有的数据都是平面的、关系的。例如数据库表: 某人拥有的物品长度(Person_Name, 长度) ,这个表的两个字段,一个是外键,引用 Person 表的主键,另一个就是你的“长度”。
------解决思路----------------------
person一张表 goods一张表 goods里面存person的id
------解决思路----------------------
子表子表子表
------解决思路----------------------
不用存人物1 你这边放个人物1的ID就可以了
别告诉我你的表没有ID这个主键
------解决思路----------------------
有多种方法可将可变长度的数据集合一次性插入数据库,只是你暂时还没去了解。
不过,我建议你在了解上面的这些方法之前先合理的设计表及其关系,你提问中已经看得出来,如果你要这样插入的话,你的表设计存在不合理。
------解决思路----------------------
因为不了解你实际的需求,比如这些long要不要跟其它地方关联查询,或者本身会不会作为查询条件之一,所以稳妥点的做法都是做主子表,但如果你这个数据仅仅是记录,而且所在表的查询频率并不频繁,甚至只是基础数据,基本都是从缓存读取的话,破坏数据库设计范式也许不可,用逗号分割,合并成一个字符串记录进一个字段,当然字段长度你就要预估了
------解决思路----------------------
如何存储可变长度的集合List<long> goods; ?
可将 goods 用 xml序列化 后存入 XML 类型字段
------解决思路----------------------
序列化json 存字符串
到时候 可以反序列化回来..
不过LZ你确实有点那个了...因为这本身 真的是主重的关系...
不晓得你在纠结什么...
而且基于你这样 把"对象的对象集合"存入到一个"字段"中的做法 估计是你自创的吧...