主键可作为组合唯一键的一个列吗?
我们公司的DBA,俄罗斯人,建了一个表,SQL如下:CREATE TABLE floors (
floor_id INT AUTO_INCREMENT PRIMARY KEY,
building_id INT,
floorNum INT,
UNIQUE (floor_id,building_id),
FOREIGN KEY (building_id)  REFERENCES buildings (building_id)
) ENGINE=InnoDB;我不能理解,因为我认为:
如果组合唯一键包含了主键,那么其他列值就算是重复的,这个组合肯定也是唯一的。
因此:包含主键的组合唯一键是无意义的,只会浪费数据库资源。
但我们公司的DBA不这么认为,请问大家有什么高见?

解决方案 »

  1.   

    我的意见和楼主是一样的
    我在项目中从来没有这样去用unique
      

  2.   

    你的理解是正确的。由于floor_id不可能重复,所以(floor_id,building_id) 不可能重复了。
      

  3.   

    估计DBA是为了防止手工插入数据吧
      

  4.   

    主键  确保唯一
    主键 + N键  没有意义,除非是想用index。说是保证唯一这玩笑开大了
      

  5.   

    看来是我们公司的DBA犯了基本性的错误了,肯定是自学的,否则这么基本的特性不能有认识上的错误啊。
      

  6.   

    [Quote=引用 8 楼 rucypli 的回复:]
    引用楼主 helen1978 的回复:
    但我们公司的DBA不这么认为,请问大家有什么高见?你们DBA怎么认为的
    他说理论上他也说不清,是俄罗斯人,说英语说得很快,沟通很难。反正大意这样是有用的意思。