ايجاد يك فرهنگ دادهاي (كاتالوگ سيستم)
فرهنگ دادهاي مهمترين فرم مستندسازي طراح پايگاه دادهاي است. اين فرهنگ وظايف زير را دارا ميباشد:
- شرح هدف پايگاه دادهها و كسي كه از آن استفاده ميكند.
- توضيح مشخصات پايگاه دادهاي: روي چه دستگاهي ايجاد شده است، اندازه پيش فرض پايگاه دادهاي يا اندازه فايل رخداد (كه براي ذخيرهسازي اطلاعات عمليات پايگاه دادهاي در بعضي از RDBMS استفاده ميشود).
- اصل برنامههاي SQL براي نصب كردن و يا برداشتن نسخه SQL موردنظر: شامل مستندات استفاده شده براي ابزار واردات/ صادرات (import / export) است.
- تهيه شرح جزئيات هر جدول در داخل پايگاه دادهها و توضيح هدف هر جدول.
- توضيح ساختار داخلي هر جدول: شامل تمام فيلدها و نوع دادههاي آنها و توضيحات تمام شاخصها و تمام ديدها ميباشد.
- اصل برنامههاي SQ L براي تمام روالهاي ذخيره شده و تريگرها.
توضيح محدوديتهاي پايگاه دادهها شامل مقادير منحصر بفرد يا مقادير غير هيچ. مستندات همچنين بايد توضيح دهد كه آيا اين محدوديتهاي RDBMS اعمال ميشوند و يا اينكه برنامه نويس پايگاه دادهاي بايد آنها را در داخل برنامه خود كنترل كند.
بسياري از ابزار مهندسي نرمافزار به كمك كامپيوتر (CASE)، نيز به طراح پايگاه دادهاي در ايجاد اين فرهنگ دادهها كمك ميكنند. بطور مثــال اكسس داراي يك پيش بسته نرمافزاري به همراه ابزار شرح پايگاه دادهاي است كه هر شيء موجود در پايگاه دادهاي را به تفصيل شرح ميدهد.
ايجاد فيلدهاي كليد
پس از مستندسازي طراحي پايگاه دادهها، مهمترين هدف طراحي اين است كه ساختار جدول را طوري ايجاد كنيم كه هر جدول داراي يك كليد اصلي و يك كليد خارجي باشد. كليد اصلي يا اوليه بايد دو شرط زير را دربرداشته باشد:
هر ركورد در داخل جدول يكتا باشد (هيچ ركوردي در داخل جدول ستونهايش معادل ستونهاي ركورد ديگر در جدول نباشد).
براي آنكه ركوردي يكتا باشد، مقدار كليد نبايد در ركوردهاي ديگر جدول تكرار شد ه باشد. شرط دوم را درنظر بگيريد، ستوني كه داراي داده يكتا در سرتاسر جدول باشد به عنوان فيلد كليد اصلي شناخته ميشود. كليد اصلي ميتواند شامل يك يا تركيبي از چند ستون باشد. يك فيلد كليد خارجي، فيلدي است كه يك جدول را به جدولي ديگر از طريق كليد اصلي يا كليد خارجي متصل ميكند.
جمله CREATE TABLE
قبل از آنكه جداول را با دادههاي واقعي پر كنيم، بايد نحوه ايجاد يك جدول را بدانيم. روند ايجاد يك جدول خيلي طولانيتر از ايجاد يك جمله CREATE TABLE ميباشد. جداول به سطرها و ستونها تقسيم ميشوند. هر سطر يك بخش از دادهها را نمايش ميدهد و هر ستون را ميتوان نماينده يك جز از آن بخش از دادهها درنظر گرفت.
معمولاً دادهها قالبها (formها)ي متنوعي دارند. به عنوان مثــال ميتوانند يك عدد صحيح، يك عدد حقيقي، يك رشته، يك عبارت تاريخ/ زمان (مانند 2002 – JAN – 25 03:22:50) و يا حتي در قالب باينري باشند.
وقتي كه ما يك جدول را تعريف ميكنيم، احتياج به تعيين نوع داده مربوط به هر سطر داريم. پايگاه دادهايهاي مختلف اجازه استفاده از نوع دادههاي مختلف را ميدهند. بنابراين بهتر است قبل از استفاده از اين جمله مستندات مربوطه را كنترل كنيم.
توجه ـ ميتوانيم نامهاي تكراري براي جداول در شماها يا كاربران مختلف داشته باشيم ولي نام جداول در يك شما بايد منحصر بفرد باشند. نام يك فيلد نيز ميتواند در داخل پايگاه دادهها تكراري باشد ولي محدوديتي كه در اينجا وجود دارد آن است كه نام فيلد در داخل يك جدول يكتا است.
نحوه نگارش پايهاي براي جمله CREATE TABLE:
کد:
CREATE TABLE table - name
(
column – name l datatype,
column – name 2 datatype,
……..
)
مثــال/
کد:
Create table bills (
Name char (30) ,
Amount NUMBER)
اين جمله يك جدول به نام Bills ايجاد كرده و در داخل يك جدول فيلدهاي Amount, Name و Account – ID قرار ميگيرند. نوع فيلد Name كاراكتري است و تا 30 رشته كاراكتري را ميپذيرد. فيلدهاي Account – ID , Amount نيز فقط مقادير عددي قبول ميكنند.
جمله ALTER TABLE
گاهي اوقات در طراحي پايگاه دادهها همه چيز را درنظر نميگيريم. همچنين نيازهاي كاربردي و پايگاه دادهاي همواره در حال تغيير است. جمله ALTER TABLE اداره كننده پايگاه دادهها يا طراح را قادر ميسازد تا ساختار يك جدول را پس از ايجاد، تغيير دهد.
جمله ALTER TABLE يك مشخصه قوي در SQL است كه ما را قادر ميسازد تا بتوانيم ساختار يك جدول را پس از آنكه ايجاد شد، تغيير دهيم. بدون دستور ALTER TABLE هرگاه بخواهيم ساختار آن را تغيير دهيم، مجبور به حذف جدول و دوباره ساختن آن ميباشيم. در اين بخش به دو مشخصه اصلي دستور ALTER TABLE پرداخته ميشود:
- 1ـ اضافه كردن ستوني به يك جدول موجود
- 2ـ تغيير يك ستون كه هم اكنون وجود دارد
نحوه نگارش ALTER TABLE به شكل زير است:
کد:
ALTER TABLE table – name
ADD column – name data – type | MODIFY column – name data – type
توجه ـ ميتوانيم طول ستون را افزايش يا كاهش دهيم ولي اگر اندازه يكي از مقادير اين ستون بزرگتر از مقداري باشد كه ميخواهيم براي اين ستون معين كنيم، نميتوانيم طول يك ستون را كاهش دهيم.
در هنگام استفاده از دستور ALTER محدوديتهاي زير وجود دارند:
- ـ ما از اين جمله نميتوانيم جهت اضافه نمودن يا حذف فيلدهايي به پايگاه دادهاي استفاده كنيم.
- ـ اين دستور ميتواند ستوني را از NOT NULL به NULL تغيير دهيد.
- ـ مشخصات يك ستون ميتواند از NULL بهNOT NULL تغيير كند. فقط اگر ستون مربوطه شامل مقادير NULL نباشد.
براي تغيير يك ستون NOT NULL به NULL از نحوه نگارش زير استفاده ميشود:
کد:
ALTER TABLE table – name MODIFY (column – name data – type NULL)
براي تغيير ستوني از NULL به NOT NULL، بايد مراحل زير را انجام داد:
- 1ـ تعيين اينكه آيا ستوني داراي مقادير NULL است.
- 2ـ مقادير NULL موجود را با حذف ركورد يا وارد كردن مقدار مناسب در آن از بين ببريم.
- 3ـ دستور ALTER TABLE را اجرا كنيم.
توجه ـ بعضي از سيستمهاي مديريت پايگاه دادهها امكان استفاده از شبه جمله MODIFY را ميدهند. بعضي ديگر شبه جملات ديگري را به جمله ALTER TABLE اضافه نمودهاند. در Oracle 8، ما ميتوانيم حتي پارامترهاي ذخيرهسازي جدول را تغيير دهيم. بنابراين در هنگام استفاده از اين جمله بايد مستندات مربوطه را كنترل كنيم.
جمله DROP TABLE
SQL داراي دستوري براي حذف كامل جدول از يك پايگاه دادهاي است. دستور DROP TABLE يك جدول را به همراه تمام محدوديتها و شاخصهايش حذف ميكند. وقتي اين دستور صادر شد، راه بازگشتي وجود ندارد. متداولترين نحوه استفاده از جمله DROP TABLE هنگامي است كه ما ميخواهيم يك جدول موقتي ايجاد شده را حذف كنيم. نحوه نگارش جمله DROP TABLE به شكل زير است:
کد:
DROP TABLE table – name
جمله DROP DATABASE
بعضي سيستمهاي مديريت پايگاه دادهاي همچنين از جمله DROP DATABASE استفاده ميكنند كه همان كاربرد جمله DROP TABLE را دارد. نحوه نگارش اين جمله به شكل زير است:
کد:
DROP DATABASE database – name
ايجاد شاخصها بر روي جداول جهت بهبود اجرا
شاخصها امكان دسترسي ما را به دادهها از مسير كوتاهتر فراهم ميسازند. يك شاخص راهي است جهت ارائه دادهها به شكلي متفاوت از آنچه آنها روي ديسك ظاهر ميشوند. نوع خاصي از شاخصها مكان فيزيكي ركورد را در داخل يك جدول دوباره مرتب ميكند. شاخصها ميتوانند روي يك ستون جدول يا تركيبي از ستونها ساخته شوند. وقتي يك شاخص به كار گرفته ميشود، دادهها به شكل مرتب شده ارائه ميشوند. اين كار را ميتوان با استفاده از جمله CREATE INDEX انجام داد. معمولاً ميتوانيم با استفاده از شاخص بندي روي فيلدها، در ذخيرهها و بازيابي اطلاعات سرعت بالايي داشته باشيم.
استفاده از شاخصها
علاوه بر ديدها، راه ديگري براي نمايش دادهها به فرمتي كه دادهها به شكل فيزيكي روي ديسك ذخيره شوند، استفاده از يك شاخص است. اضافه بر آن، شاخصها همچنين ميتوانند دادههاي ذخيره شده را روي ديسك (بعضي اوقات ديدها نميتوانند اين كار را انجام دهند) مرتب كنند. شاخصها در يك پايگاه دادهاي SQL به سه دليل اصلي زير استفاده ميشوند:
- براي اعمال محدوديتهاي جامعيت ارجاعي توسط استفاده از كلمات كليدي UNIQU يا PRIMARY KEY
- براي سادهسازي عمل مرتب نمودن دادهها بسته به محتويات فيلد يا فيلدهاي شاخص
- براي بهينهسازي سرعت اجراي پرس و جوها
شاخصها چه هستند؟
دادهها ميتوانند با استفاده از دو روش از داخل پايگاه دادهاي استخراج شوند. اولين روش غالباً به نام روش دسترسي ترتيبي ناميده ميشود. در اين روش SQL هر ركورد را براي تطبيق بررسي ميكند. (جستجوي ركوردها به شكل پيدرپي) اين روش جستجو كارا نميباشد ولي تنها راهي است كه SQL ركورد صحيح را پيدا ميكند.
اضافه كردن شاخصها به پايگاه دادهاي اين امكان را به SQL ميدهد تا از روش دسترسي مستقيم استفاده كند. SQL از ساختاري درخت براي ذخيره و بازيابي دادههاي شاخص استفاده ميكند. اشارهگرهايي كه به گروهي از دادهها اشاره ميكنند در راس درخت ذخيره ميشوند. اين گروه گرهها ناميده ميشوند. هر گره به گرههاي ديگر اشاره ميكند. گرههايي كه به گرههاي سمت چپ اشاره ميكنند شامل مقاديري كمتر از گره پدرشان است. گرههايي كه به گرههاي سمت راست اشاره ميكنند مقاديرشان از مقدار گره پدر بيشتر است. اوراكل اين نوع شاخص را يك شاخص B-Tree مينامد.
سيستم پايگاه دادهاي جستجوي خودش را از بالاترين گره شروع ميكند و اشارهگرها را دنبال ميكند تا موفق به پيدا كردن گره موردنظر شود.
توجه ـ نتيجه يك پرس و جو براي يك جدول غير شاخص شده معمولاً به جستجوي كامل جدول اشاره ميكند. جستجوي كامل جدول جرياني است كه توسط سرور پايگاه دادهاي براي جستجوي هر رديف جدول استفاده ميشود تا وقتي تمام رديفهاي جدول تحت شرايط داده شده برگشت داده شدند. در صورتيكه يك شاخص اين امكان را ميدهد تا سرور پايگاه دادهاي به رديف خاصي از دادهها در داخل يك جدول سريعاً اشاره كند.
نحوه نگارش اصلي SQL براي ايجاد شاخص شبيه زير است:
کد:
CREATE INDEX index – name
ON table – name (column – name l, [column – name 2], …)
همانگونه كه بارها ديديم، نحوه نگارش CREATE INDEX ميتواند در سيستمهاي مختلف پايگاه دادهاي فرق داشته باشد. جمله CEATE INDEX يك شاخص را از پايگاه دادهاي برميدارد. مثل هميشه، جمله CREATE INDEX در نسخههاي مختلف تفاوت دارد.
تذكر ـ وقتي جدولي حذف ميشود، تمام شاخصهاي وابسته به آن نيز حذف ميگردند.