?????请各位高手帮忙!!关于数据库的设计以及字符串的读取问题?(100分)

  • 主题发起人 主题发起人 brilliant83
  • 开始时间 开始时间
B

brilliant83

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想做一个程序,遇到了一个问题,是建表方面的,还有对于字符串数据的读取问题。
我想还是举个例子比较好。
有一个“爱好”字段,可以多选,有:足球,篮球,……一共50项爱好
还有其他的一些字段,譬如:姓名(填写)、职业(单选);
对于姓名、职业字段存取都比较简单,
我想请问一下,对于爱好字段如何设计比较好,是不是应该建立一个中间表---爱好表(如下)比较好:
爱好表:
ID 爱好
1 足球
2 篮球
3 看书
4 上网
5 旅游
… …
还有一个关系表:
关系表1:
姓名 职业 爱好
小黄 学生 1、2、4、5……

关系表2:
姓名 职业 足球 篮球 看书 上网 旅游 ……
小黄 学生 1 1 0 1 1 ……
请问上面的建表方法如何?有另外更好的表结构吗?
如果按关系表1存取数据,那么取数据的时候有应该如何操作,如何把它的没一项对应的爱好
显示在表格Grid中呢?
谢谢!
 
如果从比较标准和完美的角度来做,这种情况是很典型的主从表结构。
学生表(学号,姓名,……);//学号是关键字
爱好表(爱好ID,爱好名称);//爱好ID是关键字
学生_爱好表(学号,爱好ID);
学生表
1 张三
2 李四
3 ……

爱好表
1 篮球
2 排球
3 足球
……

学生_爱好表
学号 爱好ID
1 1
1 2
1 3
2 1
2 3
……

这样就建立了联系。
具体在窗体上显示实现你如果不懂主从表的话找本delphi数据库方面的书基本上都可以找到关于如何
建立主从表结构的方法。



 
to delphilai:

可以说的详细一点吗?你的意思我看的懂,但我现在还是个初学者,对字符串的操作也不是很熟悉,
所以麻烦你说一下具体的一些操作好吗?或者是一些具体的程序代码.
谢谢!


 
我的建议:
分为两张表:主表和爱好表
主表记录学生基本资料,并为每一个人增加一个唯一标识的字段ID作为主键
ID 姓名 职业 。。。。。。。
1 小黄 学生 。。。。

爱好表 ID作为外键与主表中的ID关联
ID 爱好
1 足球
1 篮球
1 羽毛球
。。。。。

这样查询某一同学的爱好时只需 select * from 爱好表 where Id=X 即可,这种建表方式
灵活性最强。与楼主的关系表1比,不需要拆分字段 爱好,易于查询操作,与表2比灵活性大,如果有新的
爱好加入时不用增加表的字段。
这应该是最好的方法
 
同意delphilai,表述的比较清楚。
328xy的下面的表述不很清楚。

爱好表 ID作为外键与主表中的ID关联
ID 爱好
1 足球
1 篮球
1 羽毛球
。。。。。”
如果“ID”是主表的ID那还行,如果ID是爱好表的ID就不行的。
328xy你这里的ID是主表的ID吧?这样我比较赞成,其实感觉直接用主表的ID做外键也成。

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部