我可以在同一个表中有2个唯一列吗?

tho*_*ris 1 mysql sql database

我有2张桌子:

  • roomtypes [ID(PK),姓名,maxAdults ...]
  • 功能(例如:室内互联网,卫星电视)

在mysql MYISAM的同一个表中,id和name字段都可以是唯一的吗?

如果以上是可行的,我正在考虑将表格改为:

  • 功能[id(PK),name,roomtypeID] ==>功能[id(PK),name,roomtypeNAME]

...因为它帮助我不在功能的演示中进行额外的查询,因为前端用户无法处理ID.

Val*_*lev 8

当然,你可以使其中一个是PRIMARY而另一个是独一无二的.或者两者都是UNIQUE.如果你愿意,还是一个PRIMARY和四个UNIQUE


OMG*_*ies 5

是的,您可以为主键以外的列定义UNIQUE约束,以确保数据在行之间是唯一的.这意味着该值只能存在于该列中一次 - 任何添加重复项的尝试都将导致唯一的约束违规错误.

我正在考虑将FEATURES表更改为功能[id(PK),name,roomtypeNAME],因为它帮助我不要在功能的演示中进行额外的查询,因为前端用户无法处理ID.

有两个问题:

  1. ROOM_TYPE_NAME对它的唯一约束不起作用 - 您将拥有给定房间类型的多个实例,并且设计一个唯一约束来阻止它.
  2. 由于没有使用ROOM_TYPES表的外键,您可能会获得"Double","double","dOUBle"等值

为了您的数据,我建议坚持使用您的原始设计; 您的应用程序是将房间类型转换为其各自的ROOM_TYPE记录,同时UI使其可呈现.