নির্বাচিত পোস্ট | লগইন | রেজিস্ট্রেশন করুন | রিফ্রেস

কথামালা

প্রত্যেক প্রাণীকে মৃত্যুর স্বাদ গ্রহণ করতে হবে।

মনিরুল হাসান

জাতিস্মর

মনিরুল হাসান › বিস্তারিত পোস্টঃ

SQL

১৩ ই জানুয়ারি, ২০০৯ ভোর ৪:৫৭

মোট পাতা ৮২০



১-১



1-1 What is SQL



১। SQL বলতে Structured Query Language বোঝায়। এর উচ্চারণ হচ্ছে এস-কিউ-এল এবং একে সিকুয়েল নামেও উচ্চারণ করা যেতে পারে।

২। SQL হচ্ছে কম্পিউটারের একটি ভাষা যেটি একটি ডাটাবেস থেকে সংরক্ষণ করা ডাটা থেকে তথ্য সংগ্রহ করে। SQL - এর মাধ্যমে একটি বিশাল ডাটাবেস থেকে প্রয়োজনীয় তথ্য সংগ্রহ করা হয়।

৩। SQL হচ্ছে একটি মেথড যেটি ব্যবহার করে একটি বিশাল ডাটাবেসের তথ্যসমমূহ সঠিকভাবে সাজানো যায়। SQL এর মাধ্যমে কী ধরনের তথ্য দরকার তা ঠিক করা যায় এবং কম্পিউটার সেই অনুসারে তথ্য বের করে আনে।

৪। একে declarative কম্পিউটার ল্যাংগুয়েজ বলে কারণ এর মাধ্যমে ফলাফলটি দেখতে কীরকম হবে তা ঠিক করে দেয়া যায়।

অন্যান্য ল্যাংগুয়েজের সাথে সিকুয়েলের পার্থক্য হলো অন্যান্য ল্যাংগুয়েজে ঠিক করা হয় কীভাবে ফলাফল বের করে আনা লাগবে এবং সে কারণে সেগুলোকে বলে procedural কম্পিউটার ল্যাংগুয়েজ কিন্তু সিকুয়েল ল্যাংগুয়েজে ঠিক করা হয় কোন ফলাফল বের করে আনা লাগবে এবং সে জন্যে এটি হচ্ছে declarative কম্পিউটার ল্যাংগুয়েজ।



1-2 What is a relational database and why would you use one?



একটি 'রিলেশনাল ডাটাবেস' বলতে বোঝায় কম্পিউটারে ডাটা গুছিয়ে রাখার একটি উপায়। সিকুয়েল ব্যবহার করে কম্পিউটারের অনেকগুলি ডাটা গুছিয়ে রাখার মাধ্যমে দরকারী ডাটা খুব সহজেই পাওয়া যেতে পারে। কম্পিউটারে ডাটা গুছিয়ে রাখার আরেকটি কারণ হচ্ছে এর ফলে একাধিক লোক একই সময়ে একই তথ্য নিয়ে কাজ করতে পারে। ব্যবসাতে একাধিক লোককে একই তথ্য দেখানো খুব গুরুত্বপূর্ণ কাজ। ডাটাবেসে তথ্য গুছিয়ে রাখার তৃতীয় কারণটি হচ্ছে বিভিন্ন দরকারী সময়ে বিভিন্ন ডাটা পরিবর্তন করতে হয়। ডাটাবেসে ডাটা গুছিয়ে রাখার ফলে কখন, কোথায় কোন ডাটা পরিবর্তন করতে হবে তা খুব সহজেই বোঝা যায়।

কম্পিউটার প্রোগ্রামারদের জন্যে রিলেশনাল ডাটাবেস (গুছিয়ে রাখা ডাটাবেস) খুবই দরকারী। রিলেশনাল ডাটাবেসের ধারণা প্রথম করা হয় ১৯৭০ সালে।



বর্তমানে রিলেশনাল ডাটাবেস ব্যবহার করে অনেক উপকার পাওয়া যাচ্ছে। একটি রিলেশনাল ডাটাবেসে সকল ডাটা টেবিলে রাখা হয়। এই টেবিলটি হচ্ছে দ্বিমাত্রিক - কলাম ও রো।



রিলেশনাল ডাটাবেসের শুরু



- রিলেশনাল ডাটাবেস একটি বিশাল ডাটাভান্ডারকে গুছিয়ে রাখার উদ্দেশ্যে প্রথম আরম্ভ হয় ১৯৭০ সালে।

- এর মাধ্যমে একাধিক মানুষ একই সময় একই তথ্য নিয়ে কাজ করতে সক্ষম হয়।

- রিলেশনাল ডাটাবেস তথ্য সবসময় ঠিকঠাক রাখে।

- রিলেশনাল ডাটাবেস ব্যবহার করতে হলে একটি সফটওয়্যার ব্যবহার করতে হয়। এর মানে হচ্ছে একটি সফটওয়্যার ডাটাবেস থেকে প্রয়োজনীয় ডাটা বের করে আনে এবং ব্যবহারকারী সেই ডাটা ব্যবহার করে।

- রিলেশনাল ডাটাবেসের মাধ্যমে সকল নতুন ডাটা পাওয়া যায়।



বর্তমানের পরিবর্তিত ডাটাবেস:



- বর্তমানে বিশাল ডাটাবেসের পাশাপাশি ছোট ডাটাবেসও গুছিয়ে রাখার কাজে ব্যবহৃত হচ্ছে এবং একাধিক লোকের বদলে একজন লোকে সেই

ডাটাবেস ব্যবহার করছে।

- ডাটাবেস বেশ সফলতার পরিচয় দিয়েছে এবং এর মাধ্যমে খুব সহজেই বিভিন্ন অ্যাপ্লিকেশন ব্যবহার করা যাচ্ছে।

- বর্তমানে অনেক লোক সফটওয়্যার ছাড়াই সরাসরি ডাটাবেস ব্যবহার করছে।

- অনেক লোক তাদের ডাটা ডাটাবেসে রাখতে স্বাচ্ছন্দ্য বোধ করছে।



১-৩



SQL ১০০-র চাইতেও বেশি সফটওয়্যারে ব্যবহৃত হচ্ছে। সিকুয়েল হচ্ছে একটি সহজ ল্যাংগুয়েজ। সিকুয়েল হচ্ছে সফল ল্যাংগুয়েজগুলোর একটি। সিকুয়েল ছাড়াও আরো কিছু declarative ল্যাংগুয়েজ রয়েছে কিন্তু সেসব ল্যাংগুয়েজের কিছু সীমাবদ্ধতা আছে। সিকুয়েল হচ্ছে সবচাইতে শক্তিশালী ও সকল সময় ব্যবহারের উপযোগী।



যারা সিকুয়েল জানে না তারাও সিকুয়েল ব্যবহার করে প্রয়োজনীয় ডাটা বের করতে পারে। সিকুয়েল শেখা হচ্ছে একটি মজার বিষয়।



Major SQL Products - Oracle, Microsoft Acess, DB2, Microsoft SQL Server, Informix, SQL Windows, Sybase, SAS sql procedure, FoxPro, dBase, Tandem SQL.



Other SQL Products - MYSQUL, SQLBase, Cold Fusion, SAP, Business Objects, ODBC, Ingres, Ocelot SQL, OsloData, PostgreSQL, Rapid SQL, XDB, SQL/DS, Mini SQL, Empress, Interbase, Progress, Supra, SQL Report Writer, Paradox, Delphi, VAX SQL, Essbase, Beagle SQL, GNU SQL Serverl Just Logic/SQL, PrimeBase, Altera SQL Server, DataScope, PowerBuilder, (and many more).



১-৪



এই বইয়ে কীভাবে সিকুয়েল ব্যবহার করতে হয় তা দেখানো হয়েছে। যারা সিকুয়েল ল্যাংগুয়েজ জানে না তাদের এই বইটি পড়া উচিত। এই বইয়ে সবকিছু ঠিকঠাক মত সাজিয়ে দেয়া হয়েছে। সকল দরকারী বিষয় উদাহরণসহ দেখানো হয়েছে।



পাতা ১০



The Parts of a Table



সিকুয়েল সবসময় টেবিলের ভিতরের ডাটা নিয়ে কাজ করে। একটি টেবিলের বর্ণনা সবসময় গোছানো হওয়া দরকার।



1-5 Data is stored in tables



একটি রিলেশনাল ডাটাবেসে সকল ডাটা টেবিলে সংরক্ষিত থাকে। একটি টেবিল হচ্ছে একটি দ্বিমাত্রিক গঠন যার কলাম ও রো থাকে। কলাম'কে ফিল্ড এবং রো'কে রেকর্ড বলে।



টেবিলে বিভিন্ন সময়ে নানারকমের তথ্য থাকে। টেবিলে বাস স্ক্যাজুয়েল থাকে। টেবিলে স্টক ভ্যালু প্রকাশ করা যায়। রিলেশনাল ডাটাবেসও এই সকল রকম টেবিলের মতই। একটি রিলেশনাল ডাটাবেসে সকল তথ্য একটি টেবিলে রাখা হয়। সকল ডাটাই টেবিলের মাধ্যমে প্রকাশ করা যায়। রিলেশনাল ডাটাবেসে সব সময় শুধু টেবিল নিয়েই কাজ করতে হয়।



সকল ডাটাই টেবিলে প্রকাশ করা সম্ভব। কিছু ডাটা টেবিলে বসানো যায় না তখন সেই ডাটাগুলোকে নিয়ে সামান্য কাজ করতে হয় যেন সেগুলো টেবিল ফরম্যাটে লেখা যায়। ডাটা যতই জটিল হোক না কেন, টেবিলে ডাটা লেখা খুবই সম্ভব।



১-৬



একটি টেবিলের প্রতিটি রো একটি অবজেক্ট, ইভেন্ট বা রিলেশনশীপ প্রদর্শন করে। একটি টেবিলের সকল রো একই ধরনের অবজেক্ট প্রদর্শন করে। যদি একটি হসপিটালে ১০০জন ডাক্তারের তথ্য রাখা লাগে, তাহলে সেটি একটি সিংগেল টেবিলে রাখা উচিত। যদি একটি হসপিটালের ১০০ জন রোগীর তথ্য রাখা লাগে, তাহলে তার জন্যে আলাদা টেবিল ব্যবহার করা উচিত।



পাতা ৯১



Compound Conditions in the Where Clause



এইখানে Boolean কানেক্টর and or এবং not কে নিয়ে আলোচনা করা হয়েছে। এখানে দেখানো হয়েছে যে, where নামক clause এ স্ট্যান্ডার্ড ফর্মে কীভাবে কমপ্লেক্স কন্ডিশন বসাতে হয়। কীভাবে boolean কানেক্টর নিয়ে কাজ করতে হয় তার নিয়ম দেখানো হয়েছে।

যখন একটি বড় টেবিল নিয়ে কাজ করা হয়, যেখানে মিলিয়ন সংখ্যক রো থাকে, তখন where clause এ কমপ্লেক্স কন্ডিশন ব্যবহার করার দরকার হতে পারে যাতে ফলাফলের রো-এর সেটগুলো নির্ধারণ করা যায়। এই কন্ডিশন একটি কারণযুক্ত লেভেলে রাখার জন্যে এই কন্ডিশনগুলোকে প্রায়ই স্ট্যান্ডার্ড ফর্মে রাখা হয়।



৩-১ Using a compound condition in the where clause



and, or, not এই তিনটি বুলিয়ান কানেক্টর ব্যবহার করে, কম্পাউন্ড কন্ডিশনকে ঠিক করা যায়। and এবং or দুইটি কন্ডিশনকে যুক্ত (combine) করে একটি সিংগেল কম্পাউন্ড কন্ডিশন বানানোর জন্যে। অনেকগুলো কন্ডিশনকে সিংগেল কম্পাউন্ড কন্ডিশনে পরিণত (form) করার জন্যে এই যুক্ত (combine) করার কাজটির পুনরাবৃত্তি হতে পারে।

Not ব্যবহার করা হয় একটি সিংগেল কন্ডিশনে এবং এটি ব্যবহার করা হয় কন্ডিশনটির অর্থ বিপরীত করার জন্যে।



Definition of and

The statement "A and B" is true only when both A and B are true.



Definition of or

The statement "A or B" is true when wither A or B is true.



Definition of not

The statement "not A" is true when A is false.



উপরের ডেফিনিশনগুলোতে A এবং B বলতে যেকোনো স্টেটমেন্টকে বোঝায়। যেমন: employee_id <500 or first_name = 'Mary'।



যখন একটি কমপ্লেক্স কন্ডিশনে একাধিক বুলিয়ান কানেক্টর ব্যবহার করা হয়, তখন বন্ধনী ব্যবহার করা হয়। এই বন্ধনীগুলো কম্পিউটারের জন্যে খুব জরুরী নয় তবে মানুষের পড়ার সময় এবং সহজে বোঝার জন্যে এই বন্ধনিগুলোর দরকার হয়। কিছু ক্ষেত্রে যদি কিছু বন্ধনী নাও দেয়া হয়, তাহলে কম্পিউটার সেটা সম্ভবত বুঝবে কিন্তু যারা পড়বে তাদের বেশিরভাগেরই পড়তে সমস্যা হতে পারে।



পাতা ৯২



Oracle & Access SQL



select employee_id,

first_name,

last_name,

manager_id

from_1_employees

where not (manager_id = 203)

or manager_id is null;



পাতা ৯৩



১। Not maager_id = 203" manager_id



not (manager_id = 203)

and

manager_id is null



not (manager_id = 203) or manager_id is null



3-2 Using not with in, between, like, and is null



এই সেকশনটিতে দেখানো হয়েছে যে not শব্দটি কিছু কন্ডিশনে দুইভাবে ব্যবহার করা যায়। কন্ডিশনগুলো হচ্ছে - in, between, like, is null।

এগুলো অর্থ প্রায় একই রকমের।



Version 1 এ দেখানো হয়েছে যে, not শব্দটি কন্ডিশন টেস্টের সময় ব্যবহৃত হয়। একটি কন্ডিশন টেস্ট হচ্ছে in আর আরেকটি কন্ডিশন টেস্ট হচ্ছে not in। বাকি কন্ডিশনগুলোও একই রকমের -



