سلام دوستان. توی دنیای پایگاه دادهها، ما همیشه دنبال این هستیم که اطلاعاتمون رو به بهترین شکل ذخیره کنیم. یکی از راههای رسیدن به این هدف، استفاده از "فرمهای نرمال" هست. این فرمها کمک میکنن تا از تکرار اطلاعات جلوگیری کنیم و دادههامون رو منظمتر نگه داریم. توی این مقاله، میخوایم دربارهی "فرم نرمال دوم" یا 2NF صحبت کنیم و ببینیم چطور میتونیم جدولهامون رو به این فرم نرمال تبدیل کنیم.
قبل از اینکه بریم سراغ 2NF، یه یادآوری کوچیک از "فرم نرمال اول" یا 1NF داشته باشیم. یه جدول زمانی 1NF هست که هر خونهاش (سلولش) فقط یه مقدار داشته باشه. یعنی نباید توی یه سلول چند تا مقدار پشت سر هم لیست شده باشن.
حالا، 2NF چی میگه؟ یه جدول زمانی 2NF هست که:
اجازه بدید یه کم این تعریف رو باز کنیم. کلید اصلی (Primary Key) چیه؟ کلید اصلی یه ستون یا مجموعهای از ستونهاست که هر سطر جدول رو به صورت یکتا مشخص میکنه. مثلا کد ملی برای هر نفر یه کلید اصلی خوبه، چون هیچ دو نفری کد ملی یکسان ندارن.
وابستگی جزئی (Partial Dependency) چیه؟ وابستگی جزئی زمانی اتفاق میوفته که یه ستون غیرکلیدی (یعنی ستونی که جزئی از کلید اصلی نیست) فقط به یه قسمت از کلید اصلی وابسته باشه، نه به کل اون. این وابستگی جزئی همون جایی هست که 2NF وارد عمل میشه و جلوی تکرار اطلاعات رو می گیره.
فرض کنید یه جدول داریم برای ثبت سفارشهای مشتریها. این جدول ستونهای زیر رو داره:
توی این جدول، کلید اصلی میتونه ترکیب "شناسهی سفارش" و "شناسهی محصول" باشه. چرا؟ چون ممکنه یه مشتری چند تا محصول مختلف رو توی یه سفارش بخره.
حالا به ستون "نام محصول" دقت کنید. آیا "نام محصول" به کلید اصلی (یعنی ترکیب "شناسهی سفارش" و "شناسهی محصول") وابسته است؟ نه! "نام محصول" فقط به "شناسهی محصول" وابسته است. یعنی اگه "شناسهی محصول" رو داشته باشیم، میتونیم "نام محصول" رو پیدا کنیم، مهم نیست کدوم سفارش داره این محصول رو میخره.
این یعنی ما یه وابستگی جزئی داریم و جدولمون توی فرم نرمال دوم نیست.
برای اینکه این جدول رو به 2NF تبدیل کنیم، باید ستون "نام محصول" رو از جدول سفارشها حذف کنیم و یه جدول جدید بسازیم به اسم "محصولات". جدول "محصولات" شامل ستونهای "شناسهی محصول" و "نام محصول" میشه. حالا جدول سفارشهامون فقط ستونهای "شناسهی سفارش"، "شناسهی محصول"، "تعداد" و "قیمت واحد" رو داره. با این کار، وابستگی جزئی رو از بین بردیم و دیگه اسم محصول توی هر سفارش تکرار نمیشه.
جدول اصلی (قبل از 2NF) | جدول محصولات (بعد از 2NF) | جدول سفارشها (بعد از 2NF) | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
استفاده از 2NF چندتا مزیت داره:
فرض کنید جدولهای زیر رو داریم:
-- جدول محصولات CREATE TABLE Products ( ProductID INT PRIMARY KEY, ProductName VARCHAR(255) ); -- جدول سفارشها CREATE TABLE Orders ( OrderID INT, ProductID INT, Quantity INT, UnitPrice DECIMAL(10, 2), PRIMARY KEY (OrderID, ProductID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) );
توی این کد، ما دو تا جدول داریم: `Products` (محصولات) و `Orders` (سفارشها). جدول `Orders` یه کلید خارجی (Foreign Key) به جدول `Products` داره، که ارتباط بین این دوتا جدول رو مشخص میکنه.
فرم نرمال دوم (2NF) یه راهکار مهم برای بهینهسازی ساختار پایگاه دادههاست. با از بین بردن وابستگیهای جزئی، میتونیم از تکرار اطلاعات جلوگیری کنیم، حجم پایگاه داده رو کاهش بدیم و یکپارچگی دادهها رو بهبود ببخشیم. این کار باعث میشه که پایگاه دادهی ما کارآمدتر و قابل اعتمادتر بشه. امیدوارم این مقاله براتون مفید بود و با این مفهموم آشناهی پیدا کرده باشید.
متشکرم که وقت گذاشتید و این مقاله رو خوندید. اگر سوالی دارید، خوشحال میشم پاسخ بدم.
فرم نرمال دوم، 2NF، پایگاه داده، بهینه سازی، وابستگی جزئی، کلید اصلی، کلید خارجی، تکرار داده، یکپارچگی داده
وقتی به 2NF به عنوان مخفف Second Normal Form اشاره می کنیم، منظور این است که 2NF با گرفتن حروف اولیه هر کلمه مهم در Second Normal Form تشکیل می شود. این فرآیند عبارت اصلی را به شکلی کوتاه تر و قابل مدیریت تر فشرده می کند و در عین حال معنای اصلی خود را حفظ می کند. بر اساس این تعریف، 2NF مخفف Second Normal Form است.
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved