رسم الخرائط
خريطة الخريطة هي مجموعة Java التي تخزن عناصر في أزواج القيمة الرئيسية ولا تسمح عناصر مكررة في قائمة. توفر واجهة الخريطة ثلاث طرق عرض للمجموعة ، مما يسمح بنظر محتوى الخريطة كمجموعة من مجموعات القيمة الرئيسية ، أو تعيين علاقة رسم خرائط القيمة الرئيسية.
يتم تعيين الخريطة إلى عنصر <map> في جدول التعيين ويمكن تهيئة خريطة غير مرتبة في java.util.hashmap.
تحديد جدول RDBMS:
فكر في موقف نحتاج فيه إلى تخزين سجلات الموظف في جدول الموظف ، والذي سيكون له الهيكل التالي:
قم بإنشاء موظف الجدول (ID int not null auto_increment ، first_name varchar (20) الافتراضي ، last_name varchar (20) الافتراضي ، الراتب الافتراضي الفارغ ، المفتاح الأساسي (المعرف)) ؛
علاوة على ذلك ، من المفترض أن يكون لكل موظف شهادة أو أكثر من الشهادات المتعلقة به. نقوم بتخزين المعلومات ذات الصلة للشهادة في جدول منفصل مع الهيكل التالي:
إنشاء شهادة الجدول (ID int not null auto_increment ، certificate_type varchar (40) الافتراضي الفارغ ، الشهادة _name varchar (30) الافتراضية ، الموظف int الافتراضي ، المفتاح الأساسي (المعرف)) ؛
هناك علاقة فردية بين الموظف وكائن الشهادة.
تعريف فئة Pojo:
دعنا ننفذ موظفًا في فئة POJO سيتم استخدامه للاحتفاظ بمجموعة من الكائنات في جدول الموظف ومتغير قائمة مع الشهادات.
استيراد java.util.*؛ موظف الطبقة العامة {private int id ؛ سلسلة خاصة firstName ؛ سلسلة خاصة راتب الباحث الخاص ؛ شهادات الخريطة الخاصة ؛ الموظف العام () {} الموظف العام (سلسلة fname ، سلسلة lname ، int راتب) {this.firstName = fname ؛ this.lastname = lname ؛ هذا. } public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (string first_name) {this.firstName = first_name ؛ } السلسلة العامة getLastName () {return lastName ؛ } public void setLastName (String last_name) {this.lastname = last_name ؛ } public int getSalary () {return salary ؛ } public void setSalary (int salary) {this.salary = salary ؛ } الخريطة العامة getCertificates () {شهادات الإرجاع ؛ } public void setCertificates (شهادات الخريطة) {this.certificates = issides ؛ }}نحتاج إلى جدول الشهادة المقابل لتحديد فئة أخرى من POJO ، يمكن لهذا الكائن الشهادة تخزين واسترداد جدول الشهادة.
شهادة الفئة العامة {private int id ؛ اسم السلسلة الخاصة ؛ الشهادة العامة () {} الشهادة العامة (اسم السلسلة) {this.name = name ؛ } public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ }} تحديد ملف تعيين السبات:
دعنا نطور ملف رسم الخرائط الذي يرشد السبات كيفية تحديد فئة تم تعيينها إلى جدول قاعدة البيانات. سيتم استخدام عنصر <map> لتحديد قواعد الخريطة المستخدمة.
<؟ Table = "Employee"> <meta attribute = "class-description"> تحتوي هذه الفئة على تفاصيل الموظف. </meta> <id name = "id" type = "int" column = "id"> <generator/> </id> <map name = "intivesates" cascade = "all"> <key colump name = "lastName" column = "last_name" type = "string"/> <property name = "salary" column = "salary" type = "int"/> </class> <class name = "certificate" table = "certificate"> <meta attribute = "class-description> هذه الفئة تحتوي على سجلات الشهادة. </meta> <id name = "id" type = "int" column = "id"> <eredator/> </id> <property name = "name" column = "certificate_name" type = "string"/> </slass> </ hibernate mapping>
التنسيق <SlassName> .hbm.xml في ملف التعيين الذي يجب حفظه. نقوم بحفظ الملف الموظف. hbm.xml في ملف التعيين. على دراية بالفعل بمعظم تفاصيل التعيين ، ولكن دعونا نلقي نظرة على جميع العناصر في ملف التعيين مرة أخرى:
المستند المعين هو مستند XML مع <hibernate mapping> كعنصر جذر يتوافق مع كل فئة تحتوي على 2 <Class> عناصر.
يتم استخدام عنصر <Slass> لتحديد تعيين جدول قاعدة البيانات من فئة Java. يحدد اسم فئة Java سمة الاسم لعنصر الفئة ويحدد اسم جدول قاعدة بيانات سمة الجدول.
عنصر <meta> هو عنصر اختياري يمكن استخدامه لإنشاء وصف للفصل.
يقوم عنصر <ID> بتخطيط سمة المعرف الفريد في الفصل إلى المفتاح الأساسي لجدول قاعدة البيانات. تشير سمة اسم عنصر المعرف إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام عنصر <enderator> داخل عنصر المعرف لإنشاء قيمة المفتاح الأساسي تلقائيًا. قم بتعيين سمة الفصل للعنصر الذي تم إنشاؤه ليكون مواطنًا للسماح لـ Hibernate بالتقاط الخوارزمية في الهوية أو التسلسل أو Hilo لإنشاء مفاتيح أساسية وفقًا لقدرات الدعم لقاعدة البيانات الأساسية.
يتم استخدام العنصر <Property> لتعيين خصائص فئة Java إلى أعمدة في جدول قاعدة البيانات. تشير سمة اسم العنصر إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام عنصر <map> لتعيين العلاقة بين الشهادة وفئة الموظف. نستخدم عنصر <map> من سمة Cascade لإخبار السبات لحفظ كائن الشهادة ، وكذلك إلى كائن الموظف. تم تعيين سمة الاسم لتحديد mapvariable في الفئة الأصل ، في حالتنا الشهادة.
يتم استخدام عنصر <Sext> لتمثيل أزواج المفاتيح/القيمة من المفاتيح والقيم. سيستخدم هذا المفتاح نوع سلسلة مخزّن في COMPANTATE_TYPE.
العنصر <Kear> هو الكائن الأصل الذي يحتوي على مفتاح خارجي ، أي العمود في جدول الشهادة. موظف الجدول.
يشير العنصر <Son-in-Many> إلى أن كائن الموظف يتضمن العديد من كائنات الشهادة ، وبالتالي ، يجب أن يكون كائن الشهادة مرتبطًا بفئة الوالدين الموظف. يمكنك استخدام العناصر <-
إنشاء فئة تطبيق:
أخيرًا ، قم بإنشاء الطريقة الرئيسية () لفئة التطبيق لتشغيل التطبيق. استخدم هذا التطبيق لحفظ سجلات الموظفين جنبًا إلى جنب مع قائمة الشهادات ، ثم تنفيذ سجلات على عملية CRUD في التطبيق.
استيراد java.util.*؛ استيراد org.hibernate.hibernateException ؛ استيراد org.hibernate.session ؛ استيراد org.hibernate.transaction ؛ استيراد org.hibernate.sessionfactory ؛ استيراد org.hibernate.cfg.configuration ؛ الطبقة العامة إدارة {Private Static SessionFactory Factory ؛ public static void main (string [] args) {try {factory = new configuration (). configure (). BuildSessionFactory () ؛ } catch (throwable ex) {system.err.println ("فشل في إنشاء كائن SessionFactory." + ex) ؛ رمي استثناء جديد initializererror (ex) ؛ } managementemive me = new ManagementEmployee () ؛ / * دعنا نحصل على مجموعة من الشهادات للموظف الأول */ HashMap Set = New HashMap () ؛ set.put ("Computerscience" ، شهادة جديدة ("MCA")) ؛ set.put ("إدارة الأعمال" ، شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ SET.PUT ("ProjectMancing" ، شهادة جديدة ("PMP")) ؛ / * إضافة سجلات الموظفين في قاعدة البيانات */ integer Empid = me.addemplyee ("Manoj" ، "Kumar" ، 4000 ، set) ؛ / * اذكر جميع الموظفين */ me.listemplyee () ؛ / * تحديث سجلات رواتب الموظف */ me.updateemplyee (Empid ، 5000) ؛ / * سرد جميع الموظفين */ me.listemplyees () ؛ } / * طريقة لإضافة سجل موظف في قاعدة البيانات * / public Integer Addemplore (String fname ، String lname ، int Salary ، HashMap cert) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ عدد صحيح الموظف = فارغ ؛ حاول {tx = session.begintransaction () ؛ الموظف الموظف = موظف جديد (fname ، lname ، الراتب) ؛ الموظف. effereneiD = (عدد صحيح) الجلسة. save (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ } إرجاع الموظف ؛ } / * طريقة لسرد جميع تفاصيل الموظفين * / public void listemployees () {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ قائمة الموظفين = session.createquery ("من الموظف"). list () ؛ لـ (iterator iterator1 = amploy.iterator () ؛ iterator1.hasNext () ؛) {efferene efference = (amployee) iterator1.next () ؛ system.out.print ("الاسم الأول:" + efferene.getFirstName ()) ؛ system.out.print ("الاسم الأخير:" + efferene.getLastName ()) ؛ System.out.println ("Salary:" + efferene.getSalary ()) ؛ MAP EC = Employee.getCertificates () ؛ System.out.println ("الشهادة:" + (((شهادة) ec.get ("ComputerScience")). getName ())) ؛ system.out.println ("الشهادة:" + (((شهادة) ec.get ("إدارة الأعمال")). getName ())))) ؛ system.println ( (((شهادة) ec.get ("إدارة المشروع"). getName ())) ؛ E.PrintStacktrace () ؛ الموظف) ؛ deleteemplyee (integer session) {session. (tx! = null) tx.Rollback () ؛ تجميع وتنفيذ:
فيما يلي الخطوات لتجميع وتشغيل التطبيق أعلاه. يرجى التأكد من قيامك بتعيين المسار و classpath بشكل مناسب قبل التجميع والتنفيذ.
سيتم الحصول على النتائج التالية على الشاشة ويتم إنشاء السجلات في كل من نماذج الموظف والشهادات.
$ Java ManagementEmployee
..... سيتم عرض رسائل السجل المختلفة هنا .........
الاسم الأول: Manoj الاسم الأخير: كومار الراتب: 4000Certificate: McAcerTificate: Mbacertificate: PMPfirst الاسم: Manoj الاسم الأخير: كومار الراتب: 5000Certificate: McAcErtificate: mbacertificate: PMPP
إذا قمت بفحص نموذج الموظف والشهادة ، فيجب عليك تسجيله:
MySQL> حدد * من الموظف ؛
+-----------------------------+------------+| معرف | first_name | last_name | راتب |+--------------------------------------+---------------+| 60 | مانوج | كومار | 5000 |+-------------------------------+---------+1 صف في المجموعة (0.00 ثانية)
MySQL> حدد * من الشهادة ؛
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
رسم الخرائط sortedMap
SortedMap هو عنصر مخزّن في زوج من القيمة الرئيسية ويوفر النوع العام من المفاتيح المشابهة لمجموعات Java للتعيينات. العناصر المكررة غير مسموح بها في التعيين. يتم فرز الخريطة بالترتيب الطبيعي لمفاتيحها ، أو عن طريق توفير مقارنة عادة في وقت إنشاء الخريطة المطلوبة.
يمكن تعيين <map> عناصر والخرائط المطلوبة التي يتم تعيينها في جدول التعيين في java.util.treemap.
ما زلنا نستخدم جدول RDBMS وفئة PoJO المذكورة أعلاه لتوضيح المثال التالي:
تحديد ملف تعيين السبات:
دعنا نطور ملف رسم الخرائط الذي يرشد السبات كيفية تحديد فئة تم تعيينها إلى جدول قاعدة البيانات. سيتم استخدام عنصر <map> لتحديد قواعد الخريطة المستخدمة.
<؟ Table = "Employee"> <meta attribute = "class-description"> تحتوي هذه الفئة على تفاصيل الموظف. </meta> <name name = "id" type = "int" column = "id"> <generator/> </id> <map name = "شهادات" cascade = "all" sort = "myClass"> <key column = "exepmite_id"/> <index column = "first complete_type" type = type = "string"/> <property name = "lastName" column = "last_name" type = "string"/> <property name = "salary column =" salary type = "int"/> </class> <class name = "certificate" table = "certicate" <meta attribute = "class-description"> هذه الفئة تحتوي على سجلات الشهادة. </meta> <id name = "id" type = "int" column = "id"> <eredator/> </id> <property name = "name" column = "certificate_name" type = "string"/> </slass> </ hibernate mapping>
التنسيق <SlassName> .hbm.xml في ملف التعيين الذي يجب حفظه. نقوم بحفظ موظف ملف التعيين. hbm.xml. على دراية بالفعل بمعظم تفاصيل التعيين ، ولكن دعونا نلقي نظرة على جميع العناصر في ملف التعيين مرة أخرى:
المستند المعين هو مستند XML مع عنصر جذر لـ <-hibernate mapping> المقابل لكل فئة تحتوي على 2 <Class> عناصر.
يتم استخدام عنصر <Slass> لتحديد تعيين جدول قاعدة البيانات من فئة Java. يحدد اسم فئة Java سمة الاسم لعنصر الفئة ويحدد اسم جدول قاعدة بيانات سمة الجدول.
عنصر <meta> هو عنصر اختياري يمكن استخدامه لإنشاء وصف للفصل.
يقوم عنصر <ID> بتخطيط سمة المعرف الفريد في الفصل إلى المفتاح الأساسي لجدول قاعدة البيانات. تشير سمة اسم عنصر المعرف إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام عنصر <enderator> داخل عنصر المعرف لإنشاء قيمة المفتاح الأساسي تلقائيًا. قم بتعيين سمة الفصل للعنصر الذي تم إنشاؤه لجعل الإسبات يتوافق مع الخوارزمية في الهوية أو التسلسل أو Hilo لإنشاء مفاتيح أساسية وفقًا لقدرات الدعم لقاعدة البيانات الأساسية.
يتم استخدام العنصر <Property> لتعيين خصائص فئة Java إلى أعمدة في جدول قاعدة البيانات. تشير سمة اسم العنصر إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام عنصر <map> لتعيين العلاقة بين الشهادة وفئة الموظف. نستخدم عنصر <map> من سمة Cascade لإخبار السبات لحفظ كائن الشهادة ، وكذلك إلى كائن الموظف. يتم تعيين سمة الاسم على متغير SortedMap المحدد في الفئة الأصل ، في حالتنا هي شهادة. يمكن تعيين خاصية الفرز على الفرز الطبيعي ، أو يمكن ضبطها على تنفيذ الفئة المخصصة مثل java.util.comparator. لقد استخدمنا myClass فئة تنفذها على أنها java.util.comparator لعكس ترتيب الفرز لتنفيذ فئة الشهادة.
يتم استخدام عنصر <Sext> لتمثيل الجزء الرئيسي من خريطة زوج المفتاح/القيمة. سيستخدم هذا المفتاح نوع سلسلة مخزّن في COMPANTATE_TYPE.
العنصر <Kear> هو الكائن الأصل الذي يحتوي على مفتاح خارجي ، أي العمود في جدول الشهادة. موظف الجدول.
يشير العنصر <-an-many> إلى أن كائن الموظف يتضمن العديد من كائنات الشهادة ، وبالتالي ، يجب أن يرتبط كائن الشهادة بوالد الموظف. يمكنك استخدام العناصر <-
إذا كنت تستخدم SORT = "Natural" ، فلن نحتاج إلى إنشاء فئة منفصلة ، لأن فئة الشهادة قد نفذت الواجهة المماثلة وستستخدم الإسبات المقارنة في فئة الشهادة المحددة على أنها طريقة sortedMap (). ومع ذلك ، فإننا نستخدم MyClass من فئة المقارنة المخصصة في ملف التعيين الخاص بنا ، لذلك يتعين علينا إنشاء هذه الفئة بناءً على خوارزمية الفرز الخاصة بنا. دعونا نفعل الفرز الرئيسي المتاح على الخريطة.
استيراد java.util.comparator ؛ الفئة العامة myClass تنفذ المقارنة <string> {public int compare (String O1 ، String O2) {Final int قبل = -1 ؛ int النهائي بعد = 1 ؛ / * لعكس ترتيب الفرز ، متعددة من خلال -1 */ if (o2 == null) {return قبل * -1 ؛ } مماثل thisCertificate = O1 ؛ مماثلة thatserigificate = O2 ؛ if (thisCertificate == null) {return After * 1 ؛ } آخر if (thatserycertificate == null) {return قبل * -1 ؛ } else {return thisCertificate.compareto (thatsecertificate) * -1 ؛ }}}أخيرًا ، سنقوم بإنشاء الطريقة الرئيسية () لفئة التطبيق لتشغيل التطبيق. سنستخدم هذا التطبيق لحفظ بعض سجلات الموظفين مع الشهادة ، وبعد ذلك سنقدم عملية CRUD فوق السجلات.
استيراد java.util.*؛ استيراد org.hibernate.hibernateException ؛ استيراد org.hibernate.session ؛ استيراد org.hibernate.transaction ؛ استيراد org.hibernate.sessionfactory ؛ استيراد org.hibernate.cfg.configuration ؛ الطبقة العامة إدارة {Private Static SessionFactory Factory ؛ public static void main (string [] args) {try {factory = new configuration (). configure (). BuildSessionFactory () ؛ } catch (throwable ex) {system.err.println ("فشل في إنشاء كائن SessionFactory." + ex) ؛ رمي استثناء جديد initializererror (ex) ؛ } managementemive me = new ManagementEmployee () ؛ / * دعنا نحصل على مجموعة من الشهادات للموظف الأول */ treemap set1 = جديد treemap () ؛ set1.put ("Computerscience" ، شهادة جديدة ("MCA")) ؛ set1.put ("إدارة الأعمال" ، شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ set1.put ("ProjectManagement" ، شهادة جديدة ("PMP")) ؛ / * إضافة سجلات الموظفين في قاعدة البيانات */ integer empid1 = me.addemplyee ("manoj" ، "kumar" ، 4000 ، set1) ؛ / * مجموعة أخرى من الشهادات للموظف الثاني */ treemap set2 = جديد treemap () ؛ SET2.PUT ("ComputerScience" ، شهادة جديدة ("MCA")) ؛ set2.put ("إدارة الأعمال" ، شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ / * إضافة سجل موظف آخر في قاعدة البيانات */ integer EMPID2 = ME.Addemplyee ("Dilip" ، "Kumar" ، 3000 ، set2) ؛ / * اذكر جميع الموظفين */ me.listemplyee () ؛ / * تحديث سجلات رواتب الموظف */ me.updateemplyee (Empid1 ، 5000) ؛ / * حذف موظف من قاعدة البيانات */ me.deleteemplyee (EMPID2) ؛ / * سرد جميع الموظفين */ me.listemplyees () ؛ } / * طريقة لإضافة سجل موظف في قاعدة البيانات * / public Integer Addemployee (سلسلة fname ، سلسلة lname ، int راتب ، treemap cert) {جلسة الجلسة = factory.opensession () ؛ المعاملة tx = فارغة ؛ عدد صحيح الموظف = فارغ ؛ حاول {tx = session.begintransaction () ؛ الموظف الموظف = موظف جديد (fname ، lname ، الراتب) ؛ الموظف. effereneiD = (عدد صحيح) الجلسة. save (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ } إرجاع الموظف ؛ } / * طريقة لسرد جميع تفاصيل الموظفين * / public void listemployees () {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ قائمة الموظفين = session.createquery ("من الموظف"). list () ؛ لـ (iterator iterator1 = amploy.iterator () ؛ iterator1.hasNext () ؛) {efferene efference = (amployee) iterator1.next () ؛ system.out.print ("الاسم الأول:" + efferene.getFirstName ()) ؛ system.out.print ("الاسم الأخير:" + efferene.getLastName ()) ؛ System.out.println ("Salary:" + efferene.getSalary ()) ؛ sortedMap <string ، certificate> map = efferene.getCertificates () ؛ لـ (map.entry <string ، certificate> entry: map.entryset ()) {system.out.print ("/tcertificate type:" + entry.getKey ()) ؛ System.out.println ("، الاسم:" + (enter.getValue ()). getName ()) ؛ }} tx.commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }} / * طريقة تحديث الراتب للموظف * / public void uptordeMployee (integer amployeeId ، int salary) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ الموظف الموظف = (الموظف) جلسة. الموظف. session.update (الموظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }} / * طريقة لحذف موظف من السجلات * / public void deleteemployee (integer efferenceId) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ موظف الموظف = (الموظف) جلسة. Session.delete (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }}} تجميع وتنفيذ:
يمكنك أن ترى أنه تم فرز الشهادات بالترتيب المعاكس. يمكنك تجربته عن طريق تغيير ملف التعيين ، فقط تعيين Sort = "Natural" وتنفيذ البرنامج ، ومقارنة النتائج.
$ Java ManagementEmployee
..... ستعرض رسائل السجل المختلفة هنا ......... الاسم الأول: Manoj الاسم الأخير: كومار الراتب: 4000 نوع الشهادة: إدارة المشروع ، الاسم: PMP نوع شهادة: Computerscience ، الاسم: MCA نوع شهادة: إدارة الأعمال ، الاسم: الاسم: الاسم: الاسم: الاسم: الاسم: mnofirst الاسم: mnofirst الاسم: mnofirst الاسم: mnom. كومار راتب: 5000 نوع الشهادة: إدارة المشروع ، الاسم: PMP نوع شهادة: Computerscience ، الاسم: MCA شهادة: إدارة الأعمال ، الاسم: ماجستير إدارة الأعمال
إذا قمت بفحص نموذج الموظف والشهادة ، فيجب عليك تسجيله:
MySQL> حدد * من الموظف ؛
+----+--------------------+---------+| معرف | first_name | last_name | الراتب |+------------------------------------+-------------+------------+| 74 | مانوج | كومار | 5000 |+--------------------------------+---------+صف واحد في المجموعة (0.00 ثانية)
MySQL> حدد * من الشهادة ؛
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------