0

我有一个数据库,其中有药物提醒和药物提醒有不同的时间表,这些时间表(一天两次)有不同的提醒发生(提醒到来的日期),所以都有一对多的关系。

                        |----SCHEDULE1 ----|----OCCURRENCE1

                        |----SCHEDULE1 ----|----OCCURRENCE2

MEDICATION_REMINDER --- |----SCHEDULE2 ----|----OCCURRENCE1

                        |----SCHEDULE2 ----|----OCCURRENCE2

现在我可以存储这些值

MEDICATION_REMINDER(MEDICATION_REMINDER_ID,OTHER_DETAILS)

SCHEDULE(MEDICATION_REMINDER_ID_FK,SCHEDULE_ID,TIMES) //PK是MEDICATION_REMINDER_ID_FK,SCHEDULE_ID

OCCURRENCE(SCHEDULE_ID_FK,OCCURRENCE_ID,DATE_TIME) //目前没有主键

现在无法唯一标识发生,例如

M1 和 M2 有两个时间表 S1 (7:00 AM) 和 S2 (8:00 PM),S1 有 3 次出现,例如 o1 ,o2 ,o3 和 S2 也有 3 次出现 o1 ,o2 ,o3

现在我的桌子是

MEDICATION_REMINDER
_____________________
M1
M2
_____________________

SCHEDULE
__________________
M1   S1    7:00AM
M1   S2    8:00PM
M2   S1    7:00AM
M2   S2    8:00PM
__________________


OCCURRENCE
__________________
S1    O1   21-04-13 7:00AM
S1    O2   22-04-13 7:00AM
S1    O3   23-04-13 7:00AM
S2    O1   21-04-13 9:00PM
S2    O2   22-04-13 9:00PM
S2    O3   23-04-13 9:00PM

S1    O1   21-04-13 7:00AM
S1    O2   22-04-13 7:00AM
S1    O3   23-04-13 7:00AM
S2    O1   21-04-13 9:00PM
S2    O2   22-04-13 9:00PM
S2    O3   23-04-13 9:00PM

__________________

如何唯一标识发生表行。将MEDICATION_REMINDER_ID存储在OCCURRENCE表中是否好。我不想这样做,因为 OCCURRENCE 表和 MEDICATION_REMINDER 没有直接关系。请帮助我提前谢谢

4

1 回答 1

0

虽然 MEDICATION_REMINDER 和 OCCURRENCE 没有直接关系,但 OCCURRENCE 与 SCHEDULE 有直接关系。SCHEDULE的主键是MEDICATION_REMINDER_ID,SCHEDULE_ID,所以要建立SCHEDULE和OCCURRENCE的关系,需要两个表之间有外键关系。这意味着 SCHEDULE 的主键必须显示在 OCCURRENCE 中,因此 MEDICATION_REMINDER_ID 需要包含在 OCCURRENCE 中。这也提供了唯一标识 OCCURRENCE 实例的方法。

于 2013-04-17T11:05:26.110 回答