对于以下情况,适当的架构是什么?

时间:2014-04-11 07:09:32

标签: mysql sql database-design

我需要创建一个数据库表,其中主要包含以下三个字段:

  1. ID(默认自动递增)。
  2. User_id(从1000开始,自动递增)
  3. 电子邮件
  4. 所以,我想将Email设置为唯一,而不是null(主键),但我也想确保User_id保持唯一(可以通过设置唯一键来解决),我也希望它永远不会是设为null。那么,我怎么能做到这一点?我正在使用MySQL BTW。

    PS:我对当前时间的架构构建并不是很好。所以,忽略任何愚蠢的错误。

2 个答案:

答案 0 :(得分:1)

我会选择这样的东西

CREATE TABLE USERS
(
        ID INT PRIMARY KEY AUTO_INCREMENT,
        User_Id INT AUTO_INCREMENT = 1000,
        Email VARCHAR(250) NOT NULL
)

然后

ALTER TABLE USERS ADD UNIQUE (Email)

或者,如果您打算在电子邮件字段中搜索

CREATE UNIQUE INDEX inx_users_email ON USERS  (Email)

您最好使用Id字段作为主键。 PK无意改变,用于识别记录。如果您的用户更改了电子邮件地址会怎样?

答案 1 :(得分:0)

Auto_INCREMENT确保列具有唯一值,并且永远不能为空。