2014-12-07 4 views
0

В настоящее время у меня есть 48 полей. enter image description hereпроблема с нормализацией базы данных

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

enter image description here

Это не кажется очень эффективным. Может ли кто-нибудь помочь мне понять, как нормализовать эту базу данных?

Должен ли я пытаться размещать информацию о сотруднике в одной таблице, информацию о работе в другой таблице, а затем иметь таблицу поиска оборудования?

+1

Вам необходимо учитывать различные сущности, а затем определить взаимосвязь между ними. Основываясь на том, что вы показали, у меня будет таблица «Employee» с текущей информацией; затем будет иметь связанную таблицу для предшествующего/текущего задания (установить флаг, указывающий текущий); вы не упоминаете, связано ли оборудование с работой, поэтому я предполагаю, что это так, создавая таблицу оборудования и относящуюся к работе сотрудника или сотрудника. функция реляционной базы данных не исключает избыточность ... это избыточность LIMIT ... –

+0

Есть ли способ объединить текущие/прошлые задания в один ключ? Например, есть ли способ определить, прошло ли оно или текущее по дате? –

+1

Я предлагаю ключ «AutoNumber» для каждой таблицы.Это поддерживает уникальный идентификатор для каждой записи в каждой таблице. Затем посмотрите на все атрибуты задания - гайку, только текущую, но прошедшую. Это означает, что таблица «Задания» имеет начало, конец, минимальную и максимальную зарплату, заголовок и т. Д. Одним из способов указать текущее является отсутствие даты окончания, или вы можете иметь флаг, обозначающий «текущий», или вы могли бы использовать самая последняя дата начала. Выделите отношения как «один к одному», так и «один ко многим». 1-1 вы можете рассмотреть возможность включения полей в одну таблицу, а также создать связанную таблицу. –

ответ

0

Текущее занятие, последнее задание и предыдущее задание могут содержать всю ту же таблицу. Если вы отсортируете эту таблицу по дате начала работы с нисходящей, тогда у вас есть текущая, последняя и предыдущая. Таким образом, вам не нужна и не требуется отдельная таблица для каждого из них, которая действительно соответствует понятию «работа». Если сортировки по дате недостаточно, вы можете добавить столбец «Тип задания» (текущий, предыдущий и т. Д.). Опять же, мы все еще используем только одну таблицу.

То же самое касается оборудования. Вам действительно все равно, если лимит равен 3 последним, или 300 последним. Создавая нормализованную таблицу, форма ONE может редактировать все типы, и вы сохраняете МАССИВНЫЕ суммы кодирования и построения таблиц, программного обеспечения пользовательского интерфейса, а также создания запросов для получения + отображения последних трех заданий в форме.

Тот факт, что ваш дизайн с FAR LESS стоимостью разработки позволяет 3 или 300 последних заданий, действительно спорный. Более важно, если какой-то менеджер приходит и теперь хочет, чтобы вы сохранили последние 4 задания, у вас нет большого массива редизайна. И вы можете на лету добавлять новые типы заданий. Таким образом, вместо текущего и, как утверждают ранее, вы также можете иметь незавершенные или неудачные задания. Поэтому добавление новых бизнес-правил означает, что вы не добавляете новый тип таблицы заданий, а только «тип» в один столбец, который вы уже используете, чтобы определить задание как текущее или предыдущее.

+0

У вас также может быть дата начала и окончания заданий - текущее задание будет с нулевой датой окончания. – citizenkong

0
  1. Идентифицируйте подобные объекты и создайте одну таблицу для их хранения. В вашем дизайне у вас есть три стола для оборудования, но каждый предмет оборудования имеет одинаковые поля; они должны быть одной таблицей. Точно так же для рабочих мест каждая работа практически одинакова; они должны быть одной таблицей. То же самое для отделов.
  2. Выведите один или несколько столбцов в каждой таблице, которые могут однозначно идентифицировать строку в таблице (то есть, если вы знаете значения для этих столбцов, это невозможно, поскольку там будут две строки с этими значениями). Это ваши основные ключи для ваших таблиц.
  3. Определите случаи, когда элемент в одной таблице должен «указывать на» (см.) Элемент в другой таблице. В этом случае убедитесь, что ссылочная таблица имеет набор столбцов, соответствующих указанной таблице.

Когда вы это сделаете, у вас будет начало правильно обработанного реляционного дизайна базы данных.

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