1

各行が顧客の予約であるテーブルがある場合、このテーブルに 2 つの外部キーがあっても問題ありませんか? 1 つは null になり、もう 1 つは適切な主キーを参照します。外部キー制約がこのテーブルに適用された 2 つのテーブルがある理由は、予約がサービスのパッケージ (service_package) または単一のサービス (service) の予約である可能性があるためです。

関数やストアド プロシージャを使用して制限を適用しない限り、同じ予約行に 2 種類の予約を登録することが可能になるため、これは悪い設計であると思います。

この解決策は問題ありませんか、または提供されるサービスのより一般的なテーブルを作成するなど、これを行うためのより良い方法はありますか?

4

2 に答える 2

1

これは合理的なアプローチです。NULL値が特定の列の場合、結合は失敗します。

MySQL では、これをトリガーで強制する必要があります。他のデータベースには「チェック制約」の概念があり、2 つの値のうちの 1 つだけが入力されるようにすることができます。

より多くの列がある場合は、「id」とともに「type」列に切り替えたくなるかもしれません。これには、すべての ID が同じタイプである必要があります。また、列が正しく移入されるようにするためのトリガーも必要です。また、結合を行うときにエラーが発生する可能性があります。

2 つの選択肢のうち、私は 2 つの ID だけの方法を好みます。

于 2013-07-10T01:27:29.077 に答える