0

Firebird データベースから Mysql にデータベースを作成しました。データベースには、すべてのテーブル (データベース内の 45 テーブル) のシーケンスを生成する共通シーケンス テーブル (Common_ID) があります。一部のテーブルは

Table1 = Sequence (ID Auto-increment)-The Common Sequence Table
Table2 = Process (Sequence, Process_Number(Unique), Category_Name)
Table2 = Tasks (Sequence, Barcode(Unique), Process_Number(sequence from Process Table), Product_Name)

このデータベースには、すでに 600,000 を超えるレコードがあります。1 つの「プロセス」に複数の「タスク」を含めることができます。私の質問は次のとおりです。「シーケンス」テーブルと「プロセス/タスク」テーブルの間にどのような関係が必要ですか? プロセス テーブルとタスク テーブルの間にはどのような関係がありますか? 「シーケンス」テーブルに挿入し、その「ID」を他のテーブルで使用するにはどうすればよいですか?

これは私の最初の質問であり、私はデータベースに慣れていないので、間違いがあればお詫びします.

4

1 に答える 1

0

Sequence と Process の関係は 1 対 1 であり、Sequence と Task の関係も 1 対 1 です (また、シーケンス テーブルをそのように使用する他のすべてのテーブルでも同じです)。この関係の片側 (プロセスまたはタスク) は存在する必要はありません。

Process と Task の関係は 1 対多です。

あなたの挿入は次のようになります

insert into Sequence values (0);
insert into Process values (last_insert_id(), ....);

insert into Sequence values (0);
insert into Task values (last_insert_id(), ....);

ところで、あなたのデータ モデルでは、Process テーブルに 2 つの主キーがあります。プロセスのシーケンスをタスクの外部キーとして使用する場合は、より適切なデータ モデルになる可能性があります。

于 2013-05-03T06:50:36.993 に答える