类似12306账号中的常用联系人这种不定长的数据是怎么存储的?数据库是如何建的?求指教

类似12306账号中的常用联系人这种不定长的数据是怎么存储的?数据库是如何建的?求指教

问题描述:

类似12306账号中的常用联系人、论坛回复 这种不定长的数据是怎么存储的

就这个网站来说,应该很少存在Unicode类型的数据,如果你真担心会有多语言的数据,比如维语、繁体中文等,可以用nvarchar类型存储。一般如果仅展示,那么以逗号或者其他符号分割每个联系人,然后以一列的形式存储即可,如果还需要做互动操作,建议创建一个关系表,存放当前人员和联系人的关系,通常是两列,一列是当前人员的主键,一列是联系人的主键。如

 create table uses
(id int primary key,
name nvarchar(64));

create table Users_Contacts
(userid int,ContactID int
 );

 create table Contacts
 (ContactID int primary key,
 ContactName nvarchar(64));

直接把数据的类型指定为varchar2类型即可

varchar来存储字符串,适合不定长

联系人这种不定长的数据,一般也是有一个固定的长度限制的,不可能太长。所以,从数据存贮的角度,只需要分配足够长的存贮空间就可以满足要求。
无论是数据库,还是编程,处理上基本是差不多的。

不定长的数据有两个办法处理。
一个是估计一个最大长度,转化成定长来存储,优点是查询效率高,缺点是存储效率低。
你看到论坛发帖,经常会说,不能超过10000个字。twitter发信息,不能超过140words,就是这个道理。

另一个做法是使用变长数据类型,比如varchar或者nvarchar。这种方式的存储效率比较高,但是查询效率就比较低。

varchar 适合英文,
nvarchar 适合中文
这两种, 本来就为不定长数据准备的, 你还犹豫什么?

不可能搞成 char 或者 nchar, 没有这种做法。

在内存采用链表的形式来管理·!在数据库采用表级关系连接啊·