数据库设计 - COUNTRY,CURRENCY int或varchar的主键

001*_*001 11 database sql-server database-design sql-server-2008

  • 对于我的国家/地区表,我使用国家/地区代码作为主键"AU,US,UK,FR"等

  • 对于我的货币表,我使用货币代码作为主键"AUD,GBP,USD"等

我认为我所做的是好的,但另一位开发人员希望我将所有主键更改为int,因为国家代码,货币代码可能在将来的某个时候发生变化.我们只是不知道,在这种情况下他是对的,他的道路是最安全的道路.

我应该将主键更改为int是安全的而不是抱歉吗?我不能保留它吗?

gbn*_*gbn 14

我会使用带有char列的ISO代码.

如果一个国家分裂,那么你将获得新的ISO代码(比如SC,WL,EN),但英国仍将对历史数据有效.

货币也一样.在2000年的交易将在货币当时:法国法郎,德国马克,比利时香蕉而不是欧元.

  • "英国仍将对历史数据有效" - 遗憾的是,这在ISO 3166-1 alpha-2中可能不正确.例如,"CS"代表捷克斯洛伐克直到1993年,塞尔维亚和黑山代表2003年至2006年之后的一段时间.但ISO表示,在重新使用退役代码之前至少会有5年的时间. (2认同)