繁体   English   中英

Mysql一对多表

[英]Mysql one to many table

我正在为一家口译公司制作一个数据库。 每次预约只能有一种语言和只有一名口译员,但口译员可以说多种语言。 如何设置外键?

我有这些表:

Appointments (fields are start (datetime, primary key), location, subject, language, interpreter)

Language (only field is language (VARCHAR 50), that's the primary key. I didn't use an ID AI number here)

and interpreters (id (int, primary key), first name, last name, email address, language)

口译员表是什么让我失望。 我可以为一种语言在约会和口译员上做外键。 但我想要它,这样我就可以让用户添加一个新约会,然后从语言列表中输入语言,然后选择可以使用该特定语言的口译员。 有会说一种以上语言的口译员(例如西班牙语和葡萄牙语以及中文普通话和中文粤语)

我是这方面的新手,一直在尝试阅读一对多关系,但老实说我很困惑。

您需要一个连接表:

CREATE TABLE interpreter_language (
    interpreter_id INT,
    language VARCHAR(50),
    PRIMARY KEY (interpreter_id, language),
    FOREIGN KEY (interpreter_id) REFERENCES interpreters (id),
    FOREIGN KEY (language) REFERENCES language (language)
);

我会设置语言表,以便每种语言都有一个唯一的 ID(例如 L01)。

Column 1 = Language description; Column 2 = Language ID 

然后在解释器表中存在的每一行都是来自语言表的解释器+语言代码。

Column 1 = First name; Column 2 = Last name; Column 3 = Email; Column 4 = language code

在此表中,您可以有多个解释器,但每行的语言是唯一的。

在您的约会表中,您从语言表中指明首选语言。 因此,还创建了一个解释器池,这些解释器具有解释器表中的代码。

在此结构中,将您的语言表视为核心表,仅在调用代码时提供代码和描述。 需要定义语言的表只能从该表中可用的表中提取。 由于一个人会说一种以上的语言,因此口译员的信息没有理由不应该在各自的表中多次生成。

ER图示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM