2014-03-12 74 views
0

我爲武術學校創建了排名和要求表。MySQL升級要求排名

每個學生都擁有武術的等級。等級名稱,腰帶顏色和等級要求被存儲。每個等級都會有很多等級要求。每個要求僅作爲引入要求的等級被認爲是要求。每個需求都與特定的等級相關聯。除白色帶外,所有等級都至少有一項要求。

我的ER圖:

Rank and Requirement ER Diagram

排名表:

CREATE TABLE IF NOT EXISTS `rank` (
    `rank_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `rank_nme` VARCHAR(45) NOT NULL, 
PRIMARY KEY (`rank_id`)) 
ENGINE = InnoDB; 

輸出:

+------------+--------------+----------------+ 
| rank_id | INT(10)  | AUTO_INCREMENT | 
+------------+--------------+----------------+ 
| rank_nme | VARCHAR(45) |    | 
+------------+--------------+----------------+ 

需求表:

CREATE TABLE IF NOT EXISTS `requirement` (
    `req_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `rank_id` INT UNSIGNED NOT NULL, 
    `req_nme` VARCHAR(45) NOT NULL, 
    `req_rank_nme` VARCHAR(45) NULL, 
    PRIMARY KEY (`req_id`), 
    INDEX `requirement_rank_id_idx` (`rank_id` ASC), 
    CONSTRAINT `requirement_rank_id_idx` 
    FOREIGN KEY (`rank_id`) 
    REFERENCES `rank` (`rank_id`) 
    ON DELETE RESTRICT 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

輸出:

+---------------+--------------+----------------+ 
| req_id  | INT(10)  | AUTO_INCREMENT | 
+---------------+--------------+----------------+ 
| rank_id  | INT(10)  |    | 
+---------------+--------------+----------------+ 
| req_nme  | VARCHAR(45) |    | 
+---------------+--------------+----------------+ 
| req_rank_nme | VARCHAR(45) |    | 
+---------------+--------------+----------------+ 

需要幫助,如果Im做是對還是錯還是你們有修改或任何建議!謝謝!

+0

什麼是'req_rank_nme'? – Strawberry

+0

req_name是示例黃色帶,req_rank_nme是白色帶。基本上這是你需要的名稱,然後才能跳到黃色帶的下一個等級。 –

+0

我明白了。我懷疑這是多餘的,因爲它可能是任何rank_id都需要完成所有前面的rank_ids的情況 - 但基本上可以。 – Strawberry

回答

0

首先在第一個表格中,您將需要一個唯一的ID,併爲db良好實踐自動增量。然後你用rank_id,rank_name去。如果您想將排名與用戶關聯起來,則需要另外一個外鍵才能完成。來自users.id的user_id。

現在你有rank_id增量,我不明白這一點。剩下的就好了,我想。

+0

?第一張桌子上有一個PK!?!? – Strawberry

+0

表格應如下所示:id rank_id rank_nme。現在你必須按照重要性的順序填充表格,所以你輸入的第一個排名是rank_id 1.這是你能夠獲得重要性的唯一方法。如果你想在後面增加一個額外的等級,你需要改變這個PK的rank_id並且不是一個好的理念。這是未來編輯的良好做法 – Alex7

+0

在這種情況下似乎是不必要的預防措施。 – Strawberry