考虑对两个表使用一对多关系:
学校
学生
- ID
- 学校ID
- 姓名第一
- 姓名姓氏
- 电子邮件
- ...
然后这样的查询会起作用:
SELECT school.name, student.nameFirst, student.nameLast, student.email
FROM student
INNER JOIN school ON student.schoolID = school.id;
如果一个学生可以上多所学校,您将需要一个连接表:
学校
学生
学生学校
第三个表是促进多对多关系的联结表。许多学生可能上零所、一所或多所学校。像这样的查询将起作用:
SELECT school.name, student.nameFirst, student.nameLast, student.email
FROM studentSchool
INNER JOIN school ON studentSchool.schoolID = school.id
INNER JOIN student ON studentSchool.studentID = student.id;
关于字段长度,在大多数情况下 MySQL 使用动态行大小,这样就不会浪费空间。如果你使用 VARCHAR(255),你最多可以存储 255 个字符,但它只需要最小的存储空间(加上一些小的开销)来存储你的值。请参阅http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html