質問

これは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にあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top