2016-03-07 40 views
0

問題:在UI中生成樹的查詢

學生有母親,父親,姐姐和哥哥。如果學生的父母職業是老師,我想通過從後臺表中獲取數據在UI中生成樹。爲此,我創建了一張表來存儲學生信息,如學生ID(pk),學生姓名,性別,地址,父親,母親,father_occupation,mother_occupation等。另外,我在UI中添加了一個選項(複選框)發現學生的相對職業是否是老師。如果複選框爲true,則佔用列將更新爲true或1.

爲此,一個表是足夠的還是多於一個表需要?此外,查詢應該如何全部在一個表中,以及查詢應該如果需要維護在單獨的表中。

回答

0

你對這個模式有很多選擇,但是對於未來的規模,我會選擇層次類型表,然後爲層次結構中所涉及的人選擇屬性表。這將允許您在同一結構中跟蹤學生/教師關係(具有正確的屬性)。

目錄一會牽着你的分層信息,這將是你的人之間的關係:

id | parent_id | other_relationship_attributes 

表2將舉行關於個人信息:

id | occupation | gender | etc.. 

然後,您可以編寫一個可以遍歷查詢您的層次結構並從個人表中提取相關信息。

如果你的學生信息非常不同,那麼你的父母信息(可能),那麼第二個表將有意義分解成兩個表。 1給你的學生,一給父母。

的是什麼,這可能看起來像SQL,回答這個問題:「告訴我,他們的父母都是老師的所有學生一個例子:。

SELECT 
    student.id, 
    student.name, 
    CASE WHEN student.gender = 'F' THEN 'Daughter' ELSE 'Son' END as child_relationship 
    parent.id, 
    parent.name, 
    parent.occupation, 
    CASE WHEN parent.gender = 'M' Then 'Father' ELSE 'Mother End as parent_relationship 
FROM 
    person as student 
    INNER JOIN hier on student.id = hier.id 
    INNER JOIN person as parent on hier.parent_id = parent.id 
WHERE 
    parent.occupation = 'Teacher' 
+0

對不起,我是新來的DB在這裏,我們如何與表1和table2。可以用表結構來解釋我嗎?謝謝。 – user3095439

+0

我已經添加了一個SQL結構可能看起來像什麼樣的示例來展示這些關係,除此之外,如果你仍然在爲這個看起來或者爲什麼而苦苦掙扎可能是這樣看的,你可能只想在現實生活中嘗試一下(如果你沒有數據庫的可玩性,請查看sqlfiddle.com)。你可能想要閱讀基本的SQL和關係數據庫模式。 – JNevill