質問
これは3NFですか?
create table movies(
id numeric primary key not null default autoincrement,
name varchar(50) not null,
release-date Date,
price numeric,
rating numeric,
length numeric,
description varchar(1500)
);
create table movies(
id numeric primary key,
name varchar(20)
);
create table genre(
name varchar(20) primary key
);
create table directors(
id numeric primary key not null default autoincrement,
first-name varchar(32) not null,
last-name varchar(32) not null,
gender varchar(8),
dob Date,
biography varchar(1000)
);
create table movie-Star(
id numeric primary key not null default autoincrement,
first-name varchar(20) not null,
last-name varchar(20) not null,
gender varchar(8),
dob Date,
hometown varchar(20)
);
create table movies-cast(
movie-id numeric references movies(id),
actor-id numeric references movie-Star(id),
role varchar(32),
primary key (movie-id, actor-id)
);
Create table Studio(
studio-id numeric references directors(id)
Directer-name varchar(20) not null
name varchar(20) primary key
);
create table directors(
id numeric primary key not null default autoincrement,
first-name varchar(32) not null,
last-name varchar(32) not null,
gender varchar(8),
dob Date,
biography varchar(1000)
);
解決
それはかなりよく構造化されているように見えます。正規化の問題はありません。でも:
- 映画と監督のテーブルは2回作成されます。
- ジャンルテーブルは何にも使用されていません(おそらく映画にあるはずです)。
- スタジオでも同じです。
- 現在のアレンジメントでは、スタジオごとに1人のディレクターのみが許可されています。これは、おそらくa)ディレクターごとに1つのスタジオ(監督にstudio_id列を追加)、またはより可能性が高いb)スタジオとディレクターの多くの関係(新しいStudio_Directorsテーブルを追加)である必要があります。
- 現在のアレンジメントは、ディレクターを映画に関連付けていません。
- 監督と映画スタートをTalentと呼ばれる1つのテーブルに組み合わせることを検討するかもしれません。星がディレクターでもあるデータの複製があります。これは、デザインの最大の正規化の問題です。
他のヒント
すべてを再現できない場合は、3NFが含まれています。データが再び複製されていないことを確認してください
e pkがあるので、1NFにあります。 PKは複合ではないため、2NFにあります。すべての列は鍵以外の何にも依存していないため、3NFにあります。 PK以外のキーはないので、BCNFにあります。
所属していません StackOverflow