来自多个其他列值的表键结构

时间:2011-05-08 06:48:25

标签: php mysql

我正在创建一个新的数据库,并在思考结构。之前我一直使用auto-incremented undefined small-INT。在某些表格上会进行大量搜索,根据上述内容构建的key之前很少被人知道,因此搜索将在非键列上。

在某些表中还有其他独特的值,我们没有问题只是将它作为键,但在某些表中没有,因此我认为我可以将键构建为两个或两个的组合或更多列值,以便创建一个我以后可以搜索并确保更好性能的唯一字符串。

我之前没有听说过这个关键结构,所以我想得到一些关于我是否正确思考的意见。谢谢!

这是一个例子,将说明这个“放在一起”-key:

mysql> CREATE TABLE example (
     key VARCHAR(100),
     name VARCHAR(50),
     category VARCHAR(20),
     country VARCHAR(30)
   );

name本身并不是唯一的,但每categorycountry都是唯一的(在输入时可以确保)。搜索将在90%的时间内涉及这三个参数,因此进行搜索的代码可以将key放在一起并搜索表id /密钥。在其中一个参数未知的10%的情况下,如果用户想要查看country的所有行,则可以直接在country=xyz上搜索其他列示例。

1 个答案:

答案 0 :(得分:0)

是的,使用两列或更多列作为唯一标识符是完全合法的,它被称为复合键。

http://weblogs.sqlteam.com/jeffs/archive/2007/08/23/composite_primary_keys.aspx