有一个编码表。 有编码和字符2个字段。 编码为四位十进制数,字符为一个任意字符!要求写一个业务逻辑来进行验证表是否满足:一个编码对应唯一的一个或多个汉字,
一个字符只能对应唯一的一个编码。

解决方案 »

  1.   

    DROP TABLE AC_CODING;
    CREATE TABLE AC_CODING
    (
      ID             NUMBER(10) NOT NULL,
      CODE  VARCHAR2(64),
      CHARACTER  VARCHAR2(64),
      CONSTRAINT PK_CODING PRIMARY KEY (ID)
    );
    DROP SEQUENCE CODING_SEQ;
    CREATE SEQUENCE CODING_SEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 NOCYCLE CACHE 20 ORDER;以上是我建表sql语句(oracle)
      

  2.   

    如果主键一定要是id字段,则设
    CHARACTER     VARCHAR2(64) UNIQUE
    就行了
      

  3.   


    不是那么简单的。假如你做了这么一个模块给别人用。别人就是要很直观的检验你的编码是否符合规范。你也没有办法。而且数据不一定从页面输入,有可能从txt或者excel导入,这样中途导入的时候,最好也能调用此业务逻辑在界面上进行判断和友好提示。有没有人会写啊。给个详细点的思路也行啊。
      

  4.   

    按照你的需求,我想到的就是两种方式,数据库上处理,和程序上处理
    如果你不想在数据库上处理,那么就要在程序上处理
    我觉得无论你的数据从哪里来,你必然要拿新的数据和数据库中已有的数据进行比对,不比对你怎么知道数据是不是符合要求?界面传入,好说。即便是txt 文本或EXECL 导入,它也得是逐行读取,你可以定义个Map 集合,
    将数据库里的数据封装在里面,编码为键,字符为值,Map 集合键值不可以重复,自然可以避免编码重复,
    把你新导入的数据的键放 map 里找,如果没找到值,就pass通过,插入数据库。如果找到,就表示有重复,然后抛出个异常或返回一个标识就好了。
    如果这个逻辑还行不通,那我可真是没办法了