PDA

View Full Version : 1NF و 2NF



hercules_3d
جمعه 19 بهمن 1386, 20:40 عصر
سلام
فرض کنید 4 تا فیلد توی یه جدول به حالت زیر داریم:
Author_Name,Book_Tiltle, Book_Pages, Author_Address
میشه توضیح بدین که بعده اعمال 1NF جدول به چه شکلی در میاد و بعده اعمال 2NF چه شکلی میشه
رابطه کتاب با نویسنده هم n به n هستش
البته میدونم در نهایت جدول بالایی به 3 جدول تبدیل میشه یکیش جدول نویسنده؛ یکیشم جدول کتاب؛ و آخریشم واسه ارتباط این 2 جدول به کار میره .

oxygenws
جمعه 19 بهمن 1386, 20:53 عصر
۱- اینها id ندارند؟؟ یا میشه براشون گذاشت؟
۲- pages به مفهوم تعداد صفحات (یک عدد) است؟
۳- هر نویسنده فقط یک آدرس داره؟

hercules_3d
شنبه 20 بهمن 1386, 07:00 صبح
خوب فرض کنیم id همون اسم نویسنده با اسم کتابه( البته فرض میشه)
دوباره فرض شه که رابطه آدرس با نویسنده 1 به 1 هستش
page هم تعداد صفحات کتاب رو نشون میده

oxygenws
شنبه 20 بهمن 1386, 07:18 صبح
خوب فرض کنیم id همون اسم نویسنده با اسم کتابه( البته فرض میشه)
این فرض زیاد جالب نیست، اما خوب.

اون فیلد هایی که دورشون پرانتزه، یعنی کلید اصلی اند:

NF1
==============
author
------------------------------
name, address
------------------------------
book
------------------------------
title, pages
------------------------------
book_has_author
------------------------------
aname,btitle


NF2
==============
author
------------------------------
(id),name, address
------------------------------
book
------------------------------
(id),title, pages
------------------------------
book_has_author
------------------------------
(aid,bid)

%end

hercules_3d
شنبه 20 بهمن 1386, 16:30 عصر
خوب مشکل من اینجاست که فرض کنیم هر نویسنده چندین کتاب داره و اسامی این کتابا توی فیلد کتاب ذخیره شده. چون 1NF میگه مقدار داخل هر cell باید اتومیک باشه پس در این حالت جدول ما داره 1NF را نقض می کنه.حالا راه حل چیه؟
چند جا دیدم که نوشتن باید موجودیت ها رو جدا کنیم مثلا مشخصات نویسنده توی جدول نویسنده و مشخصات کتاب توی جدول کتاب ذخیره شه و یه جدول هم برای مچ کردن این دو جدول.
یه چند جا هم دیدم که نوشتن همین که برای همون جدول اصلی یه کلید اصلی تعریف کنیم و مقادیری که توی cell ها وجود دارن رو توی سطر ها پخش کنیم مثل اینکه بگیم سطر اول مربوط به نویسنده ی اوله که کتاب 1 رو نوشته و سطر دوم مربوط به نویسنده ی اوله که کتاب 2 رو نوشته. درسته تو این حالت مقادیر تکرار میشن ولی مساله ی تکرار فیلد ها حذف میشه در نتیجه جدول به صورت 1NF هستش. و توی2NF هستش که موجودیت نویسنده و کتاب از هم جدا میشن.
حالا کدومش درسته؟
اینی که شما نوشتین مربوط به حالت اولی میشه

oxygenws
شنبه 20 بهمن 1386, 16:43 عصر
من فرم غیر نرمال رو که ننوشتم!!
اولی نرمال ۱ و دومی نرمال ۲ است!
حالا مشکل تو دقیقا با اینایی که من نوشتم چیه؟

hercules_3d
شنبه 20 بهمن 1386, 20:56 عصر
من هیچ مشکلی با نرمال سازی شما ندارم
میگم چند تا مقاله خوندم که 2 روش برای 1NF کردن جدول نوشته بودن که گفتم حالا می خوام ببینم کدومش درسته؟
شما که اومدین توی 1NF موجودیت نویسنده و کتاب رو از هم جدا کردین