簡體   English   中英

MySQL工作台未顯示表之間的正確關系

[英]MySQL workbench doesn't show the correct relationship between tables

我在MySQL上建立了一個數據庫,其中有兩個相互關聯的表,如下所示:

create table employee (
    -> employeeID int not null auto_increment primary key,
    -> emFirstName varchar(50) not null,
    -> emLastName varchar(50) not null)
engine=innodb;

create table address (
    -> employeeID int not null primary key,
    -> emAddress varchar(50) not null,
    -> foreign key `emid` (employeeID) references employee(employeeID)
    -> on delete cascade on update cascade)
engine=innodb;

通知在address表中,我設置employeeID ,其中的參考文獻employeeIDemployee表,是主要的鍵,使得兩個表是在一對一的關系。 我為每個記錄添加以下內容:

MariaDB [dummy]> select * from employee;
+------------+-------------+--------------+
| employeeID | emFirstName | emLastName   |
+------------+-------------+--------------+
|          1 | January     | Ananda Putra |
+------------+-------------+--------------+

MariaDB [sampoerna]> select * from address;
+------------+-----------+
| employeeID | emAddress |
+------------+-----------+
|          1 | Sidomulyo |
+------------+-----------+

我試圖將記錄添加到employeeID1address表中,但失敗了,表明一對一關系起作用了。 但是,為什么在MySQL工作台上對這些表進行反向工程時卻得到相反的結果? 它給了我這個:

圖片中描述的兩個表之間的關系

這個模式定義了一對多關系,不是嗎?

我的桌子擺放不正確嗎? 感謝您的回答。

您的測試將測試PK和FK,而不是1:1。 在此代碼中,地址表中可能沒有雇員ID。 對於1:1,您需要另外一個FK以及另一個CK(候選密鑰)。

您將FK與“ relationship”混淆,將“ F關系”與“關系/關聯”混淆。 在關系模型表中表示值之間的關系/關聯 類似地,在原始的ERM(實體關系模型)中,從關系(船)/關聯菱形到實體框的線表示其表之間的FK。 這些是具有基數的“關系”。

FK約束說,列列表的值必須是另一列列表的值。

在偽ER方法和真實ER的一些不好的表述中,所有關系/關聯都被化為關聯實體,而FK被稱為關系。 但是每個FK在其引用實體和被引用實體上都有一個關聯的二進制關系(關聯)/關聯。 它由一個表表示,該表只是被引用表中的兩個對應列。 當我們將一個歸因於FK時,這就是基數。

您說的是二進制關系“員工eid具有地址ID”,這是地址表的(eid,id)投影,為1:1。 這將由eid&id分別為CK(PK或UNIQUE NOT NULL)強制執行。 然后,要使這兩個特定表保持一致,就需要兩種方式都使用FK。 如果您打算有沒有地址的員工,那就是1:0-或-1,以一種FK方式表示當前代碼。 可空FK引入更多的0或。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM