3

テーブル内のツリー関係をモデル化しようとしています。たとえば、「カテゴリ」があり、カテゴリ自体が親カテゴリ内にある場合があります。

私のスキーマは次のとおりです。

id int PRIMARY KEY,
parent_id int,
name

私の質問は、parent_id 列を外部キーとしてラベル付けする必要があるかどうかです。外部は「外部」を意味し、自己参照ではありません。この目的のための別のタイプのキーはありますか?

私の質問は次のようなものです: MS SQL の自己参照制約ですが、別の質問をしていますが、カスケードは問題ではありません。

4

4 に答える 4

10

自己参照外部キーは常に発生します。たとえば、ある従業員が別の「従業員」をマネージャーとして持つ場合、manager_id は同じテーブルの employee_id フィールドへの外部キーになります。

外部キーは、階層データで親ノードを表すための自然な候補ですが、そのためにのみ使用されるわけではありません:)

于 2009-06-26T21:23:56.333 に答える
7

非常に深いレベルのネストがある場合、ほとんどの DB は再帰をうまく処理できないため、特定のノードのすべての子孫を効率的に選択することは容易ではない場合があります。もう 1 つのアプローチは、「ネストされたセット モデル」と呼ばれるものを使用して関係を表すことです。素晴らしい記事がここにあります:

http://www.intelligententerprise.com/001020/celko.jhtml

于 2009-06-26T21:29:19.897 に答える
4

同じテーブル内の 2 つの列間の外部キーは、ツリー構造をリレーショナル データベースにマッピングするときによく使用されます。ただし、利用可能な唯一のアプローチではありません。

別の表現については、この記事を参照してください:データベースに階層データを格納する

于 2009-06-26T21:32:22.883 に答える
3

別のタイプのキーがあるとは思いません...このシナリオでは外部キーで問題ありません..parent_idに対して制約を適用して、有効なIDを参照するようにします

于 2009-06-26T21:27:07.387 に答える