يسترد

نظام إدارة قواعد البيانات RETRIEVE هو نظام إدارة قواعد بيانات (DBMS) تم تقديمه على أنظمة Tymshare بدءًا من أغسطس 1971. كُتب بلغة SUPER FORTRAN الخاصة بشركة Tymshare على جهاز SDS 940. قدّم النظام وظائف أساسية لقواعد البيانات غير العلائقية ذات الملف الواحد باستخدام لغة برمجة تفاعلية . يُعدّ RETRIEVE أحد أوائل الأمثلة على البرمجيات كخدمة (SaaS). [ 1 ]

كان برنامج RETRIEVE ذا تأثير كبير، وأدى إلى ظهور عدد من البرامج المشابهة له بشكل مباشر. كان برنامج RECALL من مختبرات وانغ ، والمُصمم للحاسوب المصغر وانغ 2200، مطابقًا تقريبًا لبرنامج RETRIEVE، لدرجة أن الاختلافات بينهما ذُكرت بالتفصيل في صفحة واحدة. كما أصدر مختبر الدفع النفاث (JPL) نسخةً منه تُعرف باسم JPLDIS لجهاز UNIVAC 1108 عام 1973، وكانت مشابهةً له إلى حد كبير.

استلهم واين راتليف ، المتعاقد مع مختبر الدفع النفاث (JPL) لسنوات عديدة، من برنامج JPLDIS لنقله إلى معالج IMSAI 8080 لإدارة مراهنات كرة القدم الخاصة به ، ثم أطلقه تجاريًا باسم Vulcan لنظام CP/M في عام 1979. حصلت شركة Ashton-Tate على ترخيص Vulcan وأعادت إصداره باسم dBASE II في عام 1980، مما أدى إلى ازدهار سوق قواعد بيانات الحواسيب الصغيرة . لا تزال معظم صيغة RETRIEVE الأصلية دون تغيير في dBASE والعديد من نسخ xBASE التي لا تزال مستخدمة حتى القرن الحادي والعشرين.

تاريخ

في عام 1969، صمّم جيم رايان من شركة تايمشير نسخةً موسّعةً من لغة فورتران (258 كيلوبايت) الخاصة بنظام IBM System/360 H ، مضيفًا إليها سلاسل نصية وميزات أخرى تستفيد من أنظمة SDS 940 الخاصة بهم . استعان رايان بريتشارد مور وفرانك براشر لتطويرها تحت اسم سوبر فورتران، وبدأ تشغيلها على أنظمتهم في عام 1970. [ أ ] بعد فترة وجيزة من إصدار سوبر فورتران، طلب أردن سكوت من مور استخدامها لتطوير رؤيته لنظام إدارة قواعد البيانات (DBMS). كانت النسخة الأولى جاهزة في غضون أسابيع قليلة، وسرعان ما لاقت رواجًا كبيرًا بين عملاء تايمشير. [ 1 ] [ ب ] 

خلال سبعينيات القرن العشرين، بدأت شركة تايمشير بنقل أنظمتها من نظام SDS إلى منصة PDP-10 ، وصولاً إلى تشغيل نظام TOPS-10 . أدى ذلك إلى بذل جهد لبناء محرك قاعدة بيانات جديد كليًا لهذه المنصة، عُرف باسم MAGNUM . كان MAGNUM محرك قاعدة بيانات علائقية متكاملًا ، ويُزعم في العديد من المراجع أنه أول نظام من نوعه يُطرح تجاريًا عند إطلاقه في أكتوبر 1975. [ 3 ] على الرغم من أن معظم عملاء تايمشير ومستخدميها الداخليين تحولوا إلى MAGNUM، إلا أنه بحلول ذلك الوقت كان نظام RETRIEVE قد نُقل إلى عدد من المنصات، وظلت هذه الإصدارات شائعة جدًا خارج الشركة.

في عام 1970، قام مختبر الدفع النفاث (JPL) بتركيب ثلاثة أجهزة من طراز UNIVAC 1108. كان فريد طومسون يستخدم برنامج RETRIEVE لإدارة قاعدة بيانات الآلات الحاسبة الميكانيكية في المختبر، وقرر نقل النظام إلى داخل المختبر عند وصول أجهزة 1108. في عام 1971، تعاون مع مبرمج المختبر جاك هاتفيلد لإنتاج برنامج JPLDIS. غادر هاتفيلد المختبر في عام 1974، وأُسند المشروع إلى مبرمج آخر في المختبر، جيب لونغ، الذي أضاف عددًا من الميزات. [ 4 ]

