2013-03-02 5 views
0

при создании приложения для управления студентами для частной школы при добавлении ученика пользователь должен указать, из какой государственной школы приходит ученик, после чего приложение показывает информацию об учениках в соответствии с той школой, из которой они пришли, проблема, с которой я сталкиваюсь когда пользователь вводит разные имена для одной и той же школы (например: «abc-paris», «abc/paris» и «abc paris» будут рассматриваться как 3 разные школы, а это не так), решение, о котором я думаю, состоит в том, чтобы сделать выбрать вместо образца ввода текста (в HTML), но я считаю, это плохое решение, потому что:Ввод текста или выбор?

  • список школ могут изменения в будущем, так что мне нужно, чтобы создать таблицу базы данных, которая содержит имена из школа.
  • Мне нужно сделать дополнительную работу для управления (добавления, удаления) школы.
  • Мне плохо, чтобы создать таблицу базы данных, содержащую только один столбец.

так что у вас есть лучшее решение для этой проблемы?

ответ

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 , Имя должно отображаться в раскрывающемся списке для каждой школы и идентификатора, используемого для выбора школы/вставки школы в базу данных.

+0

Школа содержит только одну информацию (один столбец), которая является именем, поэтому я поставил ее как столбец в таблице учеников, есть ли какое-либо правило для нормализации модели базы данных, в которой говорится, что это ложно, чтобы ввести имя школы в таблица ученика – user2080105

+0

@ user2080105, я отредактировал свой ответ с предлагаемой структурой таблицы. Обратите внимание, что вам нужно будет установить автоматическую идентификацию для обеих таблиц. Если вы не знаете, как это сделать, дайте мне знать. – w0051977

+0

спасибо, но еще один важный вопрос, почему я могу использовать идентификатор для таблицы School, если я уверен, что имя уникально (нет школ с тем же именем), поэтому название школы отлично работает как первичный ключ без добавления дополнительного атрибута (id)! – user2080105

Смежные вопросы