Chapter_7_-_Mapping_ER_And_EER_model_to_Relational_model_-_Part_4
طيب، إحنا دلوقتي مرينا بكل الخطوات اللازمة لعمل mapping بين الـ ER و الـ Relational Model أو تحويل الـ ER model to relational schema.يتبقى عندنا بعض الخطوات اللازمة بقى لتحويل الـ EER model to relational .
الـ EER اللي هو الـ Enhanced Entity Relationship Model اللي درسناه في chapter 4.عاوزين نعمل mapping بين الـ EER و الـ relational schema. فالكلام ده عندنا في chapter 7 اللي هو الـ chapter بتاع التحويل ده أو الـ mapping هتلاقيه مشروح من أول الـ step 8 او الخطوه رقم تمانيه .
وهي بتتكلم بالتحديد عن mapping the specialization or generalization. الـ specialization و الـ generalization دي بعض الـ concepts اللي درسناها في الـ EER اللي هو في chapter 4. لو أنت مش متذكر كويس ممكن ترجع للـ video دوت وهتلاقي وصف تفصيلي يعني إيه specialization ويعني إيه generalization وإزاي بنعملها modeling
.بالـ EER. طيب، حتة الـ mapping للـ specialization و الـ generalization أنا عندي فيها four options. Four options يعني إيه؟ أربع خيارات ممكن أمشي فيهم. عندي الخيار A و B و C و D. اللي قدامنا ده
وصف مختصر كده لكل option من دول. مثلًا يعني الـ option A بيقول إيه هنا يا جماعة؟ Multiple relations: Superclass and subclasses. يعني إيه؟ بيقول إن أنا في حتة الـ mapping للـ specialization أو الـ generalization
.أنا هعمل أكتر من relation. أو أكتر من table. للـ superclass وللـ subclasses. ماشي هنشوف إزاي دلوقتي، أنا بقولك كده ده وصف مختصر للي هيتم في الـ option ده. الـ option B: Multiple relations، بس إيه هنا؟ Subclass relations only.
أه، يعني هنا بيقول لما أجي أعمل mapping للـ specialization أو الـ generalization، أنا هعمل أكتر من relation بس لمين للـ subclasses فقط. يعني الـ superclass مش همثله في relation هنا في الـ option ده. طيب. الـ option C
بيقول أنا هعمل Single relation with one type attribute. أه، الـ option C هنا بيقول لأ يا جماعة، أنا لما أجي أعمل mapping للـ specialization أو الـ generalization وأحولها لـ relational schema، أنا هحول كل الـ specialization والـ generalization اللي موجودة دي لـ relation واحدة، أو لـ table واحد.
وأحط فيه type attribute. طب كام type attribute؟ قالك one type attribute. طبعًا الـ type attribute ده يا جماعة لو تذكروا إحنا اتكلمنا عليه في الـ EER. أه، دي attribute اللي بتقول لي الـ entity الحالي ده أو الـ tuple ده أو الصف ده يتبع أي subclass
ماشي؟ طيب. الـ option D بيقول أنا هعمل برضو single relation. طيب. بس إيه بقى؟ With multiple type attributes. أه برضو نفس الكلام أنا لما أجي أعمل mapping باستخدام الـ option D أنا هعمل single relation لكل الـ specialization و الـ generalization الموجود عندى فى ال EER
لكن هحط أكتر من type attribute، multiple type attribute. كفكرة عامة كده، إحنا ممكن نقول إيه؟ إن الـ Option A والـ Option B بيتكلموا عن multiple relations. الـ Option C والـ Option D بيتكلموا عن إيه؟ Single relation.
خلاص؟ يبقى إحنا دلوقتي دي الفكرة العامة للي هنعمله. طيب، خلينا بقى نشوف بالتفصيل. أول حاجة الـ Option A بيقول إيه بقى؟ Multiple relations: Superclass and subclasses. معناها إيه يا جماعة؟ معناها إن أنا همسك الـ specialization أو الـ generalization اللي عندي
وهعمل relation للـ superclass. الـ superclass لو فاكر كان الـ entity الرئيسي. طيب. وهعمل relation كمان لكل subclass. الـ subclasses اللي هي الإيه بقى؟ الـ sub-entities أو الـ subgroups اللي كانت نازلة من الـ entity الرئيسي، زي الرسمة دي يا جماعة.
شايف هنا؟ أهو ده الـ Employee دوت في حالتنا هنا ده بيقولوا عليه الـ Superclass. الكلام ده اللي بقوله ده يا يا يفترض اللي أنت ذاكرت Chapter 4. لو ما ذاكرتوش، ارجع ذاكره في video مخصوص إحنا عاملينه للـ EER. أنا هنا بس بذكر سريعًا كده. فأنا هنا عندي
ادي الـ Employee اللي هو الإيه بقى؟ الـ Superclass. وعندي الـ Subclasses دي اللي هو الـ Secretary أو الـ Technician أو الـ Engineer. فاكرين؟ أه، فإحنا كنا بنقول إن الـ Secretary ده subclass من الـ superclass اللي اسمه Employee. والـ Technician ده برضو subclass من الـ superclass اللي اسمه Employee وهكذا.
ولو فاكر ده الـ Job Type ده هما اللي بيقولوا عليه اسمه إيه بقى؟ أه اللي اسمه attribute type أو type attribute أسف ده اللي بيسموه الـ type attribute. الـ type attribute اللي هو كان معناه إيه يعني؟ معناه إن حسب القيمة بتاعة الـ attribute دي هنشوف إحنا هنتجه في أني اتجاه. يعني حسب القيمة بتاعة الـ Job Type دي، هنفترض اللي هي كانت Secretary
يبقى أنا هتجه إلى الـ subclass اللي اسمه Secretary. لو كانت الـ Job Type attribute دي القيمة بتاعتها Engineer، يبقى أنا هتجه ناحية الـ subclass اللي اسمه Engineer وهكذا. فالـ Option اللي عندنا ده، اللي هو option 8 A، بيقول اللي أنا هعمل multiple relations للـ superclass وكمان للـ sub
طيب هتعمل إزاي؟ قالك أهو ده التفصيل بقى. Creates a relation for the superclass and its attributes. طيب. Plus a relation for each subclass includes the specific or local attribute
of it طب يعني إيه بقى؟ خلينا نرجع كده، ادي الرسمة. الـ Superclass بتاعك فين؟ أهو اللي اسمه Employee. عمله relation. أهي عمل relation اسمها Employee وحط فيها الـ attributes بتاعة الـ superclass. أهي قدام حضرتك الـ SSN والـ FName والـ Middle Name والـ BirthDate و و و.
كل الـ attributes اللي موجودة هنا. وكمان بدأ يعمل relation لكل subclass. أهو relation للـ Secretary. و relation للـ Technician. وكمان relation للـ Engineer. صح؟ طيب هتحط إيه في الـ relations بقى بتاعة الـ subclasses دي
ألك هحط الـ local attributes. إيه هي local attributes؟ أه دي كانت الـ attributes اللي تخص كل subclass لحاله. صح؟ مش احنا عارفين الـ subclasses دي كل subclass عادة بيبقى فيه attribute تخصه هو لوحده دونًا عن بقية الـ subclasses؟ أه، فإحنا هنبدأ نحطها هنا، زي مثلًا في حالتنا.
الـ Secretary كانت إيه الـ local attribute بتاعته؟ الـ TypingSpeed. روحنا كاتبين هنا الـ TypingSpeed. هنا في الرسمة الـ Technician إيه هي الـ local attributes بتاعته؟ الـ TGrade أهي كتبنا الـ TGrade. الـ Engineer، ها؟ إيه الـ local attribute؟ الـ EngType أهو كتبنا الـ EngType.
طيب وبعدين؟ اقرأ كده معايا في الكلام بيقول هنا إيه؟ أهو قالك of it plus the primary key of the superclass which is propagated to subclass relations and becomes its primary key also. أه، يبقى أنت هتحط
في كل subclass relation الـ local attributes بتاعتها plus الـ primary key بتاع الـ superclass. الـ Superclass بتاعنا هنا اللي هو الـ Employee مين الـ primary key بتاعه؟ الـ SSN. برافو عليك. فرحنا حاطين الـ SSN ده كمان في الـ Secretary subclass relation.
نفس الكلام كررناها مع الـ subclass relation بتاعت الـ Technician هنا. الـ Technician الـ local attribute بتاعته هي الـ TGrade. زودنا عليها مين؟ الـ Primary Key بتاع الـ Superclass اللي هو الـ SSN. نفس الكلام مع الـ Engineer. الـ Engineer كـ subclass الـ local attribute بتاعته هي مين؟ الـ EngType. زودنا عليها الـ Primary Key بتاع الـ Superclass اللي هو مين؟ الـ SSN.
خلاص؟ أصبح التلاتة subclasses دول مرتبطين بالـ superclass بتاعهم اللي هو الـ Employee عن طريق الـ foreign key اللي هو مين في حالتنا دلوقتي؟ الـ SSN. خلاص واضحة يا جماعة؟ تمام؟ يبقى أدي أدي الـ option الأولاني. طب خلي بالك هنا بيقولك إيه بقى؟ الـ option 8A الـ option رقم A دوت اللي احنا لسه شارحينه.
works for any constraints on the specialization relationship أنت عندك هنا أي طبعًا أنت عارف إن هنا الـ specialization دي ممكن يتحط عليها constraints. فاكر أنت الـ constraints اللي عليها؟ أهي هنا برضو بفكرك بيها هنا تاني أهي. كان عندنا إيه الـ constraints؟ أه إما Disjoint constraint
أو الـ completeness constraint. فاكر؟ الـ disjoint أو الـ completeness اللي هما كانوا فين بيترسموا؟ هنا صح؟ كنت أكتب هنا d أو o. الـ d لو كانت disjoint ودي كانت معناها إيه؟ شوف أنا بفكرك تاني أهو. كانت معناها إن الـ Employee يقدر يكون
member في subclass واحد فقط من هنا. طب وأما كانت o اللي هي overlap فاكر؟ أه، كان معناها إن الـ Employee ممكن يكون member في أكتر من subclass من دول. طيب والـ Total completeness والـ Partial completeness فاكرها؟ أه الـ Total كانت معناها إيه؟ إن الـ Employee لازم يكون member من الـ subclasses دي فقط
طيب وأما كانت partial معناها إيه؟ معناها إن الـ Employee ممكن يكون member من subclass غير اللي موجودين قدامك دول. صح كده؟ فهو بيقولك هنا في option A إن الـ option A دوت أو طريقة التحويل اللي احنا اتبعناها دي اللي هي بنسميها هنا option A
تقدر تشتغل مع أي constraints موجودة على الـ specialization سواء Disjoint، Overlapping، Total أو Partial. تمام؟ تمام.بعد كده عندنا الـ option الثاني اللي هو Option 8 B. هنا الـ Option 8 B بيقول إيه بقى؟
او الوصف المختصر زي ما قولنا Multiple relations. Subclasses relations only. أه. يبقى هو هنا برضو في أما يجي يعمل mapping للـ specialization أو الـ generalization ويحولها لـ relational schema، هيعمل أكتر من relation
لكن أكتر من relation لمين؟ للـ Subclasses فقط. ومش هيعمل relation للـ Superclass زي ما كنا في الـ Option A. ماشي؟ شوف هنا بيقول إيه؟ Option B بيقول Creates a relation for each subclass includes the specific or local attribute
يبقى الـ relation اللي هيعملها للـ subclass، هيحط فيها الـ local attributes الخاصة بالـ subclass. and all the attributes of the superclass. وكل الـ attributes اللي موجودة كمان فين؟ في الـ superclass. طيب. The Primary Key of the superclass
is propagated to subclass relation and becomes its Primary Key. طيب الـ relation اللي هيعملها لكل subclass، مين الـ Primary Key بتاعها؟ نفس الكلام، الـ Primary Key بتاع الـ Superclass. طيب، تعال نشوف الكلام ده. هنا أهو دي specialization أهي موجودة
الـ Vehicle اللي هي المركبة في منها two subclasses: Car و Truck. أو تقدر تقول عليها generalization. ماشي؟ أيًا كان. فأنا عندي الـ Car ليها بعض الـ specific attributes أو الـ local attributes زي الـ MaxSpeed والـ NumberOfPassengers اللي هما عدد الركاب
.وعندي الـ Truck اللي هي بنقول عليها إحنا اسمها إيه الـ Truck؟ اللي هي الشاحنة أو اللي هي المقطورة دي. دي بيبقى فيها، ليها برضو بعض الـ local attributes زي الـ NumberOfAxles أو والـ Tonnage اللي هو كم طن حمولتها كم طن يعني. طيب
وعندي الـ attributes الموجودة أساسًا فين؟ في الـ superclass اللي هو الـ Vehicle. أما جه يعمل mapping عمل إيه؟ إحنا قلنا multiple relations. كل subclass هنعمل له relation. فعمل subclass relation للـ Car، وعمل subclass relation لمين؟ للـ Truck.
صح حط فيها الـ attributes الـ local بتاعة الـ Car اللي هي إيه الـ attributes الـ local بتاعة الـ Car؟ اللي هي الـ MaxSpeed والـ NumberOfPassengers. أهو بالاضافة لكل الـ attributes اللي موجودة في الـ Superclass اللي هي كانت إيه؟ اللي هي كانت الـ VehicleID والـ Price والـ LicensePlateNum
و هو هنا اختار أن يكون الـ Primary Key بتاع الـ Superclass هو الـ VehicleID. نفس الكلام كررناه مع الـ relation التانية اللي عملناها للـ Subclass التاني اللي هو الإيه؟ الـ Truck. حطينا فيه الـ local attributes اللي هي الـ NumberOfAxles
الـ Tonnage اللي هو الحمولة، وزود كمان عليهم اللي هما الـ attributes الأساسية اللي موجودة فين؟ موجودة في الـ superclass، اللي هي الـ VehicleID والـ LicensePlateNumber والايه؟ والـ Price. هنا الـ الـ الـ box اللي ناقص ده، ده مكتوب المفروض يكون موجود فيه إيه يا جماعة؟ الـ Tonnage دي. ماشي؟ دي المفروض تكون موجودة هنا في الـ
طيب تعال نرجع. بيقولي الـ option ده works well الـ option ده تستخدمه كويس إمتى when both the disjoint and total constraints hold. أه، يعني بيقولك أما يكون هنا Total
وأما يكون كمان disjoint الأفضل تستخدم الـ Option B اللي إحنا بنتكلم عليه ده. ماشي؟ يبقى الـ Option B مناسب في حالة أما يكون الـ constraints disjoint، disjoint يعني إيه؟ أه، يعني الـ member في الـ superclass لازم يكون member في subclass واحد فقط من هنا. لا إما يكون car لا إما يكون truck
طيب وحتة كونه total دي معناها إيه؟ بنقولها تاني أهو. معناها إن الـ member في الـ superclass اللي هو الـ Vehicle يعني، لازم يكون من النوعين دول فقط. لازم يكون من الـ subclasses دول فقط، مينفعش يكون من subclass آخر. ماشي؟ فلو لقيت الـ constraints دي متحققة في الـ specialization أو الـ generalization اللي قدامك
يبقى استخدم الـ Option B أفضل ليك. ماشي؟ طيب، يبقى إحنا كده اتكلمنا عن two options، اللي هما Option A و Option B. Option A و Option B اللي بيميزهم اللي هما إيه؟ Multiple relations. Option A كان بيعمل relation للـ superclass و relation لكل subclass
Option B للي إحنا بنتكلم عليه دلوقتي، بيعمل relation لكل subclass. طبعًا في كل subclass بيحط الـ attributes بتاعت كمان إيه؟ الـ Superclass معاها. وبيخلي الـ primary key بتاع الـ superclass هو الـ primary key بتاع كل relation عملها لايه؟ للـ sub
class ماشي؟ طيب. ننتقل بعد كده للـ Option C و الـ Option D. الـ Option C والـ Option D إحنا قلنا عليهم مالهم؟ أه، Creates a single relation to represent the superclass and all its subclasses. هنا بقى Option C و Option D بيعملوا relation واحدة فقط
لكل الايه؟ الـ Superclass والـ subclasses اللي تحتيها. لكن طبعًا في ميزات بتميز الـ C عن الـ D، بس هنشوفها دلوقتي. طيب. An entity that doesn't belong to some of the subclasses will have null values for the specific attributes of these subclasses. طيب
أنت دلوقتي حطيت كل الـ attributes بتاعت الـ superclass والـ subclasses في relation واحدة. طيب لو في entity عندي من subclass معين ولا يتبع الـ subclass الآخر؟ يبقى الـ attributes بتاعت الـ subclass الآخر هيبقى قيمتها إيه؟ Null بالنسبة للـ entity بتاعك
صح؟ طيب. These options are not recommended if ركز بقى، الـ Option C والـ Option D دول not recommended إمتى؟ if many specific attributes are defined for the subclasses. أه. بيقولك الـ Option C والـ Option D دول
مش محبذين، أو غير مرغوب فيهم، أو مش هما الاختيار الأمثل في حالة ان كان الـ local attributes بتاع كل subclass عددها كبير. عارف ليه؟ اه لأن كده عدد الـ nulls هيبقى كتير. صح ولا لأ؟ يعني أنا مثلا لو عندي subclass ليه خمسة local attributes، و subclass تاني ليه مثلا ستة أو سبعة local attributes.
معنى الكلام اللي احنا بنقوله إن أنا دلوقتي خليتهم كلهم في relation واحدة. هيبقى عندي في الـ relation الواحدة 11 attribute. كمان ده plus الـ attributes بتاعة الـ superclass. طيب. دلوقتي حضرتك لما تيجي تملى الـ relation دي بالبيانات.
هنفترض إن أنت الـ entity اللي بتملاه دلوقتي ده من الـ subclass الأولاني. فإذن أنت هتحط قيم للـ attributes بتاعة الـ subclass الأولاني فقط. والـ attributes الباقية كلها بتاعة الـ subclass التاني هيبقى فيها nulls. فلو عدد الـ attributes دي اللي هي تخص الـ subclass التاني كتيرة.
يبقى إذن عدد الـ nulls هيبقى كتير، وطبعا ده غير مرغوب فيه في الـ relational data model. ده مش صح، ماشي؟ لأنك بتحجز space وغير مستغل، صح ولا لأ؟ يبقى هنا الـ option C والـ option D اللي هما بيعملوا single relation لكل الـ superclass والـ subclasses بتاعته، غير مرغوب فيهم، أو غير محبذين، أو not recommended، لا يوصى بهم في حالة ان كان الـ specific attributes أو الـ local attributes.
بتاعة كل subclass كتيرة، عددها كتير، ماشي؟ طيب if few specific subclass attributes exist، طيب لو العكس؟ لا لو عندي الـ local attributes أو الـ specific attributes بتاعة الـ subclasses كانت قليلة، مثلا attribute أو اتنين، قالك في الحالة دي.
These mappings are preferable . Preferable يعني إيه يا جماعة؟ يعني مفضلة عن الـ option A والـ option B. تخيل؟ اه، يبقى أنا دلوقتي أما باجي أعمل mapping أحط عيني على إيه يا جماعة؟ على عدد الـ local attributes.
عدد الـ specific attributes اللي تتبع كل subclass. لو لقيت عددها قليل يبقى الأفضل إني استخدم الـ option C والـ option D عن الـ option A والـ option B اللي هما كانوا بيعملوا multiple relations. طب ليه؟ لأن طبعا أما أجمع الـ attributes في relation واحدة ده أفضل وأسرع في تنفيذ الـ query.
هو أنت دلوقتي في الـ option B أو الـ option A اللي احنا لسه دارسينهم دلوقتي، لو أنت عاوز تنفذ query، مش هتجيب الـ data بتاعته من الـ two relations دول؟ اه، طب ما ده يتطلب join. الـ join ده أما بياخد وقت في التنفيذ، صح؟ لكن لو أنا كنت مخليهم في single relation يبقى الوصول أو الـ data access هنا أسرع.
بس إيه اللي بيحكمني؟ عدد الـ attributes اللي تتبع الـ subclass. خلاص يا جماعة؟ تمام. تعال بقى نمسك كل option من دول على حدة. الـ option C زي ما اتفقنا single relation with one type attribute. إيه هو الـ type attribute احنا قولنا عليه قبل كده؟ ده الـ attribute اللي بيميز لي الـ entity ده يتبع أني subclass.
صح زي ما وريتكو قبل كده في الـ job type. هنا، ده كان اسمه إيه؟ ده type attribute. حسب الـ job type أنا هعرف الـ entity اللي عندي هو secretary ولا technician ولا engineer طب فهنا بيقول .
is used to handle disjoint subclasses. يبقى أدي أول حاجة، أستخدمه امتى؟ أما يكون الـ constraint اللي عندي، اللي موجود على الـ specialization أو الـ generalization، disjoint خلي بالك By including a single type
type or discriminating attribute. هنحط type attribute واحدة، وليكن اسمها مثلا T.   To include to which of subclasses each tuple belongs, عشان نقدر to indicate اسف عشان نقدر نحدد الـ entity اللي عندي ده بيتبع أنهي subclass طيب تعال نجرب كده
شايف هنا المسألة دي؟ هنا عندي أدي الـ Employee كـ superclass. عندي specialization خارجة منه أهي، في Secretary وفي Technician وفي Engineers، دول كلهم مالهم؟ subclasses. برافو عليك. وأدي الـ Job Type اللي هي قلنا عليها اسمها إيه بقى؟ اه اللي هي اسمها الـ Type attribute
صح كده. اللي على أساسها هعمل إيه؟ على أساسها هعرف الـ Employee بتاعي يتبع أني subclass. فاحنا هنا في الـ Option C، قالك هنعمل single relation. فعمل الأول البيانات الأساسية بتاعة الـ superclass. حط الـ SSN أهو، وحط الـ Name، الـ Fname والـ Middle name والـ Last name والـ Birthdate و... و... و...
ثم حط إيه؟ الـ Type attribute اللي هي مين؟ الـ Job Type. حطها أهي يا جماعة. وبعد كده عملنا إيه؟ حطينا الـ specific attributes بتاعة كل subclass، أو الـ local attribute بتاعة كل subclass. جه هنا على الـ Secretary لقى الـ TypingSpeed، أهو
جه على الـ Technician لقى الـ TGrade أهي، حطها. جه على الـ Engineer لقى الـ local attribute بتاعته هي الـ EngType، أهي حطها معاه. خلاص؟ ده option سهل خالص. يبقى هو single relation هحط فيه كل الـ attributes بتاعة الـ superclass والـ subclass. وبزود عندي الـ type attribute اللي بتميز لي
اللي الـ entity ده يتبع أي هاه؟ يتبع أي subclass. طيب استخدمها أفضل امتى؟ في حالة الـ disjoint constraint. أما يكون هنا عندي في الدايرة دي 'd' أو disjoint، يبقى الأفضل إن أنا أستخدم الـ option اللي اسمه option C. خلاص؟ طيب. الـ Option D
Single relation برضه، نفس الكلام. هيعمل single relation للـ specialization. يعني single relation هتضم الـ attributes بتاعة الـ superclass والـ subclasses بتاعته. خلي بالك بس هنا زيادة إيه بقى؟ أو الاختلاف إيه؟ with multiple type attributes. اه، إحنا كنا في الـ Option C، single type attribute. بنحط type attribute واحدة
وعلى أساسها بنحدد الـ subclass. هنا لأ، كل subclass هنحط له type attribute تخصه. شايف هنا؟ طيب دي بستخدمها امتى؟ قالك is used to handle overlapping. اه، الـ Option C كان بيستخدم امتى؟ to handle disjoint subclass
خلي بالك، لكن هنا لأ، في الـ Option D to handle overlapping subclasses. اه أما يكون عندي الوضع اللي موجود عندي إن الـ member في الـ superclass ممكن يكون member في أكثر من subclass في نفس الوقت، اللي هي الـ overlapping يعني، في الحالة دي الأفضل إنك تستخدم الـ Option D
خلاص طيب تعال نجربها كده. أهو، شايف هنا؟ عندك الـ superclass بتاعنا اللي اسمه إيه؟ Part. Part دوت أدي الـ attributes الأساسية بتاعته، part number وdescription. طيب، الـ part ده حصل منه specialization لنوعين من الـ parts. في manufactured part اللي هو يعني part مُصنّع
أو قطعة غيار مُصنّعة أو purchased part اللي هو part معناها ايه قطع غيار مُشتراة، اشتريناها من بره. طيب، طبعا هنا في overlapping. يعني إيه overlapping؟ اه، يعني ممكن الـ part يكون member من الـ two subclasses في نفس الوقت. ما عندوش مشكلة
طيب. فبالحالة دي عملنا إيه؟ أدي عملنا single relation. حطينا فيها الـ attributes بتاعة الـ superclass اللي هي مين؟ الـ Part Number والـ Description. أهو، أدي الـ Part Number والـ Description. وبعدين هنبدأ نحط الـ attributes بتاعة كل subclass
صح؟ أهو مثلا. الـ subclass الأولاني، إيه الـ attributes بتاعته؟ أدي الـ Drawing Number والـ Manufacture Date وأدي الـ Batch Number. خلي بالك؟ طيب وبعدين؟ ما تنساش، هنا قالي إيه؟ قالي إن أنا أحط multiple type attributes. اه، يبقى همسك كل subclass أحط له type attribute
أو flag. شايف؟ هنا بص، حط هنا Mflag. M يعني ده خدها من اللي هي Manufactured، هاه؟ طبعا أنت مش مش يعني مش ملتزم بالتسمية دي. لكن هو طبعا يعني عشان اللي بيقرأ يفهم على طول، فحط الـ M اللي هو إيه؟ أول حرف هنا في الـ subclass ده flag
وبعدين حط الـ attributes بتاع الـ subclass ده. جه عند الـ purchased part، برضه عمله flag، سماه Pflag. برضه خد الحرف الأولاني من اسم الـ subclass وزود كلمة إيه؟ flag. وبعدين حط الـ attributes اللي تخصه هو. صح؟ الـ attributes دي يا جماعة بتبقى boolean attributes. boolean يعني إيه؟
يعني قيمتها إما yes أو no. ماشي؟ طبعا هنا كونه overlapping، معناها إن أنا ممكن الـ attribute الـ entity عندي يكون مشترك فين؟ في الـ two subclasses. صح؟ فيبقى هنا yes في الـ flag الأولاني ده yes
وكمان في الـ flag التاني yes. أما ألاقي هنا yes وهنا yes، معناها إيه؟ معناها إن ده part member في الـ two subclasses دول. طب لو لقيت هنا yes ولقيت هنا no؟ معناها إيه؟ اه إن هو member في الـ subclass اللي على الشمال ده فقط. طب لو لقيت هنا yes وهنا no؟ معناها إن هو member في الـ subclass اللي على اليمين ده فقط. وهكذا.
ماشي؟ يبقى هنا الـ option D بيقول إني أعمل single relation لكل الـ superclass والـ subclasses بتاعته. وأزود type attribute لكل subclass
الـ type attribute هيبقى الـ type بتاعه إيه؟ boolean. boolean يعني إيه؟ يعني إما يشيل yes أو true. no أو false. بما إني أنا عندي هنا overlapping، أو الأفضل إن أنا أستخدم الـ option D في حالة الـ overlapping، يبقى أنا ممكن الـ member بتاعي أو الـ entity بتاعي اللي أسجله هنا يكون واخد
true values فين؟ في الـ two type attributes هنا وما عنديش مشكلة. تمام؟ تمام.