في عام 1973، تم إصدار جهاز وانغ 2200 ، وهو حاسوب مكتبي صغير مزود بوحدة تخزين على أشرطة كاسيت . [ 5 ] تم نقل برنامج RETRIEVE إلى هذه المنصة تحت اسم RECALL. وقد فصّل تقريرٌ قُدّم للجيش الأمريكي الاختلافات في صفحة واحدة، وخلص إلى أن "الاختلافات بين التطبيقين طفيفة للغاية". [ 6 ]

أثناء عمله كمقاول في مختبر الدفع النفاث (JPL)، شارك واين راتليف في مسابقة توقعات نتائج مباريات كرة القدم الأمريكية . لم يكن مهتمًا باللعبة، لكنه شعر أنه قادر على الفوز من خلال تحليل إحصائيات ما بعد المباريات المنشورة في الصحف. ولتحقيق ذلك، بدأ البحث عن نظام قاعدة بيانات، ووجد بالصدفة وثائق نظام JPLDIS. استخدم هذه الوثائق كأساس لنقل النظام إلى نظام PTDOS على حاسوبه الصغير IMSAI 8080 الذي صنعه بنفسه ، وأطلق على النظام الناتج اسم فولكان (نسبةً إلى السيد سبوك في مسلسل ستار تريك ). لاحقًا، تم نقله إلى نظام CP/M عندما أصبح هذا النظام شائعًا في سوق حافلات S-100 . [ 7 ]

في عام ١٩٨٠، شاهد جورج تيت إعلانًا عن برنامج فولكان يُباع بسعر ٤٩ دولارًا. [ ٨ ] أبرم صفقة ترخيص مع راتليف، وأعاد تسميته إلى دي بيس ٢ ليُشابه الإصدار الثاني، وطرحه في السوق بسعر ٦٩٥ دولارًا. حقق النظام نجاحًا باهرًا، وفي عام ١٩٨١، كلّفت شركة آي بي إم بتطوير نسخة منه لنظام التشغيل بي سي دوس الذي لم يكن قد صدر بعد . [ ٩ ] حقق هذا البرنامج نجاحًا ساحقًا، ليصبح واحدًا من البرامج الثلاثة الكبرى، إلى جانب وورد بيرفكت ولوتس ١-٢-٣، التي شكّلت ما يُعادل حزمة برامج مكتبية في سوق دوس في بداياته. [ ١٠ ]

وصف

العمليات الأساسية

كانت قاعدة بيانات RETRIEVE غير علائقية، وهو مفهوم لم يُطرح إلا في عام 1970. احتوت قواعد بيانات RETRIEVE على جدول واحد مُخزّن في ملف واحد، وكان اسم الملف عادةً ما يكون اختصارًا لاسم قاعدة البيانات. يُحدد هيكل الجدول عند إنشاء قاعدة البيانات، مما يسمح بحقول تحتوي على مدخلات نصية أو عددية صحيحة أو رقمية حرة. [ 11 ] يمكن أن تحتوي قاعدة البيانات على 98 حقلاً كحد أقصى، بحد أقصى 72 حرفًا لكل حقل، ويبلغ إجمالي طول أي صف 768 حرفًا، أو 256 كلمة. يجب أن تبدأ أسماء الحقول بحرف، ويمكن أن تتضمن أحرفًا وأرقامًا ونقطة ورمز @، بحد أقصى 31 حرفًا إجمالاً. [ 12 ]

كان النظام تفاعليًا، حيث يستخدم موجه أوامر داخل النظام للتفاعل مع المستخدم. [ 13 ] على سبيل المثال، لبدء قاعدة بيانات جديدة، يكتب المستخدم الأمر CREATEفي موجه الأوامر، والذي بدوره يطلب من المستخدم كتابة اسم قاعدة البيانات، ثم يطلب منه تعريفات الحقول. يؤدي ترك سطر فارغ إلى إيقاف هذه العملية ونقلها إلى وضع إدخال البيانات، مما يسمح بإدخال الصفوف. [ 14 ] يمكن حذف أي خطوة من هذه العملية بتوفير البيانات في الأمر الأصلي، على سبيل المثال، إذا كتب المستخدم CREATE EMPLOYEESبدلاً من CREATE، فلن يطلب النظام اسم الملف. [ 15 ]

