我正在设计一个表'employees',其中包含一个主键,它是自动增量并代表员工的ID。
我想在ID前面加上一个指定城市的数字:城市1:1,城市2:2等。
所以ID应该看起来像xyy,其中x代表城市,yy代表雇员的身份。
当我添加新员工时,我正在选择城市x,我希望yy值可以自动增加。
使用SQL命令可以吗?
答案 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的主键满足了导致城市信息的唯一标识符的要求。此外,如果员工更改城市,则只需更新一条记录并添加另一条记录即可。