Как мне нормализовать эту таблицу? - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь найти наилучший способ нормализации следующего набора данных, используя Access 2010.

Я строю базу данных для отслеживания ввода данных от группы работников.Они читают документы, которые представляют собой карты с кодовыми номерами для всех заданий по установке, а также связанную с ними информацию для этих заданий, и вводят эти элементы в базу данных.Существует два основных типа кодовых номеров, которые собираются из каждого документа.В настоящее время я записываю все свои данные на плоский стол.У меня есть следующие поля (* указывает, что поле может быть пустым):

  • workerID : идентификационный номер работника
  • documentID : уникальныйстрока, связанная с каждым документом
  • work_date : дата, когда работник ввел эти данные
  • code1 : первый тип кодового номера
  • * code1Year : год установки, связанный с code1
  • * code1Type : строка для типа задания code1
  • * code1Loc1 : номер адреса для кода 1 (тип 1)
  • * code1Loc2 : номер адреса для кода 1 (тип 2)
  • * code1Loc3 : номер адреса дляcode1 (type 3)
  • code2 : второй тип номера кода
  • groupID : группа членства для кода (может использоваться с code1 илиcode2)
  • code1verified : логический флаг, указывающий, что code1 и связанная с ним информация были проверены как правильно транскрибированные изdocument
  • code2verified : логический флаг, указывающий, что code2 и связанная с ним информация были проверены как правильно расшифрованные из документа

Вот мой план нормализации:

  • tableName: (PRIMARY_KEY), (Foreign_key), field1, field2 ...
  • работников: (WORKER_ID)
  • групп: (GROUP_ID)
  • code1Type: (CODE1TYPE_ID), code1Type
  • workDays: (WORKDAY_ID), (worker_id), work_date
  • locTypes: (LOC_ID), locationType
  • code1: (CODE1_ID), (workday_id), code1, (code1Type_id), (group_id), code1verified
  • code1Loc: (CODE1LOC_ID), (code1_id), (loc_id), code1Loc
  • code1Year :(CODE1YEAR_ID), (code1_id), code1Year
  • code2: (CODE2_ID), (group_id), (workday_id), code2, code2verified

Это лучший способ связать эти значения сдруг друга?

1 Ответ

0 голосов
/ 16 августа 2011

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

Я предполагаю, что code1Year, code1Type и code1Loc* также не кодируются в code1.

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

  • map_table: (MAP_ID) , WORKER_ID, GROUP_ID, WORKDAY_ID, CODE1_ID, CODE1LOC_ID, CODE1YEAR_ID, CODE2_ID

Я бы рассмотрел удаление отдельной таблицы для CODE1YEAR, так как это должно быть просто целое число, и как часто этоты собираешься пересмотреть 2009 год к чему-то другому.Аналогично WORKDAY_ID, почему бы просто не сделать его полем даты.

Для меня не очевидно, почему Code1 и Code2 включают group_id и workday_id

Также WORKER_ID и GROUP_IDкажутся немного пустыми, если только они не используются только для проверки идентификаторов

...