كانت هناك ثلاثة تنسيقات لملفات قواعد البيانات، والتي يمكن تحديدها أثناء عملية المعالجة CREATE، وهي تنسيق الأحرف العادي SYMBOLIC، BINARYوالذي يحفظ الأرقام بتنسيقاتها الداخلية القائمة على 24 بت، SCRAMBLEDوالذي يقوم بتشفير الملف باستخدام كلمة مرور يحددها المستخدم. [ 16 ]

تم تحميل قواعد البيانات الموجودة باستخدام LOAD( BASEكانت متكافئة). [ 17 ] تم حفظ البيانات أثناء تغييرها، ولكن كان هناك أيضًا SAVEأمر لكتابة البيانات (أو أجزاء منها) إلى ملفات نصية. [ 18 ]QUIT خرج من النظام وعاد إلى نظام التشغيل الأساسي. [ 17 ]

استرجاع البيانات

بمجرد تعريف قاعدة البيانات وتعبئتها، أو تحميل قاعدة بيانات موجودة، يمكن عرض البيانات باستخدام الأمر ` LIST.`. بدون أي معلمات، كان الأمر يطبع جميع السجلات بالترتيب الذي أُدخلت به، مع طباعة رقم السجل (RECNO) في بداية كل سطر. يمكن أيضًا توفير قائمة حقول لاختيار الحقول وإعادة ترتيبها في المخرجات، كما في الأمر `.`. كان الأمر `.` LIST EMP.NUM,NAME,SALARYيعمل PRINTبشكل مطابق تقريبًا، مع اختلاف بسيط في أنه لا يطبع رقم السجل (RECNO) في بداية الأسطر. [ 19 ]FAST كان الأمر مشابهًا للأمر ` PRINT.`، ولكنه كان يخفي عناوين الحقول أيضًا. [ 18 ]

كان بالإمكان اختيار السجلات الفردية باستخدام "نظام ترقيم السجلات"، الذي كان يُضاف إلى بداية السجل LISTأو PRINT. كان هذا تنسيقًا مرنًا يسمح بتحديد أرقام السجلات الفردية (RECNOs) مفصولة بفواصل أو نطاقات مفصولة بنقطتين رأسيتين، على سبيل المثال، 1,7:20,50 PRINTسيطبع السجل 1، ثم جميع السجلات من 7 إلى 20، ثم 50. كما تضمن السجل الوهمي $لتمثيل السجل الأخير، لذا 100:$ LISTسيطبع جميع السجلات من 100 فصاعدًا. [ 20 ]

يمكن أيضًا تحديد السجلات بناءً على الحقول التي تستوفي معايير محددة وفقًا لمحتوياتها، باستخدام FORالصيغة. لعرض قائمة بجميع الموظفين الذين يزيد راتبهم عن 40,000 دولار، يُستخدم الأمر `retrieve` PRINT FOR SALARY>40000. يمكن استخدام الصيغة نفسها لتحديد سجلات فردية بناءً على محتوياتها، وليس على رقم السجل (RECNO)، على سبيل المثال LIST FOR NAME="Bob Smith". [ 21 ] [ ج ] يدعم الأمر RETRIEVE جميع المقارنات الأساسية، =`f` <، ` >f`، ` <=f`، >=و` #f` للمقارنة بين القيم غير المتساوية، وهو ما كان موجودًا في بعض لغات BASIC المعاصرة . وبشكل غير معتاد، تضمن الأمر RETRIEVE أيضًا صيغًا إنجليزية للمقارنات التقليدية، بحيث يمكن استخدام `f` SALARY>40000أو `f` SALARY GREATER THAN 40000. يمكن أن تتضمن هذه الصيغ أيضًا عمليات حسابية أساسية، بما في ذلك `f` +، -` *f` للضرب، /و`f` للقسمة، و` f` للأس. [ 22 ] يمكن دمج هذه الصيغ مع الصيغ المنطقية باستخدام AND`f`، OR`f`، و`f` NOT. [ 21 ]

بالإضافة إلى ذلك، تعمل الدوال SUMو بشكل مشابه للدالة COUNTأو ، بما في ذلك نفس مفاهيم اختيار السجلات. وكما يوحي الاسم، تُخرج هذه الدوال قيمة واحدة مع القيم المرتبطة بها. على سبيل المثال، من المرجح أن تُرجع الدالة القيمة 1، بينما قد تُرجع الدالة القيمة 42500. [ 23 ]AVERAGELISTPRINTCOUNT FOR NAME='Bob Smith'AVERAGE SALARY FOR SALARY>40000

بالإضافة إلى LIST/ PRINT/ FAST، توجد عبارة إخراج أخرى REPORT. تعمل هذه العبارة بطريقة مشابهة، ولكنها تتضمن عددًا من الخيارات لتنسيق الإخراج بشكل جميل . يمكن استدعاؤها بمفردها أو مع محددات كما هو موضح أعلاه، ولكن عند استخدامها، تدخل في وضع تفاعلي يطرح عددًا من الأسئلة حول وجهة إرسال الإخراج (حيث T هو الطرفية)، وما إذا كان يجب أن يكون بمسافة مفردة أو مزدوجة، وتضمين العناوين والمجاميع، وما إلى ذلك. [ 24 ]

تعديل البيانات

يمكن حذف السجلات باستخدام DELETEالعبارة، باستخدام نفس محددات السجلات أو تعبيرات الحقول المذكورة أعلاه. يتم إدراج سجلات جديدة باستخدام APPEND. APPEND FIELDSيدخل وضعًا تفاعليًا يسمح للمستخدم بكتابة سجلات إضافية حقلًا تلو الآخر بدلاً من إدخال قيم مفصولة بفواصل صفًا تلو الآخر. [ 25 ]APPEND FROM filename يقرأ البيانات من ملف نصي مفصول بفواصل إلى قاعدة البيانات الحالية الموجودة بالفعل في الذاكرة. [ 26 ]MERGE يُستخدم لتحديث السجلات الموجودة؛ يعمل بشكل مشابه لـ APPEND، حيث يقوم بتحميل البيانات إلى قاعدة البيانات الحالية من ملف آخر، ولكن في هذه الحالة يتضمن مُؤهِّلًا إضافيًا ON. على سبيل المثال، MERGE ON NAME FROM ADDRESSESيقرأ البيانات من ملف ADDRESSES ويبحث في هذا الملف عن عمود يكون فيه الإدخال الأول هو "NAME". ثم يقوم بمعالجة الملف صفًا تلو الآخر، باحثًا عن إدخالات في قاعدة البيانات بهذا الاسم، ثم يقوم بتحديث بقية الحقول بالبيانات من ذلك الصف في ADDRESS. [ 27 ]

دعمت وظيفة RETRIEVE طريقتين تفاعليتين لتحديث السجلات الموجودة، وكانت CHANGEتعمل بشكل مشابه لنظيرتها في لغة SQL الحديثة ، حيث تأخذ تعبيرًا محددًا من نوع ما، وحقلًا واحدًا أو أكثر، والقيم الجديدة. على سبيل المثال، يمكن للمرء أن يقوم بـ [ 28 ] . بينما كانت وظيفة RETRIEVE تؤدي نفس الغرض في النهاية، إلا أنها كانت تفعل ذلك باستخدام وضع تفاعلي. عند استدعاء وظيفة RETRIEVE بدون القيمة الجديدة، على سبيل المثال، [ 29 ] ، كان النظام يطبع ذلك الصف ثم يسمح للمستخدم بتعديل السجل. إذا كانت هناك أكثر من قيمة فريدة، على سبيل المثال، [30] ، فسيتم طباعة كل قيمة على سطر منفصل، وسيتم إرسال التغييرات إلى جميع السجلات المطابقة. [ 31 ] كانت وظيفة RETRIEVE مطابقة لوظيفة RETRIEVE ولكنها لم تكن تطبع القيم الموجودة أولًا. [ 32 ]REPLACEREPLACEUPDATEREPLACE SALARY=SALARY*1.05 WHERE YEARS.EMP>5CHANGECHANGECHANGE FOR 'Bob Smith' IN NAMECHANGE FOR YEARS.EMP>5MODIFYCHANGE

لم يتم فرز البيانات عند استرجاعها، بل تم ذلك بتعديل قاعدة البيانات وإعادة كتابة محتوياتها بترتيب مُرتب. وقد تم ذلك باستخدام الأمر `fl` SORT BY، متبوعًا بما يصل إلى عشرين اسم حقل. تُكتب البيانات الأصلية غير المُرتبة في ملف احتياطي. [ 32 ]

