দুটি এসকিউএল স্টেটমেন্টের গাণিতিক সমতা


9

দুটি এসকিউএল স্টেটমেন্টের গাণিতিক সাম্য পরীক্ষা করার কোনও উপায় আছে কি?

আমার দুটি এসকিউএল স্টেটমেন্ট রয়েছে:

  • SQL_STATEMENT_1
  • SQL_STATEMENT_2

ডেটাতে উভয় বিবৃতি চালানো এবং আউটপুট তুলনা মোটেও সহায়তা করে না।

বিবৃতিগুলির পিছনের সেট গণিতগুলির মূল্যায়ন করা দরকার, যেমন কোনও সমীকরণ সমাধানকারী।

আমার প্রশ্নের ক্ষেত্রের বাইরে এমন জিনিস রয়েছে:

  • অন্যান্য তুলনা তারপর সমতা (এর চেয়ে বড়, কম, পছন্দ) ...
  • সঞ্চিত পদ্ধতি, বা ট্রিগার
  • সাধারণ সারণী এক্সপ্রেশন (সাথে)

সুযোগে:

  • সাবসलेक्टগুলি: যেখানে অন্যান্য_আইডি (অন্য কোথাও থেকে আইডি নির্বাচন করুন ...)
  • যোগদান করে

একটি আংশিক সমাধান 2 টি প্রশ্নের প্রয়োগের পরিকল্পনা তুলনা করা হবে plans যদি মৃত্যুদণ্ড কার্যকর করার পরিকল্পনাগুলি একই হয় তবে তারা সমান। তবে সম্পর্ক দুটিভাবেই কাজ করে না। 2 টি যৌক্তিক সমতুল্য ক্যোয়ারী থাকতে পারে যার বিভিন্ন প্রয়োগের পরিকল্পনা রয়েছে।
বুয়াহাএক্সএক্সডি

1
@ বুয়াহাএক্সডিডি: এটি সত্য নয়। select * from foo where id = 4অবশ্যই বাস্তবায়ন পরিকল্পনা একই হবেselect * from foo where id = 2
a_horse_with_no_name

@a_horse_with_no_name আমি এটি এসকিউএল সার্ভারে পরীক্ষা করেছি এবং 2 টি পৃথক এক্সএমএল ফাইল পেয়েছি। প্যারামিটারগুলি এক্সএমএল ফাইলে <প্যারামিটারলিস্ট> নোড হিসাবে অন্তর্ভুক্ত করা হয়েছিল। দৃশ্যত, এই পরিকল্পনাগুলি অভিন্ন ছিল (টেবিল স্ক্যান + নির্বাচন করুন)। তবে আমি বিশ্বাস করি আপনি কার্যকর করার পরিকল্পনাগুলির সাথে তুলনা করার বিষয়ে সঠিক হতে পারেন।
বুয়াহাএক্সএক্সডি

1
@ এ_হর্স_বিহীন_ন_নামটি যখন অনন্য কীগুলিতে আসে তখন সঠিক। অন্য সকলের জন্য, দুটি পৃথক বাস্তবায়ন পরিকল্পনা নেওয়া select * from foo where id = 4এবং সম্ভব select * from foo where id = 2যদি 1) সূচী পরিসংখ্যানগুলি আপ টু ডেট না হয় এবং 2) সূচী পরিসংখ্যান আপ-টু-ডেট থাকলেও আইডির মূল বিতরণটি অন্যদিকে (প্রদত্ত আইডি কোনও অনন্য কী নয়)।
রোল্যান্ডোমাইএসকিউএলডিবিএ 19

উত্তর:


6

দুটি এসকিউএল স্টেটমেন্টের গাণিতিক সমতা কত? আমার জন্য দুটি প্রশ্নের সমতুল্য, যদি কোনও ডেটাসেটের উভয়কেই দেওয়া হয়, তারা একই ফলাফলের সেটটি ফেরত দেয়।

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

এই পরিস্থিতিতে সম্ভবত এটি অসম্ভব।

যাহোক...

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

