DB Normalization

DB Normalization

فرم نرمال سطح یک

اطمینان از اینکه دیتابیس بیان کننده یک رابطه است و در هر فیلد بیش از یک مقدار اتمیک (غیر قابل شکست به مقادیر کوچکتر) ذخیره نمی شود.

نمونه غیر نرمال:

CD_ID Album Jahr der Gründung Titelliste
4711 Anastacia - Not That Kind 1999 {1. Not That Kind, 2. I'm Outta Love, 3. Cowboys & Kisses}
4712 Pink Floyd - Wish You Were Here 1964 {1. Shine On You Crazy Diamond}
4713 Anastacia - Freak of Nature 1999 {1. Paid my Dues}

نمونه نرمال سطح یک:

CD_ID Albumtitel Interpret Jahr der Gründung Track Titel
4711 Not That Kind Anastacia 1999 1 Not That Kind
4711 Not That Kind Anastacia 1999 2 I'm Outta Love
4711 Not That Kind Anastacia 1999 3 Cowboys & Kisses
4712 Wish You Were Here Pink Floyd 1964 1 Shine On You Crazy Diamond
4713 Freak of Nature Anastacia 1999 1 Paid my Dues

 

نرمال سطح دو

برای جدول در نظر گرفته شده فقط باید یک کلید یکتا وجود داشته باشد و همه فیلدهای غیر کلید تابع کاملی (voll funktional abhängig) از این کلید باشند. در صورتی که فیلدها به هر زیر مجموعه ایی از این کلید تابعیت کامل داشته باشند باید جدول در نظر گرفته شده به زیر جدول هایی تقسیم شود.

به عنوان نمونه در جدول بالا با در نظر گرفتن CD_ID و Track با هم به عنوان کلید اصلی، Albumtitel و Interpret و Jahr der Gründung همگی تنها به CD_ID که زیر مجموعه ایی از کلید اصلی هست وابسته اند.
فرم نرمال سطح دوی جدول بالا متشکل از دو جدول زیر است:

CD_ID Albumtitel Interpret Jahr der Gründung
4711 Not That Kind Anastacia 1999
4712 Wish You Were Here Pink Floyd 1964
4713 Freak of Nature Anastacia 1999

 

CD_ID Track Titel
4711 1 Not That Kind
4711 2 I'm Outta Love
4711 3 Cowboys & Kisses
4712 1 Shine On You Crazy Diamond
4713 1 Paid my Dues


CD_ID به عنوان کلید خارجی در جدول دوم در نظر گرفته می شود.

فرم نرمال سطح سوم

در این سطح به این موضوع می پردازیم که در هر رابطه تمام فیلدها مستقیما با کلید جدول در ارتباط باشند. در این حالت ارتباط غیر مستقیم با کلید قابل قبول نیست و باید به رابطه های کوچکتر بشکند.

به عنوان مثال جدول زیر نرمال سطح دو است:

Tournament Year Winner Winner Date of Birth
Indiana Invitational 1998 Al Fredrickson 21 July 1975
Cleveland Open 1999 Bob Albertson 28 September 1968
Des Moines Masters 1999 Al Fredrickson 21 July 1975
Indiana Invitational 1999 Chip Masterson 14 March 1977

اما در این جدول تاریخ تولد ورزشکار وابسته غیر مستقیم به {Tournament, Year} که کلید جدول است دارد و در حقیقت به نام ورزشکار بستگی دارد. بنابراین فرم نرمال سطح سه این جدول به این صورت است:

Tournament Year Winner
Indiana Invitational 1998 Al Fredrickson
Cleveland Open 1999 Bob Albertson
Des Moines Masters 1999 Al Fredrickson
Indiana Invitational 1999 Chip Masterson

 

Player Date of Birth
Chip Masterson 14 March 1977
Al Fredrickson 21 July 1975
Bob Albertson 28 September 1968


نرمال فرم Boyce-Codd

BCNF کمی محکم تر از نرمال سطح سه است. به این صورت که هر رابطه مانند X → Y باید X یک سوپر کلید باشد. سوپر کلید کلید کاندیدا به علاوه اتریبیوتهای اضافی است.

Court Start Time End Time Rate Type
1 09:30 10:30 SAVER
1 11:00 12:00 SAVER
1 14:00 15:30 STANDARD
2 10:00 11:30 PREMIUM-B
2 11:30 13:30 PREMIUM-B
2 15:00 16:30 PREMIUM-A

کلید های کاندیدا:

* {Court, Start Time}
* {Court, End Time}
* {Rate Type, Start Time}
* {Rate Type, End Time}

در این جدول وجود رابطه زیر باعث وجود نداشتن BCNF شده.

Rate Type → Court

باید جدول به دو جدول زیر تقسیم شود:

Rate Type Court Member Flag
SAVER 1 Yes
STANDARD 1 No
PREMIUM-A 2 Yes
PREMIUM-B 2 No

 

Court Start Time End Time Member Flag
1 09:30 10:30 Yes
1 11:00 12:00 Yes
1 14:00 15:30 No
2 10:00 11:30 No
2 11:30 13:30 No
2 15:00 16:30 Yes

 

فرمال سطح چهار

نرمال سطح چهار مرتبط با حالت کلی تر Multivalued dependency ارتباط دارد. نرمال سطح چهار وقتی برقرار است که یا تمام وابستگی های چند مقداری بدیهی باشند (trivial) یا در رابطه α↠βباید α یک سوپرکلید باشد.

مفهوم این کار این است که هیچ دو رابطه چند مقداری با یک کلید که مستقل از هم باشند نباید در جدول وجود داشته باشند.

Personnummer Haustier Fahrzeug
1 Katze Volkswagen
1 Katze Ferrari
1 Pelikan Volkswagen
1 Pelikan Ferrari
2 Hund Porsche

دو رابطه چند مقداری Personnummer↠Haustierو Personnummer↠Fahrzeug وجود دارند که طرف چپ هیچ کدام سوپر کلید وجود ندارد.

نرمال سطح چهار این جدول:

Personnummer Haustier
1 Katze
1 Pelikan
2 Hund

 

Personnummer Fahrzeug
1 Volkswagen
1 Ferrari
2 Porsche