يمكن استخدام المُعدِّل RESULTS TOمع أيٍّ من عبارات تعديل البيانات لإعادة توجيه النتائج إلى قاعدة بيانات جديدة. على سبيل المثال، APPEND FROM FEBSALES RESULTS TO CURSALESسيُلحق البيانات الموجودة في الملف FEBSALES بقاعدة البيانات الحالية، ثم يحفظ النتائج في CURSALES دون تحديث قاعدة البيانات المفتوحة مسبقًا. أو قد يفعل SORT BY NAME RESULTS TO SORTEMPالمرء [ 33 ]

أوامر أخرى

تضمنت أوامر الأدوات المساعدة STRUCTUREأوامر تقوم بطباعة مخطط قاعدة البيانات ، SIZEوأخرى تقوم بإرجاع عدد السجلات. [ 34 ]

برمجة الاسترجاع

على الرغم من أن نظام RETRIEVE كان يُستخدم غالبًا بشكل تفاعلي، إلا أنه تضمن أيضًا إمكانية حفظ قوائم الأوامر في ملفات ثم تشغيلها. [ 35 ] كما يمكن أن تتضمن ملفات الأوامر عددًا من عبارات "المساعدة" الأخرى، بما في ذلك TYPE 'a string'إخراج أي سلسلة نصية، HUSHوإخفاء موجه الأوامر (نقطة)، TALKوإعادة تشغيل الموجه، ECHO ONوإيقاف ECHO OFFظهور التشغيل على الطرفية. [ 36 ]

تم تشغيل ملفات الأوامر هذه باستخدام DO filenameالأمر من سطر الأوامر الداخلي [ 37 ] أو COMMAND filenameمن خارج RETRIEVE، في وضع EXECUTIVE. [ 38 ] إذا كان البرنامج النصي يهدف إلى إبقاء المستخدم في RETRIEVE في النهاية، فيمكن إضافة أمر COMMAND Tفي النهاية، "لتشغيل" Terminal، والذي يحدد ما يجب أن يحدث بعد ذلك. يمكن ربط البرامج النصية معًا COMMANDلتشكيل سير عمل أكثر تعقيدًا. [ 35 ]

عند تشغيلها، تعمل الأوامر الموجودة داخل الملفات تمامًا كما لو كان المستخدم قد أدخلها يدويًا. هذا يعني أنه في حال إدخال عبارة تتطلب عادةً مدخلات إضافية من المستخدم، على سبيل المثال، أمر CHANGEبدون معلمات، فسيتم استدعاء الوضع التفاعلي كالمعتاد. يسمح هذا لملفات الأوامر باستدعاء مدخلات المستخدم ثم تنفيذ تعليمات إضافية. على سبيل المثال، يمكن استخدام أمر REPLACE ALL WEEK.SAL=SALARY/52لرصد أي تغييرات حديثة في الرواتب، ثم استدعاء CHANGE HOURSأمر آخر لعرض سجل كل موظف وطلب ساعات عمله الأسبوعية، ثم REPLACE ALL PAY=HOURS*WEEK.SALحساب الراتب الأسبوعي لجميع المستخدمين، وأخيرًا REPORTإرسال كل ذلك إلى الطابعة. [ 39 ]

مقارنة مع قاعدة بيانات dBASE

على الرغم من مرور ما يقارب عقدًا من الزمن بينهما، وانتقالهما عبر أربع منصات خلال هذه العملية، ظل برنامج dBASE على نظام DOS مشابهًا جدًا لبرنامج RETRIEVE. ذكر راتليف أن هناك "نوعًا من التطور من برنامج Retrieve إلى برنامج JPLDIS ثم إلى برنامجي الذي أسميته Vulcan". [ 40 ] استخدم جون ووكر ، المعروف ببرنامج AutoCAD ، برنامج JPLDIS أيضًا، وصرح بوضوح أن "نظام قاعدة بيانات DBase II، الذي طوره أشتون-تيت، كان نسخة، أو بالأحرى إعادة تنفيذ، لحزمة برمجية طُورت في مختبر الدفع النفاث تُسمى JPLDIS". [ 41 ]

