0

これは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)
);
4

3 に答える 3

0

それはかなりよく構造化されているように見えます。正規化の問題は見られません。でも:

  • Movies および Director テーブルが 2 回作成されます。
  • ジャンルテーブルは何にも使用されていません(おそらく映画にあるはずです)。
  • スタジオと同じ。
  • 現在の取り決めでは、スタジオごとに 1 人の監督しか認められていません。これはおそらく、A) ディレクターごとに 1 つのスタジオ (ディレクターに studio_id 列を追加)、またはより可能性が高い B) スタジオとディレクター間の多対多の関係 (新しい studio_directors テーブルを追加) である必要があります。
  • 現在の取り決めでは、Director を Movie に関連付けていません。
  • Director と Movie-Start を組み合わせて、Talent という 1 つのテーブルにすることを検討してください。スターがディレクターでもあるデータの重複があります。これは、設計における最大の正規化の問題です。
于 2010-10-14T17:04:29.463 に答える
0

すべてを再度複製できない場合は、3NF が含まれます。再度重複データがないことを確認してください

于 2010-10-14T09:46:34.230 に答える
0

ePKなので1NFです。PKは複合ではないので2NFです。すべての列はキーのみに依存しているため、3NF です。PK以外の鍵はないのでBCNFに。

于 2010-10-14T10:02:05.757 に答える