82

外部キーにはプロパティがないため、答えは間違っていると思いuniquenessます。

しかし、自分がテーブルに参加している場合に発生する可能性があると言う人もいます。私は初めてSQLです。それが本当なら、その方法と理由を説明してください。

Employee table
| e_id | e_name  | e_sala  |  d_id  |
|----  |-------  |-----    |--------|
|  1   |   Tom   |  50K    |    A   |
|  2   | Billy   |  15K    |    A   |
|  3   | Bucky   |  15K    |    B   |


department table
| d_id | d_name  |
|----  |-------  |
|  A   |   XXX   | 
|  B   |   YYY   | 

さて、d_idは外部キーなので、どのように主キーになることができますか. そして、について何か説明してjoinください。その用途は何ですか?

4

7 に答える 7

17

もちろん?、、、およびを含むPersonテーブルがあるとします。ここで、は同じテーブルへの外部キーです。テーブルをandテーブルに正規化する必要はありません。それはやり過ぎです。idnameageparent_idparent_idPersonParentChild

Person
| id |  name | age | parent_id |
|----|-------|-----|-----------|
|  1 |   Tom |  50 |      null |
|  2 | Billy |  15 |         1 |

このようなもの。

ただし、一貫性を維持するためには、少なくとも 1 つの null 値が必要になると思いますparent_id。1 つの「アルファ男性」行。

編集: コメントが示すように、Sam はこれを行わない正当な理由を見つけました。MySQL では、主キーを編集しようとすると、指定CASCADE ON UPDATEしても編集が適切に反映されないようです。主キーは (通常) 本番環境で編集することはできませんが、それでも無視できない制限事項です。したがって、私は私の答えを次のように変更します:-本番システムをかなり厳密に制御できない限り、おそらくこの慣行は避けるべきです (そして、誰も PK を編集する制御を実装しないことを保証できます)。MySQL以外ではテストしていません。

于 2013-09-08T05:26:59.770 に答える