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 |
