【发布时间】:2020-06-29 01:24:24
【问题描述】:
APPOINTMENT
<PK> PID: NUMBER(3,0)
<PK> appointmentDate: TIMESTAMP
reason_for_visit: VARCHAR(150)
assigned_Doctor: REF DOCTOR_ty
我想这样做,以便患者只能进行一次预约,并且预约时间不会发生冲突。例如,如果 PID = 101 并且约会日期是 03/17/20 3:00 PM。以下不能发生 PID = 102 03/17/20 3:00 PM 或 PID = 101 03/18/20 PM。我认为我使用主键错误的方式来表示这种情况。你们对实施这个问题有什么建议吗?我必须创建一个单独的表吗?创建成员函数?因为我的约会表是一个对象,但我还没有足够的经验来编写函数但是如果你这样做,请帮助我用函数实现这种情况。 -谢谢
【问题讨论】:
-
每个表只能有一个主键。可以有多个(可能是候选)键,表示为唯一索引或其变体。根据需要,所有键都可以是复合键。
-
为什么将PID定义为
NUMBER(3,0)?这意味着您最多可以有 1999 个可能的值(假设允许负数和零)。这似乎相当严格。
标签: sql oracle primary-key create-table unique-key