如何创建下拉列表?

时间:2012-03-15 21:07:59

标签: postgresql drop-down-menu pgadmin

我是PostgreSQL的新手。

我想知道,如何将列作为下拉列表。

所以我有一张叫做学生的桌子。那里有一个名为“student_type”的专栏,意思是学生是兼职学生,全日制学生还是三明治课程学生。

所以我想让“student_type”成为一个有3个选项的下拉列表:“兼职”学生,“全职”和“三明治”。

我该怎么做?

(顺便说一句,我正在使用pgAdmin来创建数据库。)

2 个答案:

答案 0 :(得分:1)

下拉列表是客户端的事情,应该相应处理。但是,就涉及关系数据库而言,应该存在与idtype列的student_type关系,您可以像这样查询:

select st.id, st.type
from student_type st
inner join student s on s.type_id = st.id 
group by st.id, st.type
order by st.type

内连接是为了确保您不显示学生表中不存在的选项,因此如果选择则会产生空结果。在客户端,id应该是选项值,类型是选项文本。

如果由于数据库设计错误而没有student_type关系,或者只允许查询非规范化视图,您仍然可以使用学生关系:

select distinct student_type
from student
order by student_type

在这种情况下,student_type将是选项值和选项文本。

答案 1 :(得分:0)

我认为您以前使用过MS Access。无法使用pgAdmin创建这样的下拉列表,但是可以通过几种不同的方式来限制字段“ student_type”中的可接受值。不过,这不会是下拉列表或组合框。

  

例如:   您可以使用带有字典的表格,然后使用外键,   您可以使用约束来检查插入的值   您可以使用域(该字段是您的域的类型,并且该域基于   适当的约束)   您可以使用触发器(在插入或更新之前)   等

换句话说,Postgres是一个数据库,而不是一个用户界面 图书馆。它没有下拉列表,文本框,标签等等。那不是人类可以直接使用的方式。

PG可以做的是为此类小部件使用的数据提供稳定的来源。每个窗口小部件库都有自己的规则,这些规则用于绑定(即连接)到数据源。有些使您可以直接将可视组件(在这种情况下为下拉窗口小部件)连接到数据库,或者更好的是将数据库游标连接到数据库。

使用Postgres,您可以创建一个游标,该游标是内存中的窗口,可进入某种SELECT查询结果的窗口小部件或您喜欢的编程语言所绑定的游标。在您的示例中,游标或窗口小部件绑定将是对“ SELECT student_type FROM student_type”查询的结果。

顺便说一句,“ student_type”的值不应仅存储在 “学生”。您应该具有规范化的表结构,这里将为您提供一个“ student_type”表,其中包含三个选择,每行一个。 (那里 是执行此操作的其他方法。)您指定的值将是主键列。 (或者,您可以在带有“ 代理键作为主键,但是对于一个简单的键来说,这可能会过大 查找表。)“ student.student_type”列将成为外键 进入“ student_type.student_type”列。