একে একে একে সম্পর্কের প্রতি মনোনিবেশ না করা কি বোধগম্য?


12

যদি আমাদের টেবিল A ​​এর টেবিল বি এর সাথে একের একের সম্পর্ক থাকে তবে এগুলি কি আলাদা রাখার তা কি কখনও বুদ্ধি করে? বা এগুলি একক টেবিলের সাথে একত্রিত করতে কখনই ক্ষতি করে না? এই পরিস্থিতিগুলির মধ্যে (দুটি টেবিল বনাম একটি সংযুক্ত টেবিল) এর স্বাভাবিক ফর্ম (1NF, 2NF, 3NF, ইত্যাদি) এর সাথে সম্মতি দিয়ে কিছু প্রভাবিত করে?


5
আপনার অর্থ কী 1-থেকে -1 বা 1-থেকে-0-বা -1?
jpmc26

উত্তর:


30

হ্যাঁ, এটি আরও ভাল নকশা হতে পারে এমন অনেকগুলি কারণ রয়েছে।

আপনার একটি উত্তরাধিকার / সম্প্রসারণ সম্পর্ক থাকতে পারে, যেমন আপনার কোনও Userটেবিল এবং তারপরে একটি Administratorটেবিল থাকতে পারে যাতে আরও ক্ষেত্র রয়েছে। উভয় টেবিলের ব্যবহারকারীর আইডির প্রাথমিক কী থাকতে পারে (এবং তাই এর সাথে 1: 1 সম্পর্ক রয়েছে) তবে সমস্ত ব্যবহারকারীর Administratorটেবিলে কোনও রেকর্ড থাকবে না । আপনি যদি কোনও ওয়ার্কফ্লো সমর্থন করছেন, যেমন একটি ScheduledTaskটেবিল এবং CompletedTaskটেবিলের জন্য অনুরূপ কিছু প্রয়োজন হবে need

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

আপনি টেবিলগুলিতে আলাদা আলাদা অনুমতি চাইতে পারেন, যেমন UserএবংUserCredentials

আপনি বিভিন্ন ব্যাকআপ কৌশলগুলি পেতে চাইতে পারেন এবং তাই বিভিন্ন পার্টিশনে দুটি টেবিল স্থাপন করতে পারেন, যেমন TransactionএবংTransactionArchive

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


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

2
সম্মত ... আমি একটি বিস্তৃত তালিকার জন্য চেষ্টা করছি, প্রতিটি কারণে সম্পাদনা করছি না।
জন উ

কর্মপ্রবাহে আপনার পটভূমি কী? আপনার ব্যবহৃত নির্দিষ্ট সফটওয়্যার রয়েছে? আপনি কি নিজের ওয়ার্কফ্লো সিস্টেমটি রোল করেছেন?
রবার্ট হার্ভে

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

4
লিঙ্ক "রিলেশনাল ডাটাবেসে এক-থেকে-এক সম্পর্ক তখনই ঘটে যখন কোনও পিতা-মাতার রেকর্ড বা ক্ষেত্রের হয় শূন্য বা একটি শিশু রেকর্ড।"
জন উ

6

@ জন-উউ আরেকজনের দুর্দান্ত উত্তরে যুক্ত করা, অন্য কারণ হ'ল যখন আপনার কাছে একটি বিএলওবি ধরণের কলাম একটি ছবির মতো থাকে।

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


3

আপনি যখন সারণি বি-তে সম্পর্কিত রেকর্ডটি be চ্ছিক হতে চান তখন কেবল একের মধ্যে একটি সম্পর্ক সত্যই তা উপলব্ধি করতে পারে

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

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

type Transaction(The_Type: PaymentType := Cash) is record

    Amount: Integer;

    case The_Type is
        when Cash =>
            Discount: boolean;
        when Check =>
            CheckNumber: Positive;
        when Credit =>
            CardNumber: String(1..5);
            Expiration: String(1..5);
    end case;
end record;

যদি এটি alচ্ছিক হয় তবে এটি কীভাবে সমস্ত এক টেবিলের মধ্যে থাকা এবং কেবলমাত্র আপনার পছন্দসই কলামগুলি নির্বাচন করা থেকে আলাদা?
29 তম সালটশেকার

আপনি যদি প্রধান টেবিলে সেই অতিরিক্ত ক্ষেত্রগুলি রাখার জন্য ব্যয় করেন, এমনকি তাদের মধ্যে কিছু না থাকলেও। যদি আপনার বৈকল্পিক রেকর্ডে বেশ কয়েকটি টেবিল থাকে তবে আপনার একক টেবিলের মধ্যে 100 টি কলাম থাকতে পারে যার বেশিরভাগ সময় বেশিরভাগ সময় ব্যবহৃত হয় না।
রবার্ট হার্ভে

2

ব্যবসায়িক মডেলিংয়ে, দুটি এবং এ এবং বি সত্তা যা যৌক্তিকভাবে ব্যবসার দিক থেকে পৃথক পৃথক পৃথক টেবিলগুলিতে ম্যাপ করে।

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

আমার অভিজ্ঞতা অনুসারে, কোনও ব্যবসা বা ওও ডেটা মডেল তৈরি করার সময়, এই যৌক্তিক বিচ্ছেদ পারফরম্যান্স, স্বতন্ত্র সুরক্ষা বা পার্টিশনের মতো "শারীরিক" কারণে 1: 1 সম্পর্কের জন্য অনেক বেশি সাধারণ more


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