Нормальный дизайн для этих данных - PullRequest
0 голосов
/ 15 июля 2010

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

  1. Существует переменное число конкретного компьютера, каждый из которых уникально сериализуется производителем.

  2. Каждая машина будет настроена пользователем для выполнения переменного числа задач, на которые способен данный тип машины.

  3. Все машины будут выбраны изтот же список задач, который может быть изменен с течением времени

  4. Наконец, у каждой задачи будет настройка времени, которая будет варьироваться от одной машины к другой.

Заключительное условие, кажется, мешает моим попыткам нормализовать это.

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

Машины :: Id, SerialNumber

Id - это первичный ключ.

Задачи :: Id, Описание

Id - это первичный ключ.

MachineTasks :: MachineId, TaskId

MachineId и TaskId - составной первичный ключ.MachineId - это внешний ключ, ссылающийся на Machines.Id.TaskId - это внешний ключ, ссылающийся на Tasks.Id.

ScheduledMachineTasks :: MachineId, TaskId, Time

MachineId и TaskId - составной первичный ключ.MachineId и TaskId являются составным внешним ключом, ссылающимся на MachineTasks.MachineId и MachineTasks.TaskId.

Обратите внимание, что это позволит планировать каждую задачу только один раз для каждого компьютера и требует дальнейшего расширения, если одна задача может быть запланирована несколько раз намашина.

1 голос
/ 15 июля 2010

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

СТОЛ МАШИНЫ
ID, MachineID

ТАБЛИЦА ЗАДАЧ
ID, задача

СТОЛ МАШИНОСТРОЕНИЯ
ID, MachineID (от FK до MACHINE.ID), TaskID (от FK до TASK.ID), время

...