النموذج العادي الثاني Second Normal Form 2NF
ينص النموذج العادي الثاني علي تلبية جميع قواعد 1NF
ينص النموذج العادي الثاني علي تلبية جميع قواعد 1NF
بالنظر في علاقة
الطلبات و العملاء نريد تخزين هوية العميل، اسم العميل، رقم الطلب و تفاصيل الطلب، وتاريخ
البيع:
CREATE TABLE CUSTOMERS(
CUST_ID INT NOT
NULL,
CUST_NAME
VARCHAR (20) NOT NULL,
ORDER_ID INT NOT
NULL,
ORDER_DETAIL
VARCHAR (20) NOT NULL,
SALE_DATE DATETIME,
PRIMARY
KEY (CUST_ID, ORDER_ID)
);
هذا الجدول هو النموذج
العادي الأول، لوجود كل قواعد النموذج العادي الأول به. هذا الجدول يتكون من المفتاح
الأساسي CUST_ID وORDER_ID. مجتمعين، اي
انهم فريدين من نوعهم.
ومع ذلك، فإن الجدول
ليس في النموذج العادي الثاني لأن هناك تبعيات جزئية في المفاتيح والأعمدة الأولية.
CUST_NAME يعتمد على CUST_ID وليس هناك صلة حقيقية بين اسم العميل وما تم شرائه.
تفاصيل الطلب وتاريخ
البيع تعتمد أيضا على ORDER_ID، ولكنها لا تعتمد على CUST_ID، لأنه ليس هناك
رابط بين CUST_ID وORDER_DETAIL أو SALE_DATE.
لجعل هذا الجدول
يتوافق مع النموذج العادي الثاني، نحتاج لفصل الأعمدة في الجداول الثلاثة.
أولا، إنشاء جدول
لتخزين تفاصيل العملاء:
CREATE TABLE CUSTOMERS(
CUST_ID INT NOT
NULL,
CUST_NAME
VARCHAR (20) NOT NULL,
PRIMARY
KEY (CUST_ID)
);
بعد ذلك نقوم
بانشاء جدول لتخزين تفاصيل كل أمر:
CREATE TABLE ORDERS(
ORDER_ID INT NOT
NULL,
ORDER_DETAIL
VARCHAR (20) NOT NULL,
PRIMARY
KEY (ORDER_ID)
);
وأخيرا نقوم بإنشاء
جدول ثالث لتخزين CUST_ID وORDER_ID فقط لجميع طلبات لعميل:
CREATE TABLE CUSTMERORDERS(
CUST_ID INT NOT
NULL,
ORDER_ID INT NOT
NULL,
SALE_DATE DATETIME,
PRIMARY
KEY (CUST_ID, ORDER_ID)
);
ليست هناك تعليقات:
إرسال تعليق
يسعدني إرسال تعليقاتكم وأسئلتكم واقتراحاتكم