শর্তাধীন বিদেশী মূল সম্পর্ক


14

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

                  Store
            /                \
  Employees                    \
                             TransactionalStores
                            /       |         \
                     Kiosks         |          BrickMortars
                                 Onlines

আমার কাছে বর্তমানে কর্মচারীর কাছ থেকে সঞ্চয় করার জন্য এফকে সম্পর্ক রয়েছে

ALTER TABLE Employees ADD CONSTRAINT Employee_Store
            FOREIGN KEY (TransStoreId)
            REFERENCES TransactionalStores(StoreId)

আমি শর্তযুক্ত যোগ করতে চাই:

WHERE TransactionalStores.storeType != 'ONLINE_TYPE'

এটি কি সম্ভব বা আমি অবশ্যই ট্রানজেকশনাল স্টোরগুলিকে দুটি নতুন উপ-টিপে (যেমন ফিজিকাল স্টোর এবং ভার্চুয়াল স্টোর) সাবক্লাস করতে পারি


উত্তর:


18

পররাষ্ট্র কী করতে তৈরি করা শর্তাধীন ... সাজানোর। আপনি প্রতিটি টেবিলের বিন্যাস প্রদর্শন করবেন না, সুতরাং এখানে আপনার সম্পর্কগুলি দেখানোর একটি সাধারণ নকশা রয়েছে:

create table TransactionalStores(
    ID        int   not null auto_increment,
    StoreType char  not null,
    ..., -- other data
    constraint CK_TransStoreType check( StoreType in( 'B', 'K', 'O' )),
    constraint PK_TransactionalStores primary key( ID ),
    constraint UQ_TransStoreTypes unique( ID, StoreType ) -- for FK references
);
create table Kiosks(
    ID         int   not null,
    StoreType  char  not null,
    ..., -- other Kiosk data
    constraint CK_KioskStoreType check( StoreType = 'K' ), -- kiosks only
    constraint PK_Kiosks primary key( ID, StoreType ),
    constraint FK_Kiosks_TransStores foreign key( ID, StoreType )
        references TransactionalStores( ID, StoreType )
);

অনলাইনস এবং ব্রিকমোটার্সগুলির একই বেসিক কাঠামো থাকবে তবে স্টোর টাইপগুলি কেবল 'ও' বা 'বি' হিসাবে উপযুক্ত হিসাবে সীমাবদ্ধ।

এখন আপনি অন্য সারণী থেকে ট্রানজেকশনাল স্টোরগুলিতে একটি রেফারেন্স চান (এবং এটির মাধ্যমে বিভিন্ন স্টোর টেবিলগুলিতে) তবে কিওস্কস এবং ব্রিকমার্টারের মধ্যে সীমাবদ্ধ। কেবলমাত্র পার্থক্যটি সীমাবদ্ধতায় থাকবে:

create table Employees(
    ID         int       not null,
    StoreID    int,
    StoreType  char,
    ..., -- other Employee data
    constraint PK_Employees primary key( ID ),
    constraint CK_Employees_StoreType check( coalesce( StoreType, 'X' ) <> 'O' )), -- Online not allowed
    constraint FK_Employees_TransStores foreign key( StoreID, StoreType )
        references TransactionalStores( ID, StoreType )
);

এই সারণীতে, এফকে রেফারেন্স স্টোরটাইপকে 'কে', 'ও' বা 'বি' হতে বাধ্য করে তবে ক্ষেত্রের সীমাবদ্ধতা এটিকে কেবল 'কে' বা 'বি' এর মধ্যে সীমাবদ্ধ করে।

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


9

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

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

এখানে চিত্র বর্ণনা লিখুন

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