我们希望有一些实体向客户隐藏其确切ID-主要原因是,我们不希望客户知道数据库中有多少实体.
因此,我正在实现一种分配随机ID(必须唯一)的解决方案.换句话说,不是使用唯一的序列号,而是要使用唯一的非序列随机数解决方案.
我的问题是,知道这里的一些用户可能有类似问题的经验,我应该使用映射还是将随机ID分配给主键列?
例如
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`somethingElse` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE IF NOT EXISTS `map` (
`id` int(10) unsigned NOT NULL,
/* Foreign Key to test table */
`parent` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `parent` (`parent`)
)
VS.
CREATE TABLE IF NOT EXISTS `test` (
/* Assign random ID here */
`id` int(10) unsigned NOT NULL,
`somethingElse` varchar(255) NOT NULL
PRIMARY KEY (`id`)
)
对我来说,后者变得更加方便,因为我不必维护地图,也不必自定义DAO /应用程序以使用映射的ID(或内部的确切ID).对于这两种情况,我都必须编写自己的随机ID生成器.