如何根据特定的设置规则创建唯一的字母数字代码?

时间:2013-03-18 14:15:45

标签: php version-control database-schema

我需要能够根据以下规则为用户提供项目的下一个可用文件名。

  • 代表公司名称或位置的3个字符

  • 表示型号的1个字符(即3200系列为2个,3300系列为3个)

  • 验证类型的1个字符,仅为数字2或3

  • 1个字符,用于说明其生产或开发

  • 版本号为1个字符。 (有人建议它是0 - z)不知道如何用一个角色做到这一点。

如果有人对文件命名有更好的想法,只用7个字符表示所有这些东西,请告诉我。文件被加载到电子设备上,它不会接受超过7个字符的文件名。

我想我会创建一个界面,以便有人可以点击该位置并单击prod或dev的复选框等等,它会为用户提供一个可行的文件名,以便在应用程序提示用户时键入用于文件名。可能有很多这些文件,所以我面临着相当大的挑战,以确保它们保持有序,我们可以根据它的名称发现文件的详细信息并确保它们是唯一的。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这样的事情应该足以开始测试。它在MySQL中不起作用,但您可以用外键约束替换检查约束。

create table filenames (
  company_name_or_location char(3) not null,
  model char(1) not null,
  validation_type char(1) not null check (validation_type in ('2', '3')),
  prod_or_dev char(1) not null check (prod_or_dev in ('p', 'd')),
  version char(1) not null,
  primary key (company_name_or_location, model, validation_type, prod_or_dev, version)
);

备注

所有列都允许使用任何字母数字字符,包括(可能)Unicode字符。 可能不是你想要的。通过使用不包含Unicode的排序规则,消除Unicode字符的最佳方法是可能。您可能想要为表执行此操作,而不是为整个数据库执行此操作。

如果使用代理键,需要我为该表编写的所有其他约束,包括列{company_name_or_location,model,validation_type上的UNIQUE约束,prod_or_dev,version}。 (您需要所有这些约束,或等效的约束来解释Unicode,模型是否应该允许数字或字母数字等。)