mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決
問(wèn)題描述
我有兩個(gè)表,一個(gè)是職工表,一個(gè)是部門(mén)表。
職工表有職工號(hào)和部門(mén)號(hào)兩個(gè)屬性
部門(mén)有部門(mén)號(hào)和經(jīng)理號(hào)兩個(gè)屬性。
顯然,經(jīng)理號(hào)應(yīng)該以職工表的職工號(hào)為外鍵參考,而職工表的部門(mén)號(hào)應(yīng)該以部門(mén)表的部門(mén)號(hào)為外鍵參考。
這么一來(lái)就會(huì)出現(xiàn)兩個(gè)表互相為外鍵參考的矛盾,應(yīng)該如何解決呢?
問(wèn)題解答
回答1:表結(jié)構(gòu)不合理!應(yīng)該添加角(jue)色表職工表里添加角色字段角色表id角色名1經(jīng)理2女秘書(shū)3搬磚狗職工表id角色部門(mén)姓名111經(jīng)理221小蜜331屌絲部門(mén)表id部門(mén)名1產(chǎn)業(yè)部2事業(yè)部3研發(fā)部回答2:“互為外鍵參考”為什么是矛盾?
如果想新增部門(mén),這個(gè)部門(mén)經(jīng)理也是新人,可以先用一個(gè)舊職工“充當(dāng)”經(jīng)理,待添加成功后再修改掉。比如新增財(cái)務(wù)部和經(jīng)理張三:
insert into 部門(mén)表 select id=財(cái)務(wù)部, manager=老王insert into 職工表 select id=張三, department=財(cái)務(wù)部update 部門(mén)表 set manager=張三 where id=財(cái)務(wù)部
隨之而來(lái)的問(wèn)題是,當(dāng)兩個(gè)表都為空時(shí)怎么添加?這時(shí)可以先添加一行數(shù)據(jù)后再補(bǔ)充外鍵約束。