in not in

between not between

like not like

is null is not null



Version 2 তে দেখানো হয়েছে যে, not একটি Boolean কানেক্টর হিসেবে ব্যবহৃত হচ্ছে একটি কন্ডিশনকে বিশেষভাবে ঠিক করার জন্য।



পাতা ৯৪



Oracle & Access SQL:

Version 1 - Using not withing the condition



select employee_id,

first_name,

last_name,

manager_id

from1_employees

where dept_code not in ('act', 'mkt')

and last_name not between 'j' and' 'm'

and last_name not like '%s' (Oracle)

and last_name not like '*s' (Access)

and manager_id is not null;



পাতা ৯৫



Oracle & Acess SQL

Version 2 - Usinga Boolean not



select employee_id,

first_name,

last_name,

manager_id

from 1_employees

where not (dept_code in ('act', 'mkt'))

and not (last_name between 'j' and 'm')

and not (last_name like '%s') (Oracle)

and not (last_name like '*s') (Access)

and not (manager_id is null);





পাতা ১৪১



Saving Your Results in a New Table or View



এই পর্যন্ত যত query লেখা হয়েছে সবগুলোই তাদের ফলাফল স্ক্রীনে প্রদর্শন করেছে। কম্পিউটার বন্ধ করে দেয়ার পরে, ফলাফলগুলো মুছে গিয়েছে। এই চ্যাপ্টারে দেখানো হয়েছে কীভাবে একটি টেবিলের ফলাফল সেভ করে রাখতে হয়। এছাড়াও ফলাফলগুলো একটি view তে সেভ করে রাখা যায় যা দেখতে একটি টেবিলের মতই।

একটি টেবিলে বা ভিউয়ে ডাটা দেখার জন্যে নিচের লাইনটি ব্যবহার করতে হয়:



select * from new_table or view;



4-1 Creating a new table from the results of a select statement

এই সেকশনে দেখানো হবে কীভাবে একটি সিলেক্ট স্টেটমেন্টের ফলাফল থেকে কীভাবে একটি নতুন টেবিল তৈরী করতে হয়। এক্সেস ও ওরাকল দু'টোই এই কাজটি করতে পারে কিন্তু দু'টো আলাদা syntax ব্যবহার করে। ওরাকল সিকুয়েল স্ট্যান্ডার্ড ব্যবহার করে কিন্তু এক্সেস এর নিজস্ব ননস্ট্যান্ডার্ড এক্সপ্রেশন তৈরী করে।



একটি নতুন টেবিল তৈরী করার পরে যে টেবিলটি তৈরী করে, টেবিলটির উপরে তার অধিকার থাকে। সে টেবিলটির প্রাইভেট হিসেবে ধরা হয় এবং যে তৈরী করে তার ইচ্ছা হলে টেবিলটি একাই ব্যবহার করতে পারে আবার বাকিদের সাথে টেবিলটি শেয়ার করতে পারে। টেবিলে নতুন রো, রো পরিবর্তন এবং রো মুছে ফেলার মাধ্যমে টেবিলের তথ্য পরিবর্তন করা যায়।



Description of the process



এই প্রসেসটি সবসময় একটি select স্টেটমেন্ট দিয়ে শুরু হয়। ওরাকলে সিলেক্ট ক্লসের আগে একটি নতুন লাইন যোগ করা হয়। এই লাইনটি create table -এর মাধ্যমে টেবিল তৈরী করতে বলে এবং টেবিলটির একটি নতুন নাম দেয়। এই নতুন নামটি as শব্দটি অনুসরণ করে তৈরী করা হয়।



-----------------------------------------------



পাতা ২২৭ - চ্যাপ্টার ৬

পাতা ২২৮ - সূচীপত্র



পাতা ২২৯



Creating Tables



সিকুয়েল কমান্ডের মাধ্যমে একটি টেবিল তৈরী করা যায়, এর ফলে টেবিলের প্রতিটি অংশের উপর নিয়ন্ত্রণ থাকে।



6-1 The create table command



create table স্টেটমেন্ট একটি নতুন টেবিল তৈরী করে। যখন টেবিলটি প্রথম তৈরী হয়, তখন এটিতে কোনো ডাটাসহ রো থাকে না। টেবিল তৈরী করার কমান্ডটি হচ্ছে নিচের মত -



CREATE TABLE table_name

(column_name_1 data_type_1,

column_name_2 data_type_2,

....);



এটি একটি কমান্ডের সাধারণ ফর্ম। এই কমান্ডের সাথে পরে আরো অনেক কিছু যোগ করা যায়। টেবিলের সকল কলাম অবশ্যই তালিকাভুক্ত হওয়া উচিত।

এই মেথডে টেবিল তৈরী করার মাধ্যমে টেবিলের উপর পুরোপুরি নিয়ন্ত্রণ প্রতিষ্ঠিত হয়। একটি টেবিলে যা যা থাকে তা হলো -



