6

私は次のテーブルを持っています:

Blogs { BlogName }
BlogPosts { BlogName, PostTitle }

ブログの投稿は、エンティティと関係を同時にモデル化していますが、6nf(3番目のマニフェストによる)によれば無効です。

6nfでは、次のようになります。

Blogs { BlogName }
Posts { PostTitle }
BlogPosts { BlogName, PostTitle}

ブログ投稿をシーケンスnbr(単なる例)で並べ替えたい場合、それは別のテーブルになります

BlogPostsSorting { BlogName, PostTitle , SortOrder }

正しいですか?

4

2 に答える 2

6

あなたのテーブルの鍵は何ですか?列名に基づいて、BlogPostsのキーは{BlogName、PostTitle}のみであると思います。その場合、BlogPostsはすでに6NFにあります。非プライム属性がないため、損失なしで分解することはできません。BlogsrelvarとPostsrelvarは冗長になります-あなたはそれらを必要としません。

ブログの投稿は、エンティティと関係を同時にモデル化していますが、6nfによると無効です(3番目のマニフェストによる)

サードマニフェストがそれが無効だと言っているところを教えてください。そうではないと思いますが、どうやってそのような結論に至ったのか知りたいのですが。

于 2011-09-24T19:58:45.067 に答える
4

sqlvogelはこの答えで正しいです。

この小さな詳細を除いて、ブログが冗長であるかどうかは、すべてのブログタプルに少なくとも1つの対応するBlogPostタプルが必要であるという制約を適用するかどうかによって異なります。あなたはそれを明確にするために何も述べていませんでした。

同じことが3番目のrelvar投稿にも当てはまりますが、この場合、少なくとも1つのBlogPostのタイトルとして表示されない限り、PostTitleが存在する可能性はほとんどありません。

追加のrelvarとしてSortingOrderrelvarが必要かどうかは、並べ替え順序が不要なBlogPostが存在するかどうかによって異なります。できない場合は、SortingOrderrelvarがBlogPostsを置き換えるだけです。可能であれば、2つのrelvarを使用できます。または、SortingOrder relvarを使用して、ダミー値(たとえば、常に-1)を使用して、順序付けせずに投稿のケースをハックすることもできます。

于 2011-09-25T17:35:03.940 に答える