أثناء العمل مع PostgreSQL ، تراكمت أكثر من مائة وظيفة للعمل مع دلائل النظام: pg_class ، pg_attribute ، pg_constictions ، إلخ.
ماذا تفعل معهم؟ نادرا ما يتم استخدامها نسبيا. تضمين في أي مشروع؟ ولن يدفع زبون كراسنويارسك ثمن هذا "الهراء". ومع ذلك ، ماذا لو كانت مفيدة لشخص آخر غير المؤلف. وقرر وضعها ، مثل قراءة الكتب ، في خزانة عامة لأولئك الذين يرغبون.
شخص ما يريد استخدامها في عملهم. وشخص مهتم بخلاف تجربته مع كتالوجات النظام.
ولكن لكي لا نحول المنشور إلى تعداد ممل ، من غير المعروف سبب إنشاء الوظائف ، قررت أن أتحدث عن تلك التي يمكن توحيدها بهدف مشترك. لذلك ، يتم تحديد الدالات المستخدمة لعرض قائمة موسعة بخصائص جدول قاعدة البيانات العشوائية.
يتم إرجاع القائمة الموسعة لخصائص جدول قاعدة البيانات بواسطة الدالة
admtf_Table_ComplexFeatures ، والتي ستسمى دالة الرأس في هذه المقالة. وبالتالي ، ستقتصر المقالة على النظر في الوظائف التي يتم استدعاؤها في عملية تنفيذ وظيفة الرأس.
يقدم النصف الأول من المقالة تعليقات على تنفيذ الوظائف. والثاني هو رمز المصدر للوظائف. بالنسبة للقراء المهتمين فقط بالنصوص المصدر ، نقترح المتابعة الفورية
للملحق .
انظر أيضًا
وظائف لتوثيق قواعد بيانات PostgreSQL. الجزء الثاني ؛
وظائف لتوثيق قواعد بيانات PostgreSQL. الجزء الثالث .
وظائف لتوثيق قواعد بيانات PostgreSQL. النهاية (الجزء الرابع) .
ما الميزات المتقدمة التي نتحدث عنها؟
للحصول على فكرة عن المقصود بالخصائص الموسعة لجدول قاعدة البيانات ، نبدأ بالنظر في قائمة الخصائص التالية. تحتوي القائمة على خصائص جدول قاعدة بيانات الشارع التي تم إرجاعها بواسطة
admtf_Table_ComplexFeatures ( "public" ، "street" ) .
يحتوي الجدول أدناه على قائمة مختصرة بميزات جدول الشارع. ترد مجموعة كاملة من خصائص هذا الجدول في المواد التكميلية للملحق 2.
الجدول 1. الميزات المتقدمة لجدول الشارع.

نسخة النص من الجدول في الشكلالفئة | لا. | العنوان | تعليق | اكتب | النوع الأساسي | ؟؟؟ ليست فارغة |
---|
tbl | 0 | الشارع | قائمة الشوارع في المستوطنات | | | |
att | 1 | wcrccode | كود البلد | wcrccode | سمالنت | ر |
att | 2 | محلية | هوية المجتمع | محلية | عدد صحيح | ر |
att | 3 | streetid | شارع الهوية بالقرية | streetid | سمالنت | ر |
att | 4 | streettypeacrm | اختصار الشارع | streettypeacrm | شخصية (8) | و |
att | 5 | اسم الشارع | اسم الشارع | streettypeacrm | فاركار (150) | ر |
ص | 0 | xpkstreet | مفتاح أساسي لشارع الشارع | | | |
pkatt | 1 | wcrccode | كود البلد | wcrccode | سمالنت | ر |
fk01 | 1 | fk_street_locality | جدول مفتاح خارجي | | | |
fk02 | 2 | fk_street_streettype | جدول مفتاح خارجي | | | |
idx01 | 1 | xie1street | فهرس حسب نوع واسم شارع المستوطنة | | | |
idx02 | 2 | xie2street | الرمز البريدي | | | |
idx03 | 3 | xie3street | فهرس أسماء الشوارع لجميع المستوطنات | | | |
idx04 | 4 | xpkstreet | الفهرس الفريد (المفتاح الأساسي) لجدول الشارع | | | |
تعداد العداء لهذه المجموعة من الحروف والأرقام ، يمكنك أن ترى أننا نتحدث عن الخصائص المعتادة لجدول قاعدة البيانات:
- أسماء الجداول ؛
- قائمة سمات الجدول وأنواعها ؛
- المفتاح الأساسي وقائمة المفاتيح الخارجية للجدول ، مع سمات الجدول التي يتكون منها ؛
- قائمة فهارس الجدول.
يتم ضمان تفرد كل إدخال من قائمة الخصائص من خلال قيم حقول "الفئة" والرقم التسلسلي ("رقم") للسمة.
الجدول 2. فئات خصائص الجدول.
نسخة النص من الجدول في الشكلاختصار | التعيين |
---|
السل | خصائص الجدول |
att | خصائص سمة الجدول |
ما يلي | خصائص التسلسل |
ص | الميزات الرئيسية الأساسية |
pkAtt | خصائص السمة الرئيسية الأولية |
fk99 | الميزات الرئيسية الأجنبية |
fk99att | خصائص السمة الرئيسية الخارجية |
fk99rtbl | خصائص الجدول المشار إليه بواسطة المفتاح الخارجي |
fk99ratt | خصائص السمة للجدول المشار إليه بواسطة المفتاح الخارجي |
Idx99 | خصائص الفهرس |
Idx99att | خصائص سمة الفهرس |
Inhtbl99 | خصائص الجدول المولد |
قيمة الفئة ضرورية من أجل التمييز بين مجموعات الخصائص المختلفة عن بعضها البعض. رقم مسلسل ، من أجل تمييز الخصائص داخل المجموعة.
يمكن الإعلان عن العديد من المفاتيح الخارجية (FOREIGN KEY) والفهارس في جدول قاعدة البيانات. لذلك ، تحتوي قيمة الفئة لهذه الخصائص ونسلها على رقم تسلسلي. على سبيل المثال ، يشير الإدخال بالمفتاح "الفئة" = idx02att و "لا" = 1 إلى السمة الأولى للفهرس الثاني.
في قائمة الفئات أعلاه ، يشار إلى موقع الرقم التسلسلي باسم "99".
الملاحظة 1

كود المصدر للعامل في الشكلSELECT * FROM admtf_Table_ComplexFeatures('pg_catalog','pg_class');
تقدم المقالة أمثلة على خصائص الجداول ، والتي تم وصفها بإيجاز في مخطط إضافي تم إنشاؤه خصيصًا لإثبات قدرات الوظائف. لكن القارئ ، بعد أن أنشأ هذه الوظيفة أو تلك في قاعدة بياناته ، يمكنه استخدام أسماء مخططاته وجداوله كمعلمات. علاوة على ذلك ، على سبيل المثال ، يمكن استخدام دليل pg_class كمعلمة ، على الرغم من إصدار عدد محدود من الخصائص في هذه الحالة.
نهاية الملاحظة.
هيكل وظيفة الرأس
التين. 1. الوظائف التي تسبب وظيفة الرأس.الجدول 3. تعيين الوظائف.
نسخة النص من الجدول في الشكللا. | العنوان | التعيين |
---|
1 | admtf_Table_Features | تُرجع الدالة قائمة بخصائص جدول قاعدة البيانات |
2 | admtf_Table_Attributes | تقوم الدالة بإرجاع قائمة سمات جدول قاعدة البيانات وخصائصها. |
3 | admtf_Table_Constraintes | تقوم الدالة بإرجاع قائمة قيود جدول قاعدة البيانات وخصائصها. |
4 | admtf_Table_Indexes | تقوم الدالة بإرجاع قائمة بفهارس جدول قاعدة البيانات وخصائصها. |
5 | admtf_Table_Interitance أطفال | تقوم الدالة بإرجاع قائمة الجداول التي تم إنشاؤها بواسطة (IHERITS) من جدول قاعدة البيانات المصدر. |
6 | admtf_Table_Sequences | تعرض الدالة قائمة بالتسلسلات (SEQUENCE) التي يعتمد عليها الجدول. |
7 | admtf_PrimaryKey_ComplexFeatures | تقوم الدالة بإرجاع قائمة كاملة (موسعة) بخصائص المفتاح الأساسي (مفتاح أساسي) لجدول قاعدة البيانات. |
8 | admtf_ForeignKey_ComplexFeatures | تقوم الدالة بإرجاع قائمة كاملة (موسعة) بخصائص المفتاح الخارجي (مفتاح FOREIGN) لجدول قاعدة البيانات. |
9 | admtf_Index_ComplexFeatures | تقوم الدالة بإرجاع قائمة كاملة (موسعة) بخصائص فهرس جدول قاعدة البيانات. |
10 | admtf_Table_ComplexFeatures | تُرجع الدالة قائمة كاملة (موسعة) بخصائص جدول قاعدة البيانات. |
الملاحظة 2.
سيتم ترتيب أوصاف الوظائف بالترتيب الموضح أعلاه. والسبب هو أنه يجب تقسيم المقالة إلى عدة أجزاء. ويمكن استخدام الوظائف المرتبة بهذا الترتيب بغض النظر عن حقيقة أن بعضها سيتم وصفه فقط في الأجزاء التالية من المنشور.
نهاية الملاحظة.
قائمة وظائف Admtf_Table_Features لخصائص جدول قاعدة البيانات
تعرض الدالة admtf_Table_Features قائمة بخصائص جدول قاعدة البيانات نفسها. يمكن عرض كود المصدر وتنزيله هنا.
كمعلمات ، تأخذ الدالة اسم الجدول المصدر (a_TableName ) واسم المخطط الذي يتم إنشاء الجدول داخله ( a_SchemaName ).
تستخرج الوظيفة البيانات الرئيسية من إدخال كتالوج pg_class ، الذي يحتوي ، بالإضافة إلى إدخالات الجدول ، أيضًا على السجلات حول التسلسلات والمشاهدات والعروض المادية والأنواع المركبة. لذلك ، لتحديد الجداول ، يتم استخدام الشرط relkind = 'r' .
SELECT tbl.relname,dsc.description,tbl.relnatts::INTEGER,tbl.relchecks::INTEGER, tbl.relhaspkey,tbl.relhasindex,tbl.relhassubclass,tbl.reltuples::INTEGER FROM pg_class tbl INNER JOIN pg_namespace nspc ON tbl.relnamespace = nspc.oid LEFT OUTER JOIN pg_description dsc ON tbl.oid=dsc.objoid AND dsc.objsubid=0 WHERE LOWER( nspc.nspname)=LOWER(a_SchemaName) AND tbl.relkind='r' AND LOWER(tbl.relname) =LOWER(a_TableName);
بالإضافة إلى ذلك ، تصل الوظيفة إلى بيانات الدليل pg_namespace و pg_description . يحتوي الأول على أسماء مخططات قاعدة البيانات ، والثاني يحتوي على تعليقات على جميع كائنات قاعدة البيانات.
من المهم الانتباه إلى الحالة objsubid = 0 . وهي تحدد التعليق على الجدول ، حيث أن قيمة الحقل الكامن هي نفسها لكل من الجدول وسماته. يتم تضمين التعليق على سمة الجدول في الإدخال الذي يطابق objsubid عدد هذه السمة.
الجدول 4. نتيجة تنفيذ الوظيفة admtf_Table_Features ("public"، "Street").العنوان | تعليق | عدد السمات | عدد قيود التحقق | ؟؟؟ هل هناك مفتاح أساسي | ؟؟؟ يتم الإعلان عن الفهارس | ؟؟؟ هل هناك أحفاد | عدد الإدخالات في الجدول |
---|
الشارع | قائمة الشوارع في المستوطنات | 22 | 0 | ر | ر | و | 20150 |
الملاحظة 3
انتبه إلى عدد سمات جدول الشارع. يختلف بشكل كبير عن عدد السمات المحددة في المخطط المساعد.
الجدول 5. السمات الإضافية لجدول الشارع.
اسم | atttypid | عناية | ملاحظة |
---|
cmin | التاسع والعشرون | -4 | سمة النظام |
xmin | 28 | -3 | سمة النظام |
ctid | 27 | -1 | سمة النظام |
wcrccode | 795369 | 1 | سمة صالحة |
محلية | 795352 | 2 | سمة صالحة |
streetid | 795364 | 3 | سمة صالحة |
streettypeacrm | 1919168 | 4 | سمة صالحة |
اسم الشارع | 1043 | 5 | سمة صالحة |
........ pg.dropped.6 ........ | 0 | 6 | السمة البعيدة |
........ pg.dropped.7 ........ | 0 | 7 | السمة البعيدة |
والحقيقة هي أن PostgreSQL ، بالإضافة إلى السمات الرئيسية ، تأخذ في الاعتبار أيضًا العديد من سمات النظام ، وحتى السمات المحذوفة.
ملاحظة ختامية
دالة admtf_Table_Attributes قائمة سمات جدول قاعدة البيانات وخصائصها
تعرض الدالة admtf_Table_Attributes قائمة سمات جدول قاعدة البيانات. يمكن عرض كود المصدر وتنزيله هنا.
كمعلمات ، تأخذ الدالة اسم الجدول المصدر ( a_TableName ) واسم المخطط الذي يتم إنشاء الجدول داخله ( a_SchemaName ).
تستخرج الدالة البيانات الرئيسية من إدخالات الدليل pg_attribute و pg_type . يحتوي الأول على سجلات تحتوي على بيانات حول سمات الجداول والمشاهدات وطرق العرض الملموسة والأنواع المركبة وحتى الوظائف. والثاني هو حول خصائص أنواع السمات.
ربما يلزم بعض التوضيح بالطريقة التي يتم بها تعريف المستخدم وأنواع القاعدة في الوظيفة.
يتم تعريف سمة الجدول بنوع مخصص إذا كان حقل نوع النوع أكبر من 0 في إدخال الدليل pg_type المقابل. وإلا ، تكون السمة من النوع الأساسي. لذلك ، يتم تضمين الدليل pg_type مرتين في جملة FROM. في إدخال الدليل الأول ، يتم تحديد وجود نوع المستخدم ، إذا لم يتم تعريفه ( typbasetype = 0 ) ، ثم يتم إنشاء قيمة نوع أساسي من هذا الإدخال. خلاف ذلك ، يتم تحديد نوع الأساس من السجل الذي btyp.OID = typ.typbasetype.
يتم مباشرة تشكيل الخط مع النوع الأساسي باستخدام وظيفة كتالوج النظام FORMAT_TYPE (type_oid ، typemod) . المعلمة الأولى منها هي سجلات OID من النوع الأساسي. المعلمة الثانية هي قيمة المعدل للأنواع التي تحتوي على حجم. على سبيل المثال ، VARCHAR (100) أو NUMERIC (4،2) ، DECIMAL (4،2). يتم أخذ قيمة معلمة typemod من typ.typtypmod إذا كانت السمة من نوع المستخدم ، وإلا من attr.atttypmod ، أي مباشرة من سجل السمات.

كود المصدر للعامل في الشكل SELECT attr.attnum, attr.attname::VARCHAR(100), CASE WHEN COALESCE(typ.typbasetype,0)>0 THEN typ.typname::VARCHAR(100) ELSE '' END, FORMAT_TYPE(COALESCE(NULLIF(typ.typbasetype,0),typ.oid), COALESCE(NULLIF(typ.typtypmod,-1),attr.atttypmod))::VARCHAR(256), attr.attnotnull, dsc.description FROM pg_attribute attr INNER JOIN pg_class tbl ON tbl.oid = attr.attrelid INNER JOIN pg_namespace nspc ON tbl.relnamespace = nspc.oid INNER JOIN pg_type typ ON attr.atttypid=typ.oid LEFT OUTER JOIN pg_description dsc ON dsc.objoid=attr.attrelid AND dsc.objsubid=attr.attnum WHERE LOWER( nspc.nspname)=LOWER(a_SchemaName) AND LOWER(tbl.relname) =LOWER(a_TableName) AND tbl.relkind='r' AND attr.attnum>0 AND attr.atttypID>0 ORDER BY tbl.relname,attr.attnum;
بالإضافة إلى ذلك ، تصل الوظيفة إلى بيانات الدليل pg_class و pg_namespace و pg_description . يتم استخدام الدللين الأول والثاني للبحث عن السمات حسب أسماء المخطط وجدول قاعدة البيانات.
يتم استخدام الدليل الثالث لاسترداد التعليق لسمة الجدول.
يوجد التعليق على سمة الجدول في الإدخال الذي يحتوي فيه dsc.objoid على OID الخاص بجدول المصدر ، و dsc.objsubid هو الرقم التسلسلي للسمة في الجدول ، أي attr.attnum .
لمنع الوظيفة من إرجاع النظام والسمات البعيدة ، تقوم جملة WHERE بتعيين الشرط attr.attnum> 0 AND attr.atttypID> 0 .
الجدول 6. نتيجة الوظيفة admtf_Table_Attributes ('public'، 'Street').لا. | العنوان | نوع مخصص | النوع الأساسي | ؟؟؟ ليست فارغة | تعليق |
---|
1 | wcrccode | wcrccode | سمالنت | ر | كود البلد |
2 | محلية | محلية | عدد صحيح | ر | هوية المجتمع |
3 | streetid | streetid | سمالنت | ر | شارع الهوية بالقرية |
4 | streettypeacrm | streettypeacrm | شخصية (8) | و | اختصار الشارع |
5 | اسم الشارع | | فاركار (150) | ر | اسم شارع المستوطنة |
إصدار دالة باستخدام الاسم المستعار regclass لنوع oid
معرفات كائن PostgreSQL (OIDs) هي من نفس نوع OID ، والتي يتم تنفيذها حاليًا كعدد صحيح بدون إشارة من أربعة بايت. ولكن نظرًا لوجود أسماء مستعارة من هذا النوع ، يمكن تمثيل العدد الصحيح كاسم كائن. والعكس صحيح - تحويل اسم الكائن إلى عدد صحيح من نوع OID.
كمثال ، ألق نظرة على عبارة SELECT التالية. يسترجع بشكل غير عادي أسماء جدول السمات وأسماء أنواعه - بدلاً من الوصول إلى حقول الدليل المقابلة بأسماء هذه الخصائص ، يتم استخدامها:
- attrelid :: regclass (attrelid :: regclass: NAME) ،
- atttypid :: regtype (atttypid :: regtype: NAME)
- typbasetype :: regtype (typbasetype :: regtype: NAME) .
SELECT attr.attname,attr.attrelid::regclass, attr.atttypid::regtype, typ.typbasetype::regtype,attr.attrelid::regclass::name, attr.atttypid::regtype::name,typ.typbasetype::regtype::name FROM pg_attribute attr INNER JOIN pg_type typ ON attr.atttypid=typ.oid WHERE attr.attrelid=('public'||'.'||'Street')::regclass AND attr.attnum>0 AND attr.atttypID>0 ORDER BY attr.attnum;
التالي هو نتيجة تنفيذ هذا الاستعلام.

في قائمة قيم الإخراج لعامل SELECT قبل التحويل باستخدام الأسماء المستعارة من نوع OID ، تكون جميع القيم باستثناء اسم السمة رقمية ، ولكن نتيجة لذلك ، يتم عرض أسماء الجداول وأنواع السمات. يمكن النظر في أنواع قيم الإخراج في السطر الثاني من رأس الجدول.
بالإضافة إلى ذلك ، في جملة WHERE من العبارة ، هناك الشرط attr.attrelid = ('public' || '.' || 'Street') :: regclass ، على الجانب الأيسر منها قيمة رقمية ، وعلى اليمين سلسلة يتم تحويلها إلى رقمية باستخدام الاسم المستعار regclass .

كود المصدر للعامل في الشكل SELECT attr.attnum, attr.attname::VARCHAR(100), CASE WHEN COALESCE(typ.typbasetype,0)>0 THEN typ.typname::VARCHAR(100) ELSE '' END, FORMAT_TYPE(COALESCE(NULLIF(typ.typbasetype,0),typ.oid), COALESCE(NULLIF(typ.typtypmod,-1),attr.atttypmod))::VARCHAR(256), attr.attnotnull, dsc.description FROM pg_attribute attr INNER JOIN pg_type typ ON attr.atttypid=typ.oid LEFT OUTER JOIN pg_description dsc ON dsc.objoid=attr.attrelid AND dsc.objsubid=attr.attnum WHERE attr.attrelid=( a_SchemaName ||'.'|| a_TableName)::regclass AND attr.attnum>0 AND attr.atttypID>0 ORDER BY attr.attnum;
باستخدام الاسم المستعار regclass من العبارة الرئيسية ، يمكنك إزالة الاتصال بدليلين. لكن مثل هذا التحسين لم يكن له أي تأثير تقريبًا على أداء الوظيفة - في كلا الإصدارين ، يتم تنفيذ الوظيفة في 11 مللي ثانية. ربما يرجع ذلك إلى حقيقة أن جدول الاختبار يحتوي على سمات قليلة.
مالحظة 4يتجلى خلل خطير في الحالة في النموذج attr.attrelid = (a_SchemaName || '.' || a_TableName) :: regclass عندما يكون هناك مخطط و / أو جدول باسم غير معتاد في قاعدة البيانات. على سبيل المثال ، "مخطط بلدي" و / أو "جدول بلدي" . يجب إرسال هذه القيم محاطة بعلامات اقتباس مزدوجة أو استخدام الدالة QUOTE_IDENT ، وإلا ستفشل الوظيفة مع وجود خطأ في النظام.

