プロジェクト人材のナレッジベースを作るプロジェクトに携わっています。問題のごく一部の ER モデルを実行するとき、私は疑問に思います: 効率、優れた設計手法、およびデータベースの正規化を考慮すると、これがモデル化の好ましい方法です。アプリケーションは .NET で開発されますが、たとえば、php を使用してクエリを実行できます。ナレッジ ベースを表す 4 つのレベルのエンティティがあります。
1 Supertopics
1.1 Topics
1.1.1 Subtopics
1.1.1.1 knowledge
私は 2 つの可能なリレーショナル実装の 1 つです。
オプション 1 - 弱いエンティティを使用している場合、各テーブルには合成キー (一意の ID と前のレベルの外部テーブルのキー) があります。以前のすべてのレベルからキーが複製されるため、このモデルで複雑なレポートを作成する方がよいようです。
- スーパートピック (IDSupertopic,...)
- トピック (IDSupertopic、IDTopic など)
- サブトピック (IDSupertopic、IDTopic、IDSubtopic、...)
- knowledge(IDSupertopic、IDTopic、IDSubtopic、IDKnowledge...)
オプション 2 - 強力なエンティティを使用する場合、各テーブルには単純な一意のキーと、前のレベルのオブジェクト (テーブル) からの外部キーがあります。この種のモデルは、テーブル キーが単純化されているため、管理しやすいようです。
- supertopic (ConsecutiveKey,...)
- Topic (ConsecutiveKey, IDSupertopic, ...)
- subtopic(ConsecutiveKey, IDTopic...)
- knowledge(ConsecutiveKey, IDSubtopic...).
それぞれの可能性の長所と短所に関連するアドバイスをくれる人はいますか?