以下に2つのテーブルを定義します。
Create table tickets (id long not null,
reseller long not null,
constraint pk_lock primary key (id));
Create table ticketRegistrations (id long not null,
customer long not null,
constraint fkTicketRegistrationTicket
foreign key (id) references tickets (id) on update cascade);
クライアントはチケットを入力できます(したがって、主キーの自動インクリメントはありません)。idはticketregistrationsテーブルの主キーと外部キーであるため、整合性制約とそのすべてのジャズがあります。私が遭遇した問題は、チケットID(つまり、00007)でゼロパディングを許可する機能要求です。私の知る限りでは、整数をゼロパディングで格納することはできません。
私が思いついた解決策は、チケットテーブルにnullではないticketID varchar(8)列を追加し、両方のテーブルの実際のIDを代理キーとして使用することです。次に、ticketregistrationテーブルの外部キーはticketidを指します。
私が持っている質問は、効率と速度に関するものです。以前は、システム内にチケット登録を追加できましたが、データベースは、同じIDのチケットがデータベース内にあるかどうかを確認するために、追加時に整合性制約を実行していました。これで、インデックスが作成されるIDのvarchar文字列ができました。
顧客が「チケットを登録」するとき、ticketid varcharをチケットテーブルに保持し、ticketidの外部キーをticketregistrationテーブル(varchar(8))内で使用する方が簡単ですか?
または、ticketregistrations内にticketid varchar(8)を持たず、ticketsテーブルへの外部キーをticketregistrationsテーブルの主キーとして保持し、最初にチケットテーブル内のticketidを確認し、値を取得して入力する方が簡単ですか。チケット登録内の行に?
これにより、ticketsregistrationsテーブルに挿入する前に、ticketsテーブルにインデックス付きvarchar検索が作成されます。
参照整合性が問題を処理したので、私の最初のソリューションはこれを必要としませんでした。
シーク時間が心配です。