LOADBASEتم استبدال النقاط USEفي أسماء الحقول بنقطتين رأسيتين، لكن معظم الأوامر والميزات الأخرى ظلت دون تغيير باستثناء دعم الاختلافات في المنصات الأساسية، مثل التنسيقات الرقمية. على سبيل المثال، يستخدم دليل مستخدم dBASE الأصلي هذا المثال: [ 42 ]

استغل الناس قائمة

وهو مطابق للتعليمات الواردة في RETRIEVE:

تحميل الأشخاص قائمة

تتشابه آلية عمل العبارات بشكل كبير بين النظامين. وتتمثل الاختلافات الرئيسية في dBASE في قابلية البرمجة؛ فقد أضاف dBASE متغيرات، وأعمدة LISTمكونة من صيغ مثل LIST SALARY*1.05، ومجموعة أوسع بكثير من الدوال لمعالجة البيانات، بما في ذلك دوال لإرجاع طول سلسلة نصية أو نوع بيانات حقل معين. [ 43 ]

ملحوظات

  1. ليس من الواضح متى تم إطلاق برنامج SUPER FORTRAN تحديدًا، ولكن الدليل مؤرخ في أبريل 1970، لذا فمن المرجح أن يكون ذلك في وقت ما من ذلك العام. [ 2 ]
  2. يقدم غريغوري ما يبدو أنه تواريخ متضاربة للإصدار؛ فإذا كان بعد "بضعة أسابيع" من إصدار SUPER FORTRAN، فإن ذلك يشير إلى وقت ما في عام 1970، لكن الدليل يعود إلى عام 1971 ويستخدم هذا التاريخ في النص. [ 1 ]
  3. يمكن استخدام علامات اقتباس مفردة أو مزدوجة مع السلاسل النصية. [ 22 ]

مراجع

الاقتباسات

  1. 1 2 3 غريغوري 2018 ، ص 136.
  2. غريغوري 2018 ، ص 127.
  3. غريغوري 2018 ، ص 140.
  4. "كيف بدأت - JPLDIS: كيف نشأت الفكرة؟" تاريخ فوكس برو .
  5. "حاسوب وانغ 2200: كل ما تحتاج لمعرفته" . تاريخ الحاسوب . 4 يناير 2021. تاريخ الاسترجاع: 18 أكتوبر 2022 .
  6. بلوم 1976 ، ص. 1.
  7. لامرز 1986 ، ص 111.
  8. لامرز 1986 ، ص 115.
  9. لامرز 1986 ، ص 117.
  10. "أشتون-تيت: مواجهة حياة صعبة في عالم البرمجيات" . صحيفة لوس أنجلوس تايمز . 10 مايو 1987.
  11. دليل 1971 ، ص 5.
  12. دليل 1971 ، ص 6.
  13. Wiederhold 2001 ، ص 416.
  14. دليل 1971 ، ص 9.
  15. دليل 1971 ، ص 31.
  16. الدليل 1971 ، الصفحات 28-29.
  17. 1 2 دليل 1971 ، ص. 25.
  18. 1 2 دليل 1971 ، ص 47.
  19. الدليل 1971 ، ص 14.
  20. دليل 1971 ، ص 15.
  21. 1 2 دليل 1971 ، ص. 19.
  22. 1 2 دليل 1971 ، ص. 18.
  23. الدليل 1971 ، الصفحات 54-56.
  24. الدليل 1971 ، الصفحات 67-68.
  25. دليل 1971 ، ص 44.
  26. دليل 1971 ، ص 35.
  27. الدليل 1971 ، ص 46.
  28. دليل 1971 ، ص 23.
  29. دليل 1971 ، ص 20.
  30. الدليل 1971 ، ص 21.
  31. دليل 1971 ، ص 57.
  32. الدليل 1971 ، ص 59.
  33. دليل 1971 ، ص 61.
  34. الدليل 1971 ، ص 48.
  35. 1 2 دليل 1971 ، ص. 79.
  36. دليل 1971 ، ص 84.
  37. الدليل 1971 ، ص 80.
  38. دليل 1971 ، ص 83.
  39. دليل 1971 ، ص 89.
  40. لامرز 1986 ، ص 114.
  41. والمسلي، كين (19 سبتمبر 2008). "مقابلة مع جون ووكر - الجزء الثاني" . من خلال الواجهة .
  42. dBASE 1983 ، ص. 3.10.
  43. dBASE 1983 ، ص. الملحق ج.

فهرس