Хранение переменного количества значений чего-либо в базе данных - PullRequest
0 голосов
/ 19 января 2012

Я занимаюсь разработкой веб-приложения QA, которое будет иметь несколько баллов для оценки, отнесенных к одной из следующих категорий.

  • Управление звонками
  • Технические навыки
  • Управление билетами

Поскольку это вряд ли изменится, не стоит делать их динамичными, но хуже всего то, что точки такие же.

Сначала у меня была таблица «качества», в которой был столбец для каждой точки, но затем реквизиты изменились, и я вроде как заблокирован.

Мне нужно хранить «оценки», в которых все точки имеют свои значения, но, возможно, в будущем эти точки изменятся.

Я думал, что в таблице качества я мог бы сделать какую-то строку, у которой есть что-то подобное

1=1|2=1|3=2

Где у вас есть наборы идентификатора точки и пунктуации данного значения.

Может кто-нибудь указать мне лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Как уже много раз упоминалось здесь, на SO, НИКОГДА НЕ ОСТАВЛЯЙТЕ БОЛЬШЕ, ЧЕМ ОДНО ЗНАЧЕНИЕ В ПОЛЕ БД, ЕСЛИ ВЫ ХОТИТЕ ДОСТУП К ИМ ПОЛУЧЕННЫМ.

Поэтому я предлагаю иметь 2 дополнительные таблицы:

CREATE TABLE categories (id int AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL);
INSERT INTO categories VALUES (1,"Call management"),(2,"Technical skills"),(3,"Ticket management");

и

CREATE TABLE qualities (id int AUTO_INCREMENT PRIMARY KEY, category int NOT NULL, punctuation int NOT nULL)

затем сохраните и запросите ваши данные соответственно

1 голос
/ 19 января 2012

Эта таблица не нормализована.Он нарушает 1-ую нормальную форму (1NF) :

Evaluation
----------------------------------------
EvaluationId | List Of point=punctuation
   1         |   1=1|2=1|3=2
   2         |   1=5|2=6|3=7

Подробнее о Основы нормализации базы данных можно прочитать.Таблица может быть нормализована как:

Evaluation
-------------
EvaluationId 
   1         
   2         

Quality
---------------------------------------
EvaluationId | Point | Punctuation
   1         |   1   |   1   
   1         |   2   |   1
   1         |   3   |   2 
   2         |   1   |   5  
   2         |   2   |   6
   2         |   3   |   7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...