带前缀的自动增量ID

时间:2013-12-15 20:48:52

标签: mysql sql database-design

我正在设计一个表'employees',其中包含一个主键,它是自动增量并代表员工的ID。

我想在ID前面加上一个指定城市的数字:城市1:1,城市2:2等。

所以ID应该看起来像xyy,其中x代表城市,yy代表雇员的身​​份。

当我添加新员工时,我正在选择城市x,我希望yy值可以自动增加。

使用SQL命令可以吗?

3 个答案:

答案 0 :(得分:4)

这不是好的数据库设计。你真的应该在你的表中有一个单独的城市列。如果你有很多城市,城市也许应该在他们自己的桌子上。你要做的事情过于复杂,虽然“一切皆有可能”,但我不推荐它。

答案 1 :(得分:3)

您实际上将两个字段打包成一个并违反了atomicity和1NF的原则。最重要的是,你的钥匙不是最小的(可以这么说)。

相反,请保留两个单独的字段:ID和CITY。

ID 单独是主键。用你自己的话说,ID是自动递增的,所以它就是唯一的。

您可以在查询或VIEW中甚至在客户端代码中轻松concatenate ID和CITY一起显示。没有理由“预先”表格中的连接值。

答案 2 :(得分:1)

鉴于评论中的这一要求,“唯一ID应该为用户提供城市,公司要求的信息”,我会这样做。

表employee将employeeID作为主键。其他字段可以是名字,姓氏,出生日期,性别等

表city将以cityId作为主键。其他字段将是城市的名称,省名,国家,适当的。

表EmployeeCity将具有EmployeeId,CityId和StartDate的主键。不是主键的一部分是字段EndDate。

EmployeeCity的主键满足了导致城市信息的唯一标识符的要求。此外,如果员工更改城市,则只需更新一条记录并添加另一条记录即可。