此数据的正常设计

时间:2010-07-14 22:03:19

标签: normalization

如何最好地在关系数据库中表示此类数据?

  1. 制造商各自唯一序列化的特定机器的可变数量。

  2. 用户将设置每台机器,以执行此类机器所能执行的可变数量的任务。

  3. 所有机器都将从可能被更改的相同任务列表中进行选择 随着时间的推移

  4. 最后,每项任务的时间设置会因机器而异。

  5. 最后的条件似乎搞砸了我将这种情况正常化的尝试。

2 个答案:

答案 0 :(得分:2)

计算机 :: 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 :(得分:1)

创建一个公共表,将每个对象相互关联,并附上补充数据。

机器表
ID,MachineID

任务表
ID,任务

MACHINETASK TABLE
ID,MachineID(FK到MACHINE.ID),TaskID(FK到TASK.ID),时间