* টেবিলের একটা নাম

* কলামগুলোর নাম

* ডাটাটাইপস অফ কলাম

* এ সিকুয়েন্স টু দা কলাম



আমরা মনে করে থাকি যে, টেবিল হচ্ছে ডাটা ধারণের জন্যে। এটা পুরোপুরি ঠিক নয়। টেবিল হচ্ছে একটি কনটেইনার, একটি বাক্সের মত। টেবিলের ভেতরে ডাটা থাকে।

ওরাকলের ডাটা টাইপ অ্যাক্সেসের চাইতে কিছুটা ভিন্ন। সব সিকুয়েল প্রোডাক্ট সিকুয়েলের চাইতে সামান্য আলাদা ডাটাটাইপকেও সমর্থন করে। সিকুয়েলের স্টেটমেন্ট হচ্ছে ওরাকল ও অ্যাক্সেসে ভিন্ন।

প্রাইমারী কী এবং আরো বিভিন্ন অপশন টেবিল আরম্ভ করার শুরুতেই নির্ধারণ করে নেয়া যায় অথবা এগুলো টেবিল বানানোর পরে ঠিক করতে হয়। টেবিলে ডাটা লেখার পরেও এগুলো ঠিক করা যায়। alter table স্টেটমেন্টটি একটি টেবিল তৈরী হওয়ার পরে প্রাইমারী কী দেয়ার জন্যে ব্যবহার করা হয়।



পাতা ২৩০



নিচের উদাহরণে create table স্টেটমেন্টটি ওরাকল ও অ্যাক্সেসের জন্যে একই কাজ করবে, শুধুমাত্র ডাটাটাইপের নামগুলো ছাড়া।



Task



Create a new table similar to the 1_foods table by defining its columns with a create table statement. Move the position of the menu_item column to make it the first column.



Oracle SQL



drop table 1_foods_2;



create table 1_foods_2

(menu_item number (2),

supplier_id varchar2 (3),

product_code varchar2 (2),

description varchar2 (20),

price number (4, 2),

price_increase number (4, 2) );





Acess SQL



drop table 1_foods_2



create table 1_foods_2

(menu_item byte,

supplier_id varchar (3),

product_code varchar (2),

description varchar (20),

price money,

price_increase money );





Result table



A new table is created. When a table is created, at first it does not contain any data, so you cannot see it. However, there is an entry for the table in the Data Dictionary, so you can see it if you look there.



পাতা ২৩১



৬-২ Datatypes in Oracle and Access



কম্পিউটারের ভেতরে ডাটা যে প্যাটার্নে ব্যবহৃত হয় তা হচ্ছে 0 ও 1। শুধুমাত্র এই প্যাটার্ণটিই অর্থবহ, বাকিগুলো হচ্ছে অকাজের। এই অর্থসহ প্যাটার্ণটিকেই ডাটাটাইপ বলে।



ওরাকল ও অ্যাক্সেস ভিন্ন প্যাটার্ন ব্যবহার করে এবং উভয় প্যাটার্নই অর্থপূর্ণ। ভালো করে বললে, ওরাকল ও অ্যাক্সেস জানুয়ারী ১, ২০১০ তারিখটি বোঝাতে 0 ও 1 - এর ভিন্ন প্যাটার্ণ ব্যবহার করে। ডাটার অর্থ একই কিন্তু বাইনারীতে দেখতে ভিন্ন রকমের। সহজ কথায়, ওরাকল ও অ্যাক্সেস ভিন্ন ডাটাটাইপ ব্যবহার করে। প্রতিটি সিকুয়েল প্রোডাক্টের নিজস্ব ডাটাটাইপ থাকে। প্রতিটিরই ডাটা টাইপে বাইনারী ডিজিটের প্যাটার্ণে সামান্য পার্থক্য থাকে।



বেশিরভাগ ক্ষেত্রে, বাইনারী লেভেলের ভিন্ন ভাবে দেখানো হলেও তাদের অর্থ একই থাকে। ওরাকল ও অ্যাক্সেস দু'টোই 100AD থেকে 9999AD পর্যন্ত তারিখ নিয়ে কাজ করতে পারে।



0 ও 1 এর ভিন্ন প্যাটার্ণে ব্যবহারের কারণে ওরাকলের তারিখ ও অ্যাক্সেসের তারিখে কিছু পার্থক্য রয়েছে। ওরাকল 4712 BC থেকে 100 AD পর্যন্ত তারিখ নিয়ে কাজ করতে পারলেও অ্যাক্সেস তা পারে না।



মূল কথা হচ্ছে ওরাকল ও অ্যাক্সেসের ডাটা টাইপ একই রকমের হলেও কিছু বিশেষ ক্ষেত্রে তাদের কিছু ছোট পার্থক্য রয়েছে। ডাটাটাইপের নামগুলো ভিন্ন হওয়ার কারণে creat table স্টেটমেন্টটিও ভিন্ন।



নিচের টেবিলটি ওরাকল ও অ্যাক্সেসে ব্যবহৃত ডাটাটাইপের পার্থক্য দেখানো হয়েছে। টেক্সট, তারিখ, সময়ের জন্যে ডাটাটাইপ প্রায় একই রকমের। অ্যাক্সেসে রয়েছে এক বিটের ডাটাটাইপ - হ্যাঁ বা না এবং সত্য বা মিথ্যা। ওরাকলে এটা নেই। ওরাকলে ডাটা প্রদর্শনের জন্যে সকল বাইটের ডাটাই ব্যবহৃত হয়।



আরেকটি পার্থক্য হচ্ছে সংখ্যায়। অ্যাক্সেস সংখ্যার জন্যে বিভিন্ন রকম ডাটাটাইপ ব্যবহার করে। এই নিয়ম অনেক আগে থেকেই চলে আসছে এবং কম্পিউটার এই নিয়মটিকেই অনুসরণ করছে। ওরাকলে ডেসিমাল সংখ্যা ও ফ্লোটিং-পয়েন্ট সংখ্যাকে একসাথে মিশিয়ে একটি ডাটাটাইপে ব্যবহার করা হচ্ছে।



স্টোরেজের জন্যে ডাটাটাইপ বাইনারী ডাটা টাইপের পরিবর্তে ব্যবহৃত হয়, যেমন - ছবি, শব্দ, ভিডিও ক্লিপ ও প্রোগ্রাম। এগুলো ডাটাবেসের অ্যাকটিভ উপাদান নয়।





-------------------------------------------------------------------

পাতা ৭৭০



Oracle SQL



In scott:



update dept

set loc = 'new york'

where deptno = 10'



commit;



select * from dept;



পাতা ৭৭১



Oracle SQL



In squlfun:



select * from scott.dept;



comit;



select * from scott.dept;



পাতা ৭৭৩



Oracle SQL



select *

from dictionary

where table_name like '%syn%';



Oracle SQL



select *

from dict_columns

where table_name = 'all_synonyms';



পাতা ৭৭৬



Oracle SQL: Create a new userid



create user lunches identifed by hunger

default tablespace users

temporary tablespace temp;



grant resource, connect to luches;





Oracle SQL: Move the tables to the new userid



create table lunches.employees as

select *

from sqlfun.1_employees;



পাতা ৭৭৭



Oracle SQL: Grant privileges and set up synonyms



connect lunches;



the password is hunger



grant select, insert, update, delete

on employees to public;



connect system;



The password is manager.



create public synonym 1_employees

for lunches.employees;







পাতা ৭৮১



১৯৭০ সালে একটি বিশাল পরিমাণের তথ্য গুছিয়ে রাখা নিয়ে পরিকল্পনা করছিলো। এই সমস্যার সমাধান করার জন্যে কাজ করতে গিয়ে বর্তমানের রিলেশনাল ডাটাবেস ও সিকুয়েলের জন্ম হয়। দরকারী সকলের লক্ষ্য ছিলো দরকারি ডাটা যত সহজে সংগ্রহ করা যায় তা নিয়ে কাজ করা ও এই ডাটা যেন সকল লোক ব্যবহার করতে পারে সেটা ঠিক করে।



20-1 Do one thing and do it well



সিকুয়েল ডিজাইন করা হয়েছিলো একটি বিশাল পরিমাণের তথ্য নিয়ে কাজ করার জন্যে এবং একটি গ্রুপের মানুষ যেন সেই তথ্য ব্যবহার করতে পারে তা নির্দিষ্ট করার জন্যে। এটাকে কখনোই নিজে থেকে কোনো কাজ করার জন্যে ডিজাইন করা হয়নি বা নতুন কোনো সফটওয়্যার নিয়ে আনার জন্যে ডিজাইন করা হয়নি। এটাকে বানানো হয়েছিলো একটি তথ্য ব্যাংক হিসেবে যেটি একটি কর্পোরেশন ব্যবহার করতে পারবে। এটাকে বানানো হয়েছে যেন এটি একটি কাজ করে এবং কাজটি ঠিক ভাবে করে।



20-2 Focus on information



সিকুয়েল information level এবং presentation level - এর মাঝে একটি স্বাতন্ত্র্য তৈরী করে। সিকুয়েল ইনফরমেশন লেভেলের দিকে মনোযোগ দেয় এবং অন্যান্য সফটওয়্যারের প্রেসেন্টেশন লেভেলের শাখার দিকে মনোযোগ দেয়। তারমানে এই নয় যে, এটি প্রেসেন্টেশন ইনফরমেশনের চাইতে কম গুরুত্বপূর্ণ। প্রেসেন্টেশনও কখনো কখনো খুব গুরুত্বপূর্ণ হতে পারে কিন্তু সিকুয়েলকে প্রেসেন্টেশনের দিকে মনোযোগ দেয়ার জন্যে বানানো হয়নি।



উদাহরণ হিসেব বলা যায়, সিকুয়েল একটি রিপোর্টে পেইজ নাম্বার দেয় না। এটি পেইজ নাম্বার ছাড়াই ১০০টি পেইজ তৈরী করতে পারে। যদি আমার পেইজ নাম্বারের দেয়ার দরকার হয়, তাহলে আমি পেপারের সাইজ অনুসারে পেইজ নাম্বার দিতে পারি বা ভিন্ন ভাবে পেইজগুলোকে সাজাতে পারি। কিন্তু এটি সিকুয়েলের কাজ নয়।



সিকুয়েলকে ডিজাইন করা হয়েছে অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ যেমন জাভা, কোবোল, ভিসুয়াল বেসিককে নিয়ে কাজ করার জন্যে। এর মানে হচ্ছে সিকুয়েলের কাজ হচ্ছে এই ল্যাংগুয়েজগুলোকে সাহায্য করা যখন এই ল্যাংগুয়েজগুলোর কোনো বিশেষ কাজ করার সময় সিকুয়েলের কাছে থেকে কোনো সাহায্য লাগবে। এই বিশেস কাজগুলো হলো -



- কোনো ডাটাকে পোলিশ ফর্মে প্রদর্শন করা

- একজন এন্ড ইউসারকে নিয়ে কাজ করা

- অন্যান্য প্রোগ্রাম নিয়ে ইন্টারফেসিং এবং ইন্টারগ্রেটিং করা

- ডাটা ভ্যালিডেশনের জন্যে সঠিক নিয়ম তৈরী করা।





পাতা ৭৮৪



Newer Interfaces



যখন সিকুয়েলকে প্রথম ডিজাইন করা হয়েছিলো, তখন ধারণা করা হয়েছিলো যে ভাইস প্রেসিডেন্ট থেকে সেক্রেটারী পর্যন্ত সকলেই 'সিলেক্ট' query লিখবে। এর মাধ্যমে সকলেই ডাটাবেস নিয়ে কাজ করবে। অভিগ্গতা দেখাচ্ছে যে, বেশিরভাগ ভাইস প্রেসিডেন্ট নিজেদের সিলেক্ট কোয়ারীতে লিখতে চায় না। সেহেতু, নতুন ইন্টারফেসের প্রয়োজন দেখা দিয়েছে।



ফর্ম একটি আন্তর্জাতিক ভাষা ব্যবহার করে যাতে সকলেই স্বাচ্ছন্দ্য বোধ করে। ফর্ম ব্যবসাতে এবং সরকারী কাজে ব্যাপক ভাবে ব্যবহৃত হয়। সুতরাং, ফর্মকে সাধারণত ডাটাবেসের সম্মুখভাবে রাখার জন্যে বানানো হয়। ফর্ম প্রাথমিক ডাটা নিয়ে শুরু থেকে কাজ করে।



রিপোর্ট একটি বিশাল সংগ্রহের বড় তথ্য সরবরাহ করে। ওয়েব টুল হচ্ছে সেই সকল প্রক্রিয়া যেগুলো ফর্ম ও রেকর্ড ইন্টারনেটে প্রদর্শনের সময় ব্যবহৃত হয়। ডাটাবেসও জাভা ও ভিসু্য়াল বেসিকের সাথে থাকে যেন এগুলো অন্যান্য সফটওয়্যার অ্যাপলিকেশনের সাথে যোগাযোগ গড়ে তুলতে পারে।



পাতা ৭৮৫



20-5 Forms



ফর্ম সাধারণত ব্যবহৃত হয়ে থাকে ডাটা প্রবেশ, ডাটা নিয়ে কাজ করা এবং সেই ডাটা ডিলিট করা এবং ডাটাবেসের কোনো রেকর্ড খুঁজে বের করার কাজে। এই কাজগুলোকে সিকুয়েলের ইনসার্ট, আপডেট, ডিলিট বা সিলেক্টের সাথে তুলনা করা যায়। ফর্ম সাধারণত একবারে একটি রো নিয়ে কাজ করে। কিছু রো অল্প কিছু রেকর্ড একসাথে প্রদর্শন করে। নিচে একটি ফর্মের উদাহরণ দেয়া হলো।



20-6 Reports



ফর্ম একবারে একটি রেকর্ড নিয়ে কাজ করলেও রিপোর্ট একবারে অনেকগুলো রেকর্ড নিয়ে কাজ করে। পরের তিন পৃষ্ঠায় রিপোর্টের একটি উদাহরণ আছে যাতে লান্চ, সাবটোটাল, এবং গ্রান্ড টোটাল নিয়ে কাজ দেখানো হয়েছে। এই রিপোর্টটির একটি টাইটেল আছে, রিপোর্টটি কবে কম্পিউটার চলেছিলো সেই তারিখটি দেয়া আছে, পৃষ্ঠা নাম্বার দেয়া আছে এবং প্রথম তিন কলামের আর পুনরাবৃত্তি হয়নি।



20-7 Web tools



ওরাকল ও এক্সেস বর্তমানে ইন্টারনেটে ফর্ম ও রিপোর্ট ব্যবহার করতে দিচ্ছে। দুই ভার্সনেই এই ফিচার দু'টো নতুন সংযুক্ত হয়েছে। আরো নতুন সার্ভিস আবিষ্কৃত হচ্ছে। নতুনগুলোর কোনটিই স্ট্যান্ডার্ড হিসেবে গ্রহণযোগ্য হচ্ছে না।



পাতা ৭৮৯ - ৭৯০



Typical Applications



20-8 Smaller database



SQL এবং রিলেশনাল ডাটাবেস বানানো হয়েছিলো বিশাল পরিমাণ তথ্য নিয়ে কাজ করার জন্যে। অল্প তথ্য নিয়ে কাজ করার জন্যে সিকুয়েল এবং ডাটাবেস ব্যবহার করাকে তখন 'ওভারকিল' (overkill) বলা হতো। এর উদাহরণ হিসেবে বলা হতো যে, কেউ একজন একটি বাদাম ভাংগার জন্যে একটি বুলডোজার ব্যবহার করছে।

বর্তমানে সিকুয়েল ও রিলেশনাল ডাটাবেস ছোট ডাটাবেসের জন্যেও ব্যবহৃত হচ্ছে। যেমন: আজকাল যে কেউ ল'ইয়ার অফিসের জন্যে কিংবা একটি চেকবুক ও অ্যাড্রেসবুক গুছিয়ে রাখার জন্যে সিকুয়েল বা রিলেশনাল ডাটাবেস ব্যবহার করতে পারে। যখন কোন তথ্যকে টেবিলের ভেতরে কল্পনা করা যায়, তখনই সেই তথ্য নিয়ে রিলেশনাল ডাটাবেসে কাজ করা যায়।



20-9 OLTP



অনলাইন ট্রানস্যাকশন প্রসেসিং (OLTP) - এর কাজে মূল উদ্দেশ্য থাকে টেবিলে তথ্য ঢোকানো। OLTP সিস্টেম ফর্ম ব্যবহার করে এবং একবারে অল্প কিছু সংখ্যক রিপোর্ট নিয়ে কাজ করে। ওএলটিপি সিস্টেমের কোনো নির্দিষ্ট প্রকারভেদ নেই। প্রতিটি ওএলটিপি হচ্ছে একটি আরেকটির চাইতে ভিন্ন। তবে একটি সিস্টেমের সাধারণত নিচের বৈশিষ্ট্য থাকতে পারে -



* ২৫,০০০,০০০ রো যেগুলোতে ডাটা থাকে

* ২০০ ব্যবহারকারী যারা একসাথে ডাটাবেসে প্রবেশ করতে পারে ও ডাটা নিয়ে কাজ করতে পারে।

* বেশির ভাগ ট্রানস্যাকশন দুই সেকেন্ড সময়ের মাঝেই সারা দেয়।



20-10



ডাটা ওয়্যারহাউস ডাটা যত বড়ই হোক না কেন, তা সবসময় সংগ্রহের দিকে ও গুছিয়ে রাখার দিকে লক্ষ্য রাখে। এই সিস্টেমগুলো সাধারণত যেইসব রিপোর্ট কোনো ডাটার অ্যানালাইসিস প্রদর্শন করে, সেইসব রিপোর্টের দিকে মনোযোগ দেয়।



ডাটা ওয়্যারহাউসের কোনো নির্দষ্ট প্রকারভেদ নেই। কিন্তু প্রতিটি সিস্টেমেই নিচের বৈশিষ্ট্য থাকে -



* ৫০০,০০০,০০০ রো যেগুলোতে ডাটা থাকে

* ডাটা অ্যানালাইজের জন্য একবারে একটি রিপোর্ট চলে

* একটি রিপোর্ট চলতে তিন ঘন্টা সময় লাগে।







A table stores data directly on the disk. A view stores a select statement that defines the view. It has no data of its own. A table uses a lot of disk space for a large table. A View uses very little disk space. A table is static, but a view is dynamic. In a table, the data belongs to the table. In a view, the data does not belong to the view. It belongs to the tables used in the select statement that defines the view. The data in a table is stable and does not change by itself. The data in a view is dynamic and changes when data in the underlying tables is changed.

মন্তব্য ০ টি রেটিং +০/-০

মন্তব্য (০) মন্তব্য লিখুন

আপনার মন্তব্য লিখুনঃ

আলোচিত ব্লগ


full version

©somewhere in net ltd.