如何创建具有多个值的实体?

时间:2015-03-22 12:15:10

标签: mysql

我想在MySql中实现以下内容,但我仍然感到困惑。我想创建一个包含以下参数的表学生:姓名,姓氏,学期,课程,电话(一个或多个) 如何插入一部或多部电话?(例如,学生可能有一个或多个手机号码或一个或多个家庭电话号码或两者都有)

到目前为止,我写过:

CREATE TABLE student(Name varchar(255) NOT NULL,Surname varchar(255) NOT NULL,
Semester INT NOT NULL,Courses varchar(255) ); 

- 我不知道如何为学生实体编写多个值(电话)

2 个答案:

答案 0 :(得分:0)

听起来你要求学生在电话号码上建立一对多关系。

例如,学生只有一个姓氏,所以这是一对一的关系。虽然他们可以拥有多个电话号码,但这是一对多的关系。

通常,存储一对多关系的最佳方式是将电话号码存储在另一个表中,也许称为phonenumbers。每个电话号码应该是phonenumbers表中的新行。要允许在两个表之间链接信息,您需要在phonenages表中使用一个名为student_id(或类似)的字段,该字段存储该电话号码所属学生的ID。

要从数据库中检索此信息时,要将多个电话号码连接到您的单个学生,您需要在学生表和SQL查询中的phonenumbers表之间使用join语句。

答案 1 :(得分:0)

为手机添加不同的行,例如Home_phone和Personal_phone

CREATE TABLE `students` (
  `Name` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `Surname` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `Semester` int(2) NOT NULL,
  `Courses` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `Personal Phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `Home Phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;