কী সংরক্ষিত সারণী ধারণাটি কী?


12

আমি ওরাকল ডকুমেন্টেশনে কী-সংরক্ষিত টেবিলটি সম্পর্কে যোগ দর্শন বিভাগ আপডেট করে আপডেট করেছি।

যাইহোক, এটি বোঝার কোনও সহজ উপায় আমি খুঁজে পাইনি।

আমি আশা করি অফিসিয়াল ওরাকল ডকুমেন্টেশন ব্যতীত কিছু সাধারণ ধারণাগত বিবরণ পাবেন।


1
আপনি দেখেছ এই AskTom উপর?
জ্যাক বলছেন topanswers.xyz

: এখানে আরেকটি ব্যাখ্যা করেছেন যে আমাকে এই চতুর ধারণা বুঝতে হয় dba.stackexchange.com/questions/38728/...
Vadzim

উত্তর:


7

কী সংরক্ষণিত মানে 1 টি কী মান 1 টেবিলে যায়। পাল্টা উদাহরণ দেওয়া আপনাকে এই ধারণাটি আরও ভালভাবে বুঝতে সহায়তা করতে পারে।

Example1:

আপনার ভিউতে সমষ্টি রয়েছে। মনে করুন আপনি নীচের দেখুন কাঠামো আছে।

GroupID, AverageSalary
1 , 10000
2, 12000
3, 14000

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

উদাহরণ 2: আপনার ভিউ একাধিক টেবিল থেকে মান দেখায়। আপনার দর্শনগুলি PERSON এবং PERSON_CONTACT_DETAILS (আইডি, পার্সোনাইড, পরিচিতি টাইপ, পরিচিতি মূল্য) সারণী থেকে মানগুলি দেখায়।

সারি উদাহরণ:

 1,1,email,ddd@example.com
 1,1,phone,898-98-99

আপনি এই 2 টেবিলটিতে যোগ দিন এবং আরও ব্যবসায়িক বন্ধুত্বপূর্ণ তথ্য দেখায়।

পার্সোনআইড, নাম, শেষ নাম, ফোন 1, ইমেল 1

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

দ্রষ্টব্য: আপনি যদি নিজের ভিউ স্কুয়েলকে সীমাবদ্ধ করেন এবং এটি আপডেট করার জন্য কোন সারিগুলি কাজ করতে পারে তা পরিষ্কার করে দেয়।

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


আপনি যে টেবিলটি আপডেট করতে চান তাতে যদি একটি যৌগিক প্রাথমিক কী থাকে?
জনী কেন

7

ডকুমেন্টেশন আপনি ইতিমধ্যে পড়েছেন বেশ ভাল এটা বলেছেন। আরও ব্যাখ্যা করতে:

যোগদানের মতামতগুলি সংশোধন করার ক্ষেত্রে বিধিনিষেধগুলি বোঝার জন্য কী-সংরক্ষিত সারণীর ধারণাটি মৌলিক।

সাধারণত একটি updateটেবিলে কাজ করে। ফিল্টারটিতে updateটর্সুয়াস সাবকিউরিগুলি এড়ানোর জন্য, ওরাকল আপনাকে যতক্ষণ না কোনও টেবিলে আসল অন্তর্নিহিত সারিগুলিতে পরিবর্তনগুলি খুব সহজে ম্যাপ করতে সক্ষম হয় ততক্ষণ আপনি দেখার (বা উপকণি) অনুমতি দেয় । setক্লজটি যদি একটি 'কী সংরক্ষিত' সারণীতে কেবল কলামগুলি পরিবর্তন করে তবে এটি সম্ভব :

একটি সারণী কী-সংরক্ষিত থাকে যদি টেবিলের প্রতিটি কীও যোগ দেওয়ার ফলাফলের মূল কী হতে পারে। সুতরাং, একটি কী-সংরক্ষিত সারণীতে এর কীগুলি একটি যোগদানের মাধ্যমে সংরক্ষণ করা হয়েছে।

উদাহরণ স্বরূপ:

create table foo( foo_id integer primary key, foo_val integer not null );
create table bar( bar_id integer primary key, bar_val integer not null, 
                  foo_id integer not null references foo );

update (select * from foo join bar using(foo_id)) set foo_val=1;
ORA-01779: cannot modify a column which maps to a non key-preserved table

update (select * from foo join bar using(foo_id)) set bar_val=1;
0 rows updated.

1 ম্যাপিং: প্রথম আপডেট ব্যর্থ কারণ ওরাকল 1 কোনও উপায় নেই foo_valকরার ক্যোয়ারীতে foo_valমধ্যে foo1 টি মানচিত্র: বিপরীতভাবে দ্বিতীয় আপডেট সফল কারণ ওরাকল করতে 1 - bar_valথেকে bar_valbar। গুরুত্বপূর্ণ বিষয়টি এটি foo_idঅনন্য foo- সুতরাং প্রতিটি সারিটির জন্য bar, কেবলমাত্র একই সংখ্যক সারি থাকতে পারে foo(প্রকৃতপক্ষে এই উদাহরণে ঠিক 1, তবে একইটি একটি নলযুক্ত বিদেশী কীটির জন্য প্রযোজ্য - বিন্দুটি হ'ল কখনও নেই) একাধিক সারি)


3

আমি প্রথমে একটি উদাহরণ দেই এবং পরে এটি ব্যাখ্যা করব। 2 টি সারণী শিক্ষার্থী (টি_স্টুডেন্টস) এবং কোর্স (টি_কোর্স) বিবেচনা করুন।

  • শিক্ষার্থীদের টেবিলে (বদ্ধমূল, নাম, কোর্সিড) ছাত্র আইডিতে একটি প্রাথমিক কী রয়েছে।
  • কোর্স সারণীতে (কোর্সিড, কোর্সনেম) কোর্স আইডিতে একটি প্রাথমিক কী রয়েছে।

এই দুটি সারণী যখন যুক্ত হয় ->

select * from t_students S, t_course C where S.courseid=C.courseid; 

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

এই উদাহরণের জায়গায়, আপনি এই সিদ্ধান্তে আসতে পারেন যে:

  • বেস টেবিলের প্রতিটি কী যোগদানের পরে ফলাফলের ডেটাগুলির চাবি হিসাবে কাজ করে (সংযুক্ত)
  • বেস সারি থেকে সারিগুলি ফলাফল তথ্যগুলিতে কেবলমাত্র একবারে উপস্থিত হয় ((কোনও নকল সারি নেই)

এটি কী সংরক্ষণিত টেবিলগুলির ধারণা।

দর্শন কলামগুলি আপডেটযোগ্য কিনা তা জানতে,

select * from all_updatable_columns where table_name='V_VIEW_NAME';

PS: বড় অক্ষরে টেবিল / প্রদর্শনের নাম সরবরাহ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.