日期:2014-05-20  浏览次数:20916 次

求助!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这样.组名和用户名可以改,不影响原来的结构.