আপনি দেখতে পাচ্ছেন এটি অনেক বেশি কাজ হতে চলেছে এবং যতদূর আমি জানি, সমস্ত কিছুই স্বয়ংক্রিয়ভাবে গণনা করার জন্য কিছুই নেই। তবুও, আমি এমন কিছু সরঞ্জাম পেয়েছি যা আপনি যদি কার্যটি মোকাবেলা করতে চান তবে আপনাকে দরকারী মনে হতে পারে:


আমার প্রশ্নটি কেবল সেট অপারেশন সম্পর্কে। আমি প্রশ্ন আপডেট। এটি "দুটি অ্যালগোরিদম সমতুল্য" সমস্যা সম্পর্কিত। তবে প্রসঙ্গটি সীমাবদ্ধ, কেবলমাত্র সেটগুলির বেসিক ক্রিয়াকলাপগুলি, যোগ দেয়, সাবলেটগুলি আমার সুযোগে।
গেটলি

3

সংজ্ঞা অনুসারে সীমাবদ্ধ সময়ে শব্দার্থক সমতাটি পরীক্ষা করা অসম্ভব, রাইসের উপপাদ্যটি দেখুন :

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


2
এটি কেবল কোনও মন্তব্য নয়। এই প্রসঙ্গে আপনি চালের প্রয়োগযোগ্যতার উপর প্রসারিত করতে পারেন, দয়া করে।
মাইকেল গ্রিন

এমনকি যদি তাত্ত্বিকভাবে সম্ভব হয় তবে বর্তমান এসকিউএল স্ট্যান্ডার্ড সিনট্যাক্সটি এতটাই ব্যারোক যে অনুশীলন করা অসম্ভব
জেমস অ্যান্ডারসন

1
ওপি ব্যাখ্যার সাথে দেখে মনে হচ্ছে প্রশ্নটি অর্থগত সমতুল্যের চেয়ে যৌক্তিক সমতা সম্পর্কে বেশি more আসল প্রশ্নটি: আমরা কি এসকিউএল স্টেটমেন্টগুলিকে গাণিতিক অভিব্যক্তিতে রূপান্তর করতে পারি এবং তারপরে যৌক্তিক সমতা মূল্যায়ন করতে পারি?
ভুলে গেছেন

2

ডিবিএ ব্যবহারকারী লেনার্ট আমাকে এই প্রকল্পের দিকে নির্দেশ করেছেন:

http://cosette.cs.washington.edu/

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


1

এটি করার একটি উপায় হ'ল পার্সার তৈরি করা বা আরও ভাল একটি বিদ্যমান ব্যবহার করুন। আমি বিশ্বাস করি যে সি # এর একটি টিএসকিউএলপার্সার ক্লাস রয়েছে এবং এটি একটি পার্স () পদ্ধতি রয়েছে। পার্সার আপনার ক্যোয়ারীটিকে সাব-ক্লাসে বিভক্ত করবে যা আপনি তারপরে তুলনা করতে পারবেন।


1

আপনি যদি একটি থিওরি ভিত্তিক সমতুল্য পরীক্ষাটি সন্ধান করছেন, আপনার সেরা বেট হ'ল কোনও WHEREধরণের JOIN(অভ্যন্তরীণ বা বাহ্যিক) রূপান্তরিত হতে পারে এবং স্টেটমেন্টটি রিফ্যাক্টর করা উচিত conditions এর মধ্যে রয়েছে IN subselectএবং EXISTS subselectএবং অন্য কোন শর্ত WHEREদফা যে শব্দ রয়েছে SELECT। আপনি যদি উভয় এসকিউএল বিবৃতিতে এটি সম্পাদন করেন তবে আপনার কাছে একটি নতুন FROMধারা থাকবে যা আপনার আগ্রহী সেট-ভিত্তিক যুক্তি / গণিতের প্রতিনিধিত্ব করে Then আপনি যদি এই সমস্ত কিছু করার একটি স্বয়ংক্রিয় উপায়ের সন্ধান করেন তবে আমি এমন কোনও সরঞ্জাম সম্পর্কে জানি না যা সঠিকভাবে এটি করতে পারে।

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