以下の例を正確にどこまで正規化しますか? また、この例は正確にどのレベルの正規化を満たしていますか?
CREATE TABLE "public"."contact_info" (
"id" SERIAL,
"home_phone" TEXT,
"mobile_phone" TEXT,
"work_phone" TEXT,
"fax_phone" TEXT,
"email" TEXT,
"line1" TEXT,
"line2" TEXT,
"city" TEXT,
"state_id" INTEGER,
"zipcode" TEXT,
"preferred_type" TEXT,
"first_name" TEXT,
"last_name" TEXT,
CONSTRAINT "contact_info_pkey" PRIMARY KEY("id"),
CONSTRAINT "contact_info_fk_state_id" FOREIGN KEY ("state_id")
REFERENCES "public"."states"("id")
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE
) WITH OIDS;
各レコードには、自宅、携帯電話、職場、またはファックス番号のレコードを 0 または 1 つだけ含めることができることに注意してください。各電話番号は、完全に機能的に私の主キーに依存しています。データベースの正規化について私が知っていることから、これは 5NF を満たしていると思いますが、6NF は失敗しています。
電話番号の定義は固定されているため (新しい電話番号の種類、複数の home_phone エントリなどはありません)、電話番号を (contact_info_id、phone_number、type) で追跡される別の関係に分割したい理由はありますか? ?