查询在UI

时间:2016-03-07 12:57:19

标签: mysql database

问题:

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

为此,一个表是否足够或需要多个表?另外,如果所有在一个表中,查询应该如何,以及如果需要在单独的表中维护,查询应该如何。

1 个答案:

答案 0 :(得分:0)

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

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