我有一个小问题,那就是解决起来可能很简单,但是现在我不知道该怎么做。我尝试了很多不同的作品,但我有些困惑。
如何针对这种情况设计数据库?
(示例)我有2个表,其中一种语言,另一种语言。这样人们可以说一种或多种语言。
这是我得到的模型,但不知道如何解决问题
但是问题是我如何将Richard会说英语和中文的人表插入?我应该创建一个新表吗?
答案 0 :(得分:2)
教科书解决方案将是拥有一个“结” n:m表,其中包含成对的ID,其中每行代表一种语言的人的知识:
CREATE TABLE person_languages (
language_id NOT NULL,
person_id NOT NULL,
PRIMARY KEY pl_pk (language_id, person_id),
FOREIGN KEY pl_l_fk (language_id) REFERENCES languages(id),
FOREIGN KEY pl_p_fk (person_id) REFERENCES people(id)
);
在您的示例中,Richard会说英语和中文,因此此表中将有两行(2,1)和(2,2)。