1

私はここに来て、皆さんからの一種の「ベストプラクティス」タイプのアドバイスを求めたいと思うほど、私を悩ませている何かに出くわしました (et gals)

モデルにテーブルがあります。それを と呼びましょうprospect。2 つの別個の外部システムが、このテーブルの行の更新を提供できますが、それぞれのシステムでのそのレコードの「ステータス」としてのみ提供されます。

これらのステータスをローカルに保存する必要があります。もちろん、最初のアイデアは、2 つの null 許容外部キーを作成することだけでした。このようなもの。

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| prospect_id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| ext_status_1_id | int(11)      | YES  |     | NULL    |                |
| ext_status_2_id | int(11)      | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

この例では、もちろん、ステータスの ID/値のペアを保持する 2 つのテーブルがあります。

ここにキャッチがあります-ext_status_2_idそうでない限り、常にNULLになりますext_status_1_id1これがビジネスルールの仕組みです)。

これを正しくモデル化しましたか? ext_status_2_id脳の奥にこのしつこい声があり、「見込みのあるすべての行が必要になるわけではないので、これは正しくない可能性があります」と言っています。

問題があれば、これは MySQL 5.0.45 で、私は InnoDB を使用しています。

4

3 に答える 3

4

Status1 には Status2 の依存関係が組み込まれているため、プロスペクト テーブルにステータス フィールドを 1 つだけ用意し、Status1 テーブルのプロパティとして Status2 を作成してみませんか? 確かにこの方法で大幅に正規化されていますが、このようにデータ構造を持っていることは、Status2 が Status1 に依存していることを物語っています。

于 2009-07-20T18:23:24.963 に答える
1

これで多分大丈夫です。ただし、常に 2 つのうち 1 つしか使用しないため、次のようにモデル化できます。

実際の ID の ext_status_type (1 または 2) および ext_status。

これを中心にインデックスを作成する方が簡単で、両方の数値がまったく異なる意味を持っているように見えるため、私はおそらくあなたと同じことをするでしょう.

より多くのステータス(3、4、5、6)がある場合、私は答えの最初のアプローチを検討します。

于 2009-07-20T18:23:58.643 に答える