问题:

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

为此,一张桌子就足够还是需要一张桌子?此外,如果所有查询都在一个表中,那么查询应该如何;如果需要在单独的表中进行维护,查询应该如何。

最佳答案

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

表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'

关于mysql - 查询在UI中生成树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35844349/

10-12 00:40
查看更多