文字输入还是选择?

时间:2013-03-02 09:43:11

标签: database user-input

在为私立学校创建学生管理应用程序时,添加学生时,用户必须指定学生来自哪所公立学校,之后应用程序根据他们来自的学校显示有关学生的信息,问题是face是当用户为同一所学校输入不同的名字时(例如:“abc-paris”,“abc / paris”和“abc paris”将被视为3个不同的学校而不是),我想到的解决方案是做一个选择而不是示例文本输入(在HTML中),但我发现这是一个糟糕的解决方案,因为:

  • 学校名单可能会在未来发生变化,因此我需要创建一个 数据库表,其中包含学校的名称。
  • 我需要做一些额外的工作来管理(添加,删除)学校。
  • 我觉得创建一个只包含一列的数据库表是不好的。

那么你有什么更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

听起来您的数据模型没有规范化。我想你应该在查询表中有一个学校列表。学校和学生之间应该有一对多的关系。在用户界面上,学校应该是一个下拉框而不是文本框。

以下是建议的表格结构:

CREATE TABLE School (ID int identity, Name varchar(30), primary key (ID))
CREATE TABLE Student (ID int, SchoolID INT, primary key (ID),
FOREIGN KEY (SchoolID) REFERENCES School(Id))

INSERT INTO School (Name) VALUES ('School1')
INSERT INTO School (Name) VALUES ('School2')
INSERT INTO School (Name) VALUES ('School3')

INSERT INTO Student (id,SchoolID) VALUES (1,1)
INSERT INTO Student (id,SchoolID) VALUES (2,1)
INSERT INTO Student (id,SchoolID) VALUES (3,2)
INSERT INTO Student (id,SchoolID) VALUES (4,3)
INSERT INTO Student (id,SchoolID) VALUES (5,3)
INSERT INTO Student (id,SchoolID) VALUES (6,3)

请注意,有两所学校和六名学生。其中两名学生上学1,一名学生上学2名,三名学生上学3。

用户界面应包含一个下拉框,供用户选择学校,即SELECT ID,Name FROM School。名称应显示在每个学校的下拉框中,用于选择学校的ID或将学校插入数据库。