1

Bool フィールドを一意のインデックスにして、別のテーブルのインデックスと組み合わせて外部キー関係に使用できますか?

主キーにはなれないと思いますが、ユニークインデックスはどうですか?それを一意のインデックスにしようとするたびに、それは tinyint に変換されます。

編集

だから私はSQL関係の問題を抱えています。個人に関する情報の記録を保持したいデータベースがあるとしましょう。これで、その情報を受け取るテーブルをセットアップしました。ここまではよかった。

多くの場合、重複した情報がテーブルで発見され、削除されます。特定のフィールドが別の行の別のフィールドと同じ値を持つ場合、そのレコードは重複していると見なされます。例: メールの重複。

ここで、データベースに別のテーブルを作成して、これまでに発見および削除されたすべての重複を追跡したいと考えています。これについて私が最初に考えたのは、外部キー関係を作成することでした。そこで、dupes テーブルを作成してから、persons テーブルに接続しました。この関係は、単純な外部から主キーへの関係であり、削除時の制約がありました。

最初はこれでうまくいったかもしれませんが、dupes テーブルが、dupe であるために削除されていなくても、削除されたレコードを受け取るという問題が発生しました。気に入らないという理由だけで person テーブルから削除することにしたとしても、dupes テーブルに格納されてしまうため、これは問題でした。

次に、persons テーブルに disposition フィールドを作成し、それを一意または主キーとして dupes テーブルのインデックス外部キーに接続してみませんか。問題は、一意のキーには一意の値が必要であるため、複数のだまされた処分が機能しないことです。もう 1 つのオプションは、性質フィールドを主キーにすることでした。ただし、同じ問題があります。

この問題の正しい関係は何ですか?

4

2 に答える 2

5

基本的に、sqlのbool-value(またはmssqlのビット)は非常に短い整数です。したがって、基本的に、外部キーとして許可されない理由はありません。しかし、設計の観点からは、それは意味がありません。

于 2012-09-17T06:50:07.960 に答える
3

はい、BOOL フィールドは主キーまたは一意のキーにすることができます。ユニークキーの場合、値として NULL を設定できます。

TINYINT について: MySQL は BOOL データ型をサポートしていません。代わりに TINYINT を使用します。

リファレンスから - BOOL、BOOLEAN: これらの型は TINYINT(1) の同義語です。

于 2012-09-17T07:07:35.507 に答える