পোস্টজিআইএস ডাটাবেসের জন্য উপযুক্ত গ্লোবাল / ইউনিভার্সাল ইউনিক আইডেন্টিফায়ার কী?


12

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

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

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

ধারণামূলক ডায়াগ্রাম

কোন টিপস?


2
"আমি পড়েছি" ... আপনি কি একটি লিঙ্ক সরবরাহ করতে পারেন?
কर्क কুইকেনডাল

1
এখানে পৃষ্ঠাগুলির নীচের দিকে অনেকগুলি পোস্টগ্রেকএল.আর.ডোকস / ডকস / ৮.৪ / স্ট্যাটিক / ডিডিএল-সিস্টেমম-কলামস.এইচটিএমএল উল্লেখ করেছে যে এগুলি অনন্য বলে ধরে নেওয়া খারাপ অভ্যাস। এছাড়াও এই পরবর্তী লিঙ্কটি বাইটস / ডটপিক / পোস্টগ্রেসকিএল/answers/423281-oid-not-oid মূল পোস্টের একটি জবাব উল্লেখ করেছে যে ওআইডিগুলি ব্যবহারকারীর টেবিলের জন্য অবমাননিত।
Ando

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

1
I believe there is an option to use a "Universal Unique Identifer" UUID, but the large text and number value that spits out is horrible. অনন্য আইডি কেমন লাগে তা কেন লাগে?
nmtoken

"... তবে যে বৃহত পাঠ্য এবং সংখ্যা মানটি ছড়িয়ে পড়েছে তা ভয়াবহ।" না এইটা না. এটি কেবল দীর্ঘ, যেমন কোনও বিশ্বব্যাপী অনন্য আইডি নম্বর প্রয়োজন
jpmc26

উত্তর:


5

আমি পৃথক মধ্যবর্তী টেবিল তৈরি করবে buildings_attach, parcels_attachইত্যাদি তারপর আপনি একটি বিশ্বব্যাপী আইডেন্টিফায়ার প্রয়োজন হবে না।


হাই পিটার, প্রতিক্রিয়া জন্য ধন্যবাদ। অবশেষে আমি আমাদের ডিবিএর সাথে যোগাযোগ রাখতে সক্ষম হয়েছি (তিনি অন্য অফিসে আছেন), তিনি আপনার মত একই সমাধানের পরামর্শ দিয়েছিলেন। আমি অবশ্যই এই পথে যেতে পেরে খুশি কারণ আমি স্পষ্টতই কোনও ডিবি ব্যক্তি নই (আমার স্কিমা অঙ্কন থেকে স্পষ্ট হতে পারে?!?), তবে কি এটিই সবচেয়ে ভাল সমাধান? যদি কোনও সংযুক্তি থাকে যা পার্সেল বৈশিষ্ট্য এবং বিল্ডিং বৈশিষ্ট্য উভয়ের সাথেই প্রাসঙ্গিক হয় তবে কি হবে? আমার উপরের চিত্রটিতে আমাকে কেবল সংযুক্তির জন্য বিশদটি একবার প্রবেশ করতে হবে, যেখানে ডিবিএর সমাধান হিসাবে আমি দুটি ভিন্ন টেবিলের মধ্যে দুবার এটি করা দরকার।
Ando

1
হ্যাঁ, তবে এগুলি দুটি পৃথক পৃথক তথ্য, সুতরাং এগুলি দুটি পৃথক স্থানে প্রবেশ করা ঠিক আছে। এটি সম্পর্কিত যেভাবে একটি সম্পর্কিত ডেটাবেস ডিজাইন কাজ করে।
পিটার আইসেন্ট্রাট

পিটার সহায়তার জন্য ধন্যবাদ, আমি স্পষ্টির প্রশংসা করি! আমি সেই পথে নামব। চিয়ার্স
Ando

9

দুটি সমাধান:

1) একটি একক ক্রম তৈরি করুন এবং সমস্ত টেবিলগুলিকে সেই অনুক্রমটি ব্যবহার করুন, শুরু থেকেই করা যেতে পারে বা আপনি একটি আইডি কলাম তৈরি করতে পারেন এবং এখনই আপনার টেবিলগুলি আপডেট করতে পারেন।

ক্রম তৈরি করতে:

CREATE SEQUENCE universal_sequence;

তারপরে একটি টেবিল:

CREATE TABLE (
colname integer NOT NULL DEFAULT nextval('universal_sequence'));

নতুন আইডি সহ একটি বিদ্যমান টেবিল আইডি ফিল্ড আপডেট করতে (আপনি একই সারণীটি অনুসরণ করতে চান এমন সমস্ত টেবিলের জন্য এটি করুন):

UPDATE table1
SET id=nextval('universal_sequence'));

2) অন্য সমাধান: একটি অস্থায়ী ক্রম তৈরি করুন এবং এগুলি একটি নতুন আইডি কলাম তৈরি করে কোয়েরি চালায়।

আরও এখানে: http://www.postgresql.org/docs/8.4/static/sql-createsequence.html


4

সেরা বিকল্পটি হল ইউইউডি বা জিইউডি। তারা এই কারণেই নির্মিত হয়েছে, বিশ্বব্যাপী অনন্য যে কোনও সারণীই হোক না কেন কুশ্রী? হ্যাঁ তবে তারা এই পরিস্থিতির জন্য সেরা।

Https://stackoverflow.com/questions/294933/generate-unique-id-to-share-with-mpleple-tables-sql-2008 দেখুন

আমি এমন পদ্ধতিগুলি দেখেছি যেখানে লোকেরা আইডি তৈরির জন্য টেবিল থেকে ডেটা ব্যবহার করে যেমন কল 1 + কোথাও কোথাও + কল 2, আমি সত্যিই এর বিপরীতে লিখিত হই ( এখানে দেখুন )। বুদ্ধিমান আইডি সত্যই খারাপ ধারণা।


0

আরে

আপনি বড় টেবিল থেকে আইডিটি কেন না এবং পরিবর্তে স্থানিক টেবিলগুলিতে রাখেন না?

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

/ Nicklas


হাই নিক্লাস, আমি সেভাবে এটি করতে পারি না কারণ আমার স্থানিক বৈশিষ্ট্যগুলির মধ্যে একটি বৃহত্তর টেবিলের 1 বা একাধিক রেকর্ডের সাথে সম্পর্কিত হতে পারে
Ando
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.