求助!C#数据库方面的,谁能给提供一个好的思路和解决方法。
我现在在做一个就是类似咱们用的手机的电话簿的功能,就是输入联系人,然后存储,可以查询修改删除什么的,还可以建立群组,可以给群组内的人群发。 
 我一共建立个3个表 
 第一个表:Customers(联系人表),字段有CName(姓名),CSex(性别),CTelNum(电话)等等还有其他字段,CName是主键 
 第二个表:CustomerGroup(群组表),字段有GName(组名),GRemark(附加说明),GName字段作为主键。 
 第三个表是中间表:MidGC,字段有GName(组名),CName(姓名),这两个字段共同作为主键。   
 感觉这样建立表好象冗余会小些,但是做起来就费劲了。 
 我的主窗体有一个da(datagridview)和tw(treeview),da用来显示联系人的,tw用来显示组名的(如果有组的情况下)。运行的时候tw里不展开,da里显示全部联系人,当点机tw里的组名的时候,da里就只显示这一组的联系人。 
 一个人可以属于多个组。(这就感觉有点费劲了)   
 然后想新建或编辑联系人的时候,都是弹出另一个窗体,编辑好后点确定就更新了 
          **这又涉及到窗体传值什么的,我用的是委托和构造函数,但感觉有点乱。 
 等再新建或编辑组的时候就更乱了。 
 并且我发现比如“李红”这个人本来属于“同事”这个组,但是当我把名字改成“李红名”的时候,他就不在这个组了,可能因为名字是主键?!   
 反正看似很简单的一个小程序,做起来那么费劲,后来我就做不下去了。 
 主要就是我没做过一个完整的程序,没有经验,所以方法什么的可能都不对,在论坛里也问了好多问题,虽然都解决了,但是每当解决一个问题,新的更难的问题又出现了,最后崩溃了   
 ##想看看一些好的例子,学习学习方法。有例子的网站就好了,谁手里有也可以发我邮箱里,谢谢了 
 我邮箱:xuyufeng822@163.com 
------解决方案--------------------我觉得你不应该有中间表。 
 一个人应该只在一个群里 
 在个人表后面直接加个字段表示所在群就行了
------解决方案--------------------第三个表是中间表:MidGC,字段有GName(组名),CName(姓名),这两个字段共同作为主键。   
 ==================================== 
 这个地方有问题 
 对于联系人来说 应该建立“联系人编号” 
 组的话 建立“组号”   
 这样第三个表就是记录“组号”与“联系人编号”的关系表
------解决方案--------------------联系人表: 
 fCustomers	fName	fSex	fTel	fGroup 
 1		aa	0	12356	001$002$003 
 2		bb	1	43216	002$003 
 ......   
 组表: 
 fGroup	fGroupName 
 001	xxgroup 
 002	yygroup 
 003	mmgroup 
 ......		   
 两张表,联系人可以属于多个组,用$分隔,查询某个组下的成员时用like去匹配..
------解决方案--------------------三个表里面的字段不行 
 比如重名就解决不了. 
 所以应用一个唯一不变的标识. 
 建议你用ID,应可以吧. 
 组也不要用组名.也要用组ID这样.组名和用户名可以改,不影响原来的结构.