日期:2014-05-17  浏览次数:20582 次

表中某列 个数不确定怎么办
本帖最后由 starlightextinction 于 2013-03-05 13:55:56 编辑
比如:
A表是班级表  里面有3条数据,ClassId分别为1、2、3
B表是班级成员表,通过ClassId和A表关联
B表除了ClassId外,还有Student这个字段,比如用来装学生姓名

现在的问题是,每个班人数不一样

比如1班有:甲1 甲2     ,2个人
   2班有:乙1         ,1个人
   3班有:丙1 丙2 丙3  ,3个人

怎么才能才Student字段中装下这些学生名字啊?
(不能用字符串链接 Student='甲1,甲2' 这种,而是当ClassID=3时,B表的Student有3个独立的数据,丙1、丙2、丙3)

我听说要要有什么子表?联合主键?什么玩意的。。。没懂啊。。。从来没建立或用过这种表


————————————————

是不是可能这样理解:

比如ClassId=3

那B表就有3条数据

主键ID    ClassID    Student
1               3            丙1
2               3            丙2
3               3            丙3

这样是吧?

------解决方案--------------------
要主键就这样
------解决方案--------------------
引用:
要主键就这样


难道还可以不要主键?用ClassId当主键吗?那又怎么处理重复问题?
------解决方案--------------------
用学号什么的当主键不就行了吗。联合主键就是把多个字段当成主键,因为有时候一个字段不能唯一表示一个事物,需要几个一起才能表示。例如姓名 年龄 出生日期假设没有出生日期一样的名字也一样因为有重名和同出生日期的,每个都不能唯一确定一行,就用这两列一起组合成联合主键,可以唯一确定一行
------解决方案--------------------
引用:
引用:要主键就这样

难道还可以不要主键?用ClassId当主键吗?那又怎么处理重复问题?


建议你先看点数据库理论知识,看看实体、属性、键等概念,然后就明白主键可以用一个属性表示也可以多属性联合表示,联系到实际中成员一般有成员号,身份证等唯一信息,用它们都行,就你的表中,如果不加主键,那同一个班有相同姓名的人就没办法区分了