ISBN作为主键,现在我想在数据库中添加非书籍内容 - 应该迁移到EAN吗?
我建立了一个库存数据库,书籍的ISBN号码作为商品的主键。这在一段时间内运行得很好,因为这些商品都是书籍。现在我想添加一些非书籍的商品,其中一些有EAN码或ISSN码,有些则没有。
这个数据库是用PostgreSQL搭建的,前端是用django应用程序,还有一个JSON API,另外还有一些支持的Python命令行工具来管理。现在讨论的商品主要是书籍和艺术印刷品,其中一些是自出版的。
使用ISBN作为主键的好处是,除了保持数据之间的关系完整性外,还有很多方便的工具可以用来验证ISBN,自动查找书籍的缺失或额外信息等等,我已经利用了很多这样的工具。有些工具是现成的(比如PyISBN、PyAWS等),有些是我自己做的——我尽量让这些部分保持独立,但你知道事情有时会变得复杂。
我在网上找不到关于“私人ISBN”或“自分配ISBN”的任何信息,但这正是我想做的事情。我怀疑这会是我最终的选择,因为现在似乎已经有很多人抢着申请ISBN号码了。
我应该把一切都改成使用EAN号码,还是干脆不再用ISBN作为主键呢?如果有人有这方面的经验,我非常想听听你的建议,欢迎分享。
4 个回答
3
3
我对Postgres不太了解,但通常来说,ISBM应该是一个唯一的索引键,而不是主键。主键最好用整数类型,这样在做外键的时候也更方便。这样你只需要添加一个新的字段,叫做EAN或ISSN,并且这个字段可以为空。