簡體   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