كود المصدر للعامل في الشكل SELECT attr.attname,attr.attrelid::regclass, attr.atttypid::regtype,typ.typbasetype::regtype, attr.attrelid::regclass::name, attr.atttypid::regtype::name,typ.typbasetype::regtype::name FROM pg_attribute attr INNER JOIN pg_type typ ON attr.atttypid=typ.oid WHERE attr.attrelid=(' '||'.'||' ')::regclass AND attr.attnum>0 AND attr.atttypID>0 ORDER BY attr.attnum; SELECT attr.attname,attr.attrelid::regclass, attr.atttypid::regtype,typ.typbasetype::regtype, attr.attrelid::regclass::name, attr.atttypid::regtype::name,typ.typbasetype::regtype::name FROM pg_attribute attr INNER JOIN pg_type typ ON attr.atttypid=typ.oid WHERE attr.attrelid=('" "'||'.'||'" "')::regclass AND attr.attnum>0 AND attr.atttypID>0 ORDER BY attr.attnum;
لذلك ، أفضل استخدام الشروط في النموذج
LOWER (nspc.nspname) = LOWER (a_SchemaName) و LOWER (tbl.relname) = LOWER (a_TableName) ، مما لا يؤدي إلى أخطاء في النظام.
ملاحظة ختاميةالملحق 1. النصوص
إنشاء وظيفة admtf_Table_Features
يمكن العثور على التعليقات على رمز مصدر الوظيفة هنا.رمز مصدر الوظيفة BEGIN TRANSACTION; DROP FUNCTION IF EXISTS admtf_Table_Features (a_SchemaName NAME,a_TableName NAME); CREATE OR REPLACE FUNCTION admtf_Table_Features (a_SchemaName NAME default 'public', a_TableName NAME default NULL ) RETURNS TABLE (rs_TableName NAME,rs_TableDescription TEXT,rs_NumberOfAttribute INTEGER,rs_NumberOfChecks INTEGER,rs_hasPKey BOOLEAN,rs_hasIndex BOOLEAN,rs_hasSubClass BOOLEAN,rs_NumberOfRow INTEGER) AS $BODY$ DECLARE c_TableKind CONSTANT CHAR:='r'; v_TableOID OID; v_TableName NAME; v_TableDescription TEXT; v_TableNumberOfRowCalc INTEGER;
إنشاء وظيفة admtf_Table_Attributes
يمكن العثور على التعليقات على رمز مصدر الوظيفة هنا.رمز مصدر الوظيفة BEGIN TRANSACTION; DROP FUNCTION IF EXISTS admtf_Table_Attributes (a_SchemaName NAME,a_TableName NAME); CREATE OR REPLACE FUNCTION admtf_Table_Attributes (a_SchemaName NAME default 'public', a_TableName NAME default NULL ) RETURNS TABLE (r_AttributeNumber SMALLINT,r_AttributeName NAME,r_UserTypeName NAME,r_TypeName NAME,r_isNotNULL BOOLEAN, r_Description Text) AS $BODY$ DECLARE c_TableKind CONSTANT CHAR:='r'; v_Scale INTEGER;
إنشاء دالة admtf_Table_Attributes باستخدام الاسم المستعار Regclass
يمكن العثور على التعليقات على رمز مصدر الوظيفة هنا.رمز مصدر الوظيفة BEGIN TRANSACTION; DROP FUNCTION IF EXISTS admtf_Table_Attributes (a_SchemaName NAME,a_TableName NAME); CREATE OR REPLACE FUNCTION admtf_Table_Attributes (a_SchemaName NAME default 'public', a_TableName NAME default NULL ) RETURNS TABLE (r_AttributeNumber SMALLINT,r_AttributeName NAME,r_UserTypeName NAME,r_TypeName NAME,r_isNotNULL BOOLEAN, r_Description Text) AS $BODY$ DECLARE c_TableKind CONSTANT CHAR:='r'; v_Scale INTEGER;
الملحق 2. مواد إضافية
مخطط قاعدة البيانات المساعدة

- COUNTRY - مصنف دول العالم - OKSM (تصنيف روسيا الشامل لبلدان العالم) ؛
- HOUSEADDR - قائمة بأرقام المنازل في شوارع المستوطنات.
- LCLTYTYPE - دليل أنواع المستوطنات ؛
- الموقع - قائمة المستوطنات ؛
- الشارع - قائمة الشوارع في المستوطنات ؛
- STREETTYPE - دليل أنواع الشوارع ؛
- الإقليم - قائمة الأقاليم (الجمهوريات والأقاليم والأقاليم والمناطق وما إلى ذلك) ؛
- TERRITORYTYPE - دليل أنواع الأقاليم.
الميزات المتقدمة لجدول الشارع
يمكن الاطلاع على التعليقات حول مفهوم الميزات المتقدمة للجدول هنا.الجدول 1. الميزات المتقدمة لجدول الشارع.
نسخة النص من الجدول في الشكلالفئة | لا. | العنوان | تعليق | اكتب | النوع الأساسي | ؟؟؟ ليست فارغة |
---|
tbl | 0 | الشارع | قائمة الشوارع في المستوطنات | | | |
att | 1 | wcrccode | كود البلد | wcrccode | سمالنت | ر |
att | 2 | محلية | هوية المجتمع | محلية | عدد صحيح | ر |
att | 3 | streetid | شارع الهوية بالقرية | streetid | سمالنت | ر |
att | 4 | streettypeacrm | اختصار الشارع | streettypeacrm | شخصية (8) | و |
att | 5 | اسم الشارع | اسم الشارع | streettypeacrm | فاركار (150) | ر |
ص | 0 | xpkstreet | street | | | |
pkatt | 1 | wcrccode | | wcrccode | smallint | t |
pkatt | 2 | localityid | | localityid | integer | t |
pkatt | 3 | streetid | | streetid | smallint | t |
fk01 | 1 | fk_street_locality | | | | |
fk01att | 1 | wcrccode | | wcrccode | smallint | t |
fk01att | 2 | localityid | | localityid | integer | t |
fk01rtbl | 0 | locality | | | | |
fk01ratt | 1 | wcrccode | | wcrccode | smallint | t |
fk01ratt | 2 | localityid | | localityid | integer | t |
fk02 | 2 | fk_street_streettype | | | | |
fk02att | 1 | streettypeacrm | | streettypeacrm | character(8) | f |
fk02rtbl | 0 | streettype | | | | |
fk02ratt | 1 | streettypeacrm | | streettypeacrm | character(8) | t |
idx01 | 1 | xie1street | | | | |
idx01att | 1 | wcrccode | | wcrccode | smallint | t |
idx01att | 2 | localityid | | localityid | integer | t |
idx01att | 3 | streettypeacrm | | streettypeacrm | character(8) | f |
idx01att | 4 | streetname | | | varchar(150) | t |
idx02 | 2 | xie2street | | | | |
idx02att | 1 | wcrccode | | wcrccode | smallin | t |
idx02att | 2 | localityid | | localityid | integer | t |
idx02att | 3 | streetname | | | varchar(150) | t |
idx03 | 3 | xie3street | | | | |
idx03att | 1 | streetname | | | varchar(150) | t |
idx04 | 4 | xpkstreet | ( ) street | | | |
idx04att | 1 | wcrccode | | wcrccode | smallint | t |
idx04att | 2 | localityid | | localityid | integer | t |
idx04att | 3 | streetid | | streetid | smallint | t |
انظر أيضًا
وظائف لتوثيق قواعد بيانات PostgreSQL. الجزء الثاني ؛وظائف لتوثيق قواعد بيانات PostgreSQL. الجزء الثالث .وظائف لتوثيق قواعد بيانات PostgreSQL. النهاية (الجزء الرابع) .