在UI中生成树的查询

问题描述:

问题:在UI中生成树的查询

学生有母亲,父亲,姐姐和哥哥。如果学生的父母职业是老师,我想通过从后台表中获取数据在UI中生成树。为此,我创建了一张表来存储学生信息,如学生ID(pk),学生姓名,性别,地址,父亲,母亲,father_occupation,mother_occupation等。另外,我在UI中添加了一个选项(复选框)发现学生的相对职业是否是老师。如果复选框为true,则占用列将更新为true或1.

为此,一个表是足够的还是多于一个表需要?此外,查询应该如何全部在一个表中,以及查询应该如果需要维护在单独的表中。

你对这个模式有很多选择,但是对于未来的规模,我会选择层次类型表,然后为层次结构中所涉及的人选择属性表。这将允许您在同一结构中跟踪学生/教师关系(具有正确的属性)。

目录一会牵着你的分层信息,这将是你的人之间的关系:

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