-1

ご存知の方もいらっしゃると思いますが、私は洗練された開発者ではありませんが、大まかな設計を手伝っていただけないでしょうか?

航空会社の予約システムが主キーに対して一意のレコード ロケータをランダムに生成する方法を模倣したいと考えています。生成された値は、わいせつな言葉や他の指定された値を形成したり、既存の行で重複したりすることはできないため、禁止された値を含む別のルックアップ テーブルが必要ですか?

編集:テーブルに有効なキーを入力し、値を生成するために key_already_used フラグで更新されていない行をランダムに選択するか、ユーザー定義関数によって値がランダムに生成され、検索された方がよいでしょうか禁止値テーブルにないかどうかを確認するには、予約テーブルにまだ挿入されていないかどうかを調べますか?

4

1 に答える 1

1

これが良い例です

intからcharシーケンスに変換するには:

create function CustomerNumber (@id int) 
returns char(5) 
as 
begin 
  return char(@id / power(26,3) % 26 + 65) + 
     char(@id / power(26,2) % 26 + 65) + 
     char(@id / 26 % 26 + 65) + 
     char(@id % 26 + 65) 
end

そして、あなたがしなければならないのは、一意の整数を渡すことだけで、一意の文字列(またはランダムな整数、そしてランダムな文字列)を取得します

(ランダムは一意と同じではないことを覚えておいてください)

私はinformixでそれがこのように見えるべきだと思いますか?

CREATE FUNCTION CustomerNumber (id int)
RETURNING char(5);
 RETURN integer::char(id / POW(26,3) % 26 + 65) + 
         integer::char(id / POW(26,2) % 26 + 65) + 
         integer::char(id / 26 % 26 + 65) + 
         integer::char(id % 26 + 65) 
END FUNCTION
于 2012-07-12T03:49:25.813 に答える