Как точно вы нормализуете пример ниже и какой уровень нормализации соответствует этому примеру?
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 Тип)?