【问题标题】:How can I create a Unique Alpha Numberic Code Based on specific set rules?如何根据特定的设置规则创建唯一的字母数字代码?
【发布时间】:2013-03-18 14:15:44
【问题描述】:

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

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

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

  • 1 个字符用于验证类型,仅是数字 2 或 3

  • 1个字符,用于讲述其生产或发展

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

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

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

有什么想法吗?

【问题讨论】:

  • 创建一个带有自动增量索引的表来存储文件详细信息并使用该 ID(填充或不填充)作为本地文件名,然后带有“名称”的列可以任意长
  • 当您的型号达到 10,000 时会发生什么? base-36 编号,也许?
  • 它使用了一个由第三方专门为硬件构建的应用程序。该应用程序只允许您保存一个包含 7 个字符的文件,因为它知道它将进入该设备。如果您在操作系统中将其命名为更长的名称,则设备将不会将文件加载到其上。 2013 年这完全是愚蠢的,但我可以做深蹲。最好有一个查找表,用户可以滚动浏览并查看可上传到设备的文件。
  • 您能否将文件作为查找表存储在存储介质上,以便知道上次使用的 id?然后,您将要编写的 UI 可以简单地打开查找文件并查看下一个可用的内容。

标签: php version-control database-schema


【解决方案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 的唯一约束, prod_or_dev, 版本}。 (您需要所有这些约束,或考虑 Unicode 的 等效 约束,以确定模型是否应该允许数字或字母数字等)

【讨论】:

  • 嗯,有趣的想法。正如您所说,这可能需要进行一些修改。我会将其保留为可能的解决方案,谢谢。这当然让我在思考。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 2012-03-28
相关资源
最近更新 更多