在为私立学校创建学生管理应用程序时,在添加学生时用户必须指定该学生来自哪个公立学校,之后应用程序根据他们来自的学校显示学生的信息,我面临的问题是当用户为同一所学校输入不同的名字时(例如:"abc-paris","abc/paris"one_answers"abc paris"将被认为是3个不同的学校,这不是),我认为的解决方案是选择而不是样本文本输入(在html中),但我发现这是一个糟糕的解决方案,因为:
- 的学校名单可能会在未来的变化,所以我需要创建一个包含学校名称的数据库表。
- 我需要做一些额外的工作来管理(添加,删除)一个学校。 我发现创建一个只包含一列的数据库表是不好的。
对于这个问题,你有什么更好的解决办法吗?
听起来您的数据模型没有规范化。我认为你应该在查找表中列出学校的名单。学校和学生之间应该有一对多的关系。在用户界面上,学校应该是一个下拉框,而不是一个文本框。
下面是一个建议的表结构: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。