将非数字注册号存储在 table 中的数据类型

Data type to store non-numeric registration number in a table

我对数据库还很陌生,我创建了一个 table 来存储一些学生的详细信息。

他们的学号是这样的:12/AS/CI/99

那么,在 table 中存储此值的最佳数据类型是什么?

如果您的 ID 长度已知(并修复),请使用 CHAR(length)

首先要理解的是 12/AS/CI/99 不是一个数据(即使用户认为它是一个 RegistrationNo),因此它不应该放在一个单独的列中。

第一范式要求数据是原子的。

确定这四项中的每一项是什么,并实现四列。可能是 RegistrationYear、HomeState、Fish、BirthYear。

这将允许每个组件列的全部功能(查找、搜索、聚合等)。

是的,这意味着 Key 将是四列。复合键在关系数据库中很常见。

是的,这意味着您必须将四列与中间的“/”连接起来,无论您在哪里将其显示给用户,作为一个字段(注意 column 字段 ) 标记为 RegistrationNo。这也是正常的。

如果不这样做,如果将其存储为字母数字列,您将不会拥有数据库,也不会拥有人们期望从数据库获得的任何功能。例如。如果你搜索在他们的 RegistrationNo 中有 AS 的学生,查询将 table 扫描(Peanut 的建议是不正确的),而如果组件是分开的列,它会非常快,因为 Key (在任意数量的组件列中)被索引。学生密钥应该在任何 table 中出现。