1 つのテーブル GreatPlaces を含む MySQL データベースがあります。このテーブルには 100 行あり、各行は、北京の紫禁城やエジプトのピラミッドなど、地球上のさまざまな歴史的に重要な場所を表しています。次の属性があります。
ID - integer, primary key
NAME - varchar, candidate key
COUNTRY - varchar, containing duplicities
CONTINENT - varchar, containing duplicies
TYPE - varchar, containing duplicities
LONGITUDE - decimal, containing duplicities (some historical sites are in the same city)
LATITUDE - decimal, containing duplicities (same as for an attribute LONGITUDE)
STORY_PATH - varchar, candidate key, an URL link to the file system
DESCRIPTION_PATH - varchar, candidate key, an URL link to the file system
PICTURES_PATH - varchar, candidate key, an URL link to the file system
VIDEO_PATH - varchar, candidate key, an URL link to the file system
テーブルは正規化されていますか? 1NF を満たすには、すべてのフィールドがアトミックである必要があります。唯一の問題は、属性 NAME の値である可能性があります。たとえば、「クフ王のピラミッドとスフィンクス」は文字列に分解される可能性がありますが、これで問題ないと思います(?)。次に、テーブルが 1NF にあり、すべての非プライム属性がすべての主キー全体に依存している場合、テーブルは 2NF にあることを読みました。問題は、どの属性が素数でないかを見つける方法がわからないことです。非プライム属性は、候補キーの作成に参加できない属性です。しかし、ここで、私の表では、すべての属性が ID と共に候補キーを作成できることがわかります。たとえば、{ID, LATITUDE} は候補キーを作成できます。
したがって、私の質問は、テーブルに非プライム属性がないという私の仮定が正しいかどうかです。次に、データベースは自動的に 2NF と 3NF になるはずです。これは正しいですか?