0

友人がウェブサイトを開発していて、SQLを使用してデータベースを作成する必要があります。彼は、あるエンティティセットの主キーを取得し、それを他の適切なエンティティセットに配置して(またはその逆)、関係を見つけることができるので、なぜ「has-a」または「is-a」関係が必要なのかと尋ねます。

リレーショナルセットはデータベースの仕組みであると教えられたばかりなので、質問に答えることができませんでした。

編集:私は正規化に入りたくありませんでした。彼は、情報が関係セットに複製されることを指摘しました。

4

1 に答える 1

1

あなたの質問は、2つの異なる抽象化レベル、つまり概念レベルと論理レベルを組み合わせています。

概念レベルでは、提案されたデータベースの情報要件を説明することに関心があります。説明をある解決策または別の解決策に傾けることなくこれを行うと便利です。この目的に役立つモデルの1つは、実体関連(ER)モデルです。このモデルでは、主題はエンティティ(サブジェクト)とそれらのエンティティ間の関係に分類されます。すべてのデータは、エンティティの1つまたは関係の1つの側面を説明していると見なされます。

「Is-a」と「has-a」の関係は、この抽象化レベルに関連しています。このレベルでは、関係は識別されますが、実装されません。

データベースの概念モデルを作成した後、データベース自体を作成する前に、論理設計フェーズを実行して、データベースの論理モデルを作成すると便利です。データベースをリレーショナルにする場合は、論理モデルをリレーショナルモデルにすると便利です。リレーショナルモデルは、次のレベルの抽象化です。

ここで主キーと外部キーが登場します。これらのキーは、概念的な段階で特定された関係を実装します。これは、リレーショナルモデルがリレーションシップを実装する方法です。この段階では、ジャンクションテーブル、テーブル構成、正規化などの設計上の問題に関与します。

概念レベルと論理レベルに加えて、物理レベルとスクリプトレベルがあります。しかし、これらはあなたの質問の範囲外です。

2種類の関係は、解決すべき問題の特徴です。主キーへの外部キー参照は、提案されたソリューションの機能です。

于 2012-10-21T11:54:42.257 に答える