قرار دادن پایگاه داده در فرم عادی سوم (3NF)

فرم طبیعی سوم (3NF) یک اصل پایگاه داده است که از یکپارچگی داده ها بر اساس اصول نرمال سازی پایگاه داده ارائه شده توسط فرم اول Normal (1NF) و فرم عادی دوم (2NF) پشتیبانی می کند.

الزامات فرم سوم عادی

دو مورد اساسی برای یک پایگاه داده وجود دارد که در فرم سوم سوم قرار می گیرد:

درباره وابستگی اصلی اولیه

بیایید بیشتر آنچه را که به این واقعیت مربوط است که همه ستون ها به کلید اولیه بستگی دارد، کشف کنیم.

اگر مقدار ستون را می توان از دو کلید اصلی و یک ستون دیگر در جدول استخراج کرد، آن 3NF را نقض می کند. جدول کارمندان با این ستون ها را در نظر بگیرید:

آیا Both LastName و FirstName فقط به ارزش EmployeeID بستگی دارد؟ خوب، می تواند LastName در FirstName بستگی دارد؟ نه، زیرا چیزی که در LastName ذاتی ارزش Name نامیده می شود. آیا Name FirstName به LastName بستگی دارد؟ نه دوباره، چون همان درست است: هر چه نام LastName باشد، نمیتواند اشاره ای به مقدار NameName ارائه دهد. بنابراین، این جدول 3NF سازگار است.

اما این جدول وسایل نقلیه را در نظر بگیرید:

تولید کننده و مدل می تواند از VehicleID حاصل شود - اما مدل همچنین می تواند از تولید کننده حاصل شود، زیرا مدل خودرو تنها توسط یک تولید کننده خاص ساخته شده است. این طراحی جدول غیر قابل انطباق با 3NF است و می تواند منجر به ناهنجاری های داده شود. به عنوان مثال، شما ممکن است سازنده را بدون به روز رسانی مدل، ارائه اشتباهات به روزرسانی کنید.

برای اینکه آن را سازگار کنیم، باید ستون وابسته اضافی را به یک جدول دیگر حرکت دهیم و آن را با استفاده از کلید خارجی ارجاع دهیم. این به دو جدول میرسد:

جدول وسایل نقلیه

در جدول زیر ModelID یک کلید خارجی برای جدول مدل است :

جدول مدل

این جدول جدید نقشه های مدل را برای تولید کنندگان ارائه می دهد. اگر می خواهید اطلاعات مربوط به وسیله نقلیه مربوط به یک مدل را به روز کنید، می توانید آن را در این جدول انجام دهید، نه در جدول وسایل نقلیه.

زمینه های حاصل از مدل 3NF

یک جدول ممکن است حاوی یک فیلد مشتق شده باشد - که بر اساس ستون های دیگر در جدول محاسبه می شود. برای مثال، این جدول از دستورات ویجت را در نظر بگیرید:

مجموع تخریب 3NF انطباق، زیرا می توان آن را با ضرب قیمت واحد با مقدار، مگر اینکه به طور کامل وابسته به کلید اولیه مشتق شده است. ما باید آن را از جدول حذف کنیم تا با فرم سوم سوم مطابقت داشته باشد.

در واقع، از آنجا که مشتق شده است، بهتر است که آن را در پایگاه داده ذخیره نکنید.

ما می توانیم به سادگی آن را در پرواز در هنگام انجام درخواست های پایگاه داده محاسبه کنیم. برای مثال، ما ممکن است قبلا از این پرس و جو برای بازیابی اعداد و کل اعداد سفارش استفاده کردیم:

SELECT OrderNumber، Total FROM WidgetOrders

اکنون می توانیم از پرس و جو زیر استفاده کنیم:

SELECT OrderNumber، UnitPrice * مقدار به عنوان مجموع از WidgetOrders

برای رسیدن به نتایج مشابه بدون نقض قوانین عادی.