gpt4 book ai didi

database - 在数据库上强制字段唯一性是一个糟糕的设计

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:31 27 4
gpt4 key购买 nike

我有以下表格。

  1. Available_Ip_Address(IP_Address_ID(主键)、描述、状态)。

  2. Virtual_Machine(VM_ID(主键)、描述、IP_Address(外键))

场景如下:-

  1. 我们维护单个表的所有可用 IP 地址。

  2. 我们在另一个表中维护虚拟机信息,但可以随时将特定 IP 地址分配给单个虚拟机。

  3. 所以我在添加 VM 时添加了一个下拉列表,其中包含状态为“可用”的所有 IP 地址。
  4. 但由于两个用户可以创建一个 VM,并且他们可能会选择相同的可用 IP 地址
  5. 所以我发现保护我们系统的最好方法是使 Virtual_Machine 表中的外键 IP_Address 唯一。
  6. 然后,如果两个用户选择相同的 IP 地址,数据库中将针对其中一个用户引发异常,我可以传播该异常,然后向用户显示一条用户友好的消息,告知该 IP 地址可能已被占用。

那么我的方法是否被认为是有效的设计,或者我应该寻找在 IP_address 字段上添加时间戳字段,这样如果 IP 地址的状态自上次查询后发生更改,那么记录将具有新的时间戳和异常将在应用层面得到提升。

最好的问候

最佳答案

对于这种情况,可以认为这是正确的做法。它易于实现和维护。您只需将其记录下来(在纸上和代码上)。

时间戳可用作并发检查,但在您的情况下,将约束添加到数据库绰绰有余,因为没有人会插入重复的记录,而其他尝试者会收到一条消息,说明原因。 (考虑到您将处理特定的异常并显示相应的消息)

关于database - 在数据库上强制字段唯一性是一个糟糕的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com