我有以下表格。
Available_Ip_Address (IP_Address_ID(主键),说明,状态)。
Virtual_Machine (VM_ID(主键),说明,IP_Address(外键))
方案如下: -
我们维护单个表的所有可用IP地址。
我们在另一个表中维护虚拟机信息,但可以随时将特定的IP地址分配给单个VM。
所以我的方法被认为是有效的设计,或者我应该寻找在IP_address字段上添加时间戳字段,因此如果IP地址的状态自上次查询后发生了更改,那么记录将具有新的时间戳和异常将在申请级别上提出。
最好的问候
答案 0 :(得分:2)
对于这种情况,可以认为是正确的做法。它易于实施和维护。你只需记录这一点(纸上和代码)。
时间戳可以用作并发检查,但在您的情况下,将约束添加到数据库是绰绰有余的,因为没有人会插入重复的记录,而其他人尝试将收到消息告诉原因。 (考虑到您将处理特定的例外并显示相应的消息)
答案 1 :(得分:2)
任何应包含唯一值的列都应声明为唯一。约束primary key
和not null unique
在行为上是相同的。 (例如,不计算隐式聚簇索引的副作用。)
例如,美国的a table of states可能会像这样创建。
CREATE TABLE states (
state varchar(15) primary key,
abbr varchar(10) not null unique,
postal_code char(2) not null unique
);