在我的計劃,我需要一個組織結構圖開始與個人和一個管理器下對它們進行分組,然後根據組高級經理等這些高級管理人員......我怎麼這樣做關於數據庫?這是一種多對一的關係 - 我認爲這是非法的,也是不可能的,並且會像在創建其父母經理之前從子表開始 - 個人 - 一樣。 如果有人能幫助我指出正確的方向來設計我的數據庫,我真的很感激它!解決許多一對一,之前父表問題兒童
---- 編輯 ---- 這裏是我的問題的更詳細的解釋:
比方說,我的程序的用戶開始通過輸入三五個人,他們想使用在一些項目上,他們將繼續努力。現在,可以創建幾個可能的管理職位,並將僱員/其他(低級)經理分配到這些職位。用戶不需要創建任何特定位置,但可以選擇並分配他們喜歡的位置。唯一的限制是總會有一位高級經理 - 讓我們稱他爲總裁吧 - 並且他應該(但不必)只將5-10人分配給任何給定的經理(包括總裁)。所以在這個例子中,我們從35個人和一位總統開始。現在我們開始將35個人分組爲團隊,並將其中一人作爲經理。假設用戶決定有兩支6支隊伍,兩支9支隊伍和一支5支隊伍 - 每支隊伍都有一名成員擔任該隊伍的經理。所以現在我們有5個小組,每個小組都有自己的經理,現在這五位經理將被分配給總裁。該方案會讓這個去,但警告用戶,在最後一支球隊經理下的人數少於5人(僅4人)。因此,用戶現在可以(或在任何時間)返回並更改組織。所以我們假設他想解決這個問題並改變團隊。因此,他打破了9人的兩支球隊中的一支,並將一名個人分配給一個短小的球隊。這使得最後一支球隊有6支隊伍(5名個人隊員和1名經理),一支9支隊伍(8支隊員和1名隊友)以及一支8支隊伍(7支隊員和1名隊友)以及全部5名隊長總統。只有
在現實生活中這可以得到細分更遠 - 與管理的要高很多級的巢穴。我怎樣才能做到這一點?
是以下仍然有效喬Hopfgartner的答案嗎?即使角色將在稍後分配(在最初創建行之後),我是否可以創建「角色」列?或隨時更改?這個自引用外鍵可以爲null嗎? (就像在沒有經理分配的情況下那樣)或者我應該在他們被分配到一個團隊之後將這些個人移動到一個單獨的「團隊」表中,並且一旦他們被分配到一個團隊中並將他們移動到「經理」已被分配爲管理員,然後爲引用管理器表的團隊表添加外鍵?我也使用MySQL,所以你不能使用自引用ON UPDATE CASCADE或ON UPDATE SET NULL操作會影響我的特殊情況(因爲用戶無疑會經常改變任務)?
非常感謝你對我的幫助與此!
爲什麼多對一關係是「非法和不可能的」? –
你如何在多對一的關係中使用外鍵? – pleasehelpneeddesignhelp
您只需使用非唯一索引。假設table'employees'具有'id'和'manager_id'列,其中'id'是主鍵,'manager_id'可以是NULL並且用INDEX定義。然後你可以這樣做:'ALTER TABLE manager ADD FOREIGN KEY(manager_id)REFERENCES employees(id)ON DELETE SET NULL ON UPDATE CASCADE'。該表應該被定義爲使用InnoDB引擎來限制工作。請注意,[MySQL手冊](http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html)明確指出:_外鍵可以是自引用的(指的是同樣的表)._ –