Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 存储复合产品编号_Database_Oracle_String_Numbers_Composite - Fatal编程技术网

Database 存储复合产品编号

Database 存储复合产品编号,database,oracle,string,numbers,composite,Database,Oracle,String,Numbers,Composite,我正在设计一个实验室数据库。多个产品、样品等由一个复合编号标识,该编号由多个部分组成,表示不同的值,例如:产地、日期、类型、当前id等。复合编号的示例可能包括驾照号(X44-555-3434)、批号(XBR-A26-500-2) 复合编号应如何存储在数据库中?它们应该存储为字符串,还是应该分别存储(或派生)复合编号的每个组成部分 注意:如果问题无法一般回答,请使用Oracle。这取决于您最终想要查询的内容。如果要单独查找字符串的各个部分,请单独保存。如果您想查找整个代码(带破折号或不带破折号,都

我正在设计一个实验室数据库。多个产品、样品等由一个复合编号标识,该编号由多个部分组成,表示不同的值,例如:产地、日期、类型、当前id等。复合编号的示例可能包括驾照号(X44-555-3434)、批号(XBR-A26-500-2)

复合编号应如何存储在数据库中?它们应该存储为字符串,还是应该分别存储(或派生)复合编号的每个组成部分


注意:如果问题无法一般回答,请使用Oracle。

这取决于您最终想要查询的内容。如果要单独查找字符串的各个部分,请单独保存。如果您想查找整个代码(带破折号或不带破折号,都可以处理),请将其存储为单个字符串。

此外,如果您决定将它们存储在单独的列中,最好使用它们制作一个唯一键(包含所有列的唯一键)。但这将取决于您是希望更频繁地通过编码的复合数字查找项,还是根据它们的实际语义查找项


然后我会在数据库的某个地方保留代码和实际值之间的映射。因此,我有几个小表,每个表存储两列,一列表示代码,另一列表示时间戳。

根据我的经验,如果字符串中有有有意义的元素,最好将它们放在自己的字段中。我们尝试梳理出含义的体操动作复杂且容易出错;当我们明确地处理每个字段时,数据验证也更容易。构造复合字符串很容易,在构造的字符串上搜索也很容易(尽管有时很难索引)。细粒度存储对我来说总是最有效的。

这些数字的推导可能会改变吗?预计这会对应用程序产生什么影响

例如,几年前,英国的汽车牌照以三个字母开头(我认为这表示一个地区),然后是三位数字,然后是另一个表示注册年份的字母

最终,他们用完了后缀的字母,并改变了顺序,因此,您可能拥有“A 123 ABC”,而不是“ABC 123 A”,并且有可能同时注册两辆车,一辆是“ABC 123 A”,另一辆是“A 123 ABC”。 哦,然后他们加快了单字母年份指标的使用(因为很多人都在等待新字母生效后才买车),所以它不再表示年份


如果您只是对车牌感兴趣,那么最好将车牌作为一个值存储。然而,负责发布数字的应用程序可能需要将数字分解为组件。

+1,我看到一些代码不符合存储条原则,这总是令人遗憾。