所以我正在使用带有发票表和客户表的MS SQL设计数据库。我的客户表看起来像:
--------------------------------
Client ID | Name | Phone | Address | City | State | Zip
________________________________
客户端ID是GUID主键。
我的发票表类似于:
--------------------------------
Invoice ID | Client ID | Date/Time | Price
________________________________
发票ID是一个数字(从1000开始)并自动递增1。
这可以,还是不好的做法?我只是不希望我的发票打印出发票#336868de-7778-41fc-ae7f-662f76d5615a....
答案 0 :(得分:4)
我个人认为没有理由使用GUID - 如果我需要自动生成的东西,那就是它的身份。所以要回答你的问题,那就完全没问题了。正如Martin评论的那样,我也考虑为您的客户ID使用自动编号。
答案 1 :(得分:1)
一般来说,我不认为为不同的ID号设置不同的数据类型是不一定的。
我做认为您可能想重新考虑发票的自动增量编号。我认为任何平台都不保证自动增量id号码没有间隙。
会计师唯一讨厌差距的是没有备案文档的差距,这就是你将要拥有的东西。 (当然,有支持文档的差距并不是真正的差距,因为你可以解释所有的数字。)
答案 2 :(得分:0)
如果您有可能将表移植到其他数据库,则GUID主键是有意义的。如果您认为这对客户而言是正确的,而对于Invoice则不然,那么我不认为这两种不同的密钥类型是一个问题。但是,查看您的特定示例,Invoice和Client可能会被移植到一起,因为存在依赖关系。在这种情况下,两个表可能应该具有相同的主键类型。