लौकिक वैधता और प्राथमिक / विदेशी कुंजी संबंध


11

मैंने कई ओरेकल ट्यूटोरियल के माध्यम से पढ़ा है जो अस्थायी वैधता और समय की विशेषताएं दिखाते हैं। हालाँकि, जिन उदाहरणों को मैंने पढ़ा है, उनमें डेमो टेबल में इस्तेमाल की जाने वाली कोई प्राथमिक कुंजी नहीं है।

http://docs.oracle.com/cd/E16655_01/appdev.121/e17620/adfns_design.htm#ADFNS1005 http://www.oracle.com/webfolder/technetwork/tutorial/obe/db/12c/r1/ilm /temporal/temporal.html

क्या प्राथमिक कुंजियों को इन तालिकाओं में जोड़ा जाना चाहिए? मैं पूछ रहा हूं क्योंकि मैं सोच रहा हूं कि इन अस्थायी तालिकाओं में से एक को दूसरी तालिका द्वारा कैसे संदर्भित किया जाना चाहिए। क्या मैं एक अस्थायी तालिका से दूसरे में एक विदेशी कुंजी जोड़ सकता हूं?

यदि मैं एक pk / विदेशी कुंजी realtionship जोड़ता हूं, और फिर pk के साथ तालिका में संदर्भित संदर्भित करता हूं, तो fk अंक वाली तालिका एक रिकॉर्ड है जो अब प्रासंगिक नहीं है .... क्या अस्थायी डेटा सामान्य प्राथमिक कुंजी को तोड़ता है - विदेशी कुंजी रिश्तों? और यदि ऐसा है, तो यह प्रदर्शन को कैसे प्रभावित करता है, क्या मैं 'सामान्य कुंजी' के रूप में एक सामान्य कॉलम का उपयोग करता हूं और किसी क्वेरी में संदर्भित समय अवधि के लिए सही का चयन करता हूं?

क्या किसी को पता है या उसके पास कोई उदाहरण या ट्यूटोरियल है जो सामान्य या छद्म सामान्य pk / fk उपयोग के साथ अस्थायी डेटा दिखाता है?

धन्यवाद

जवाबों:


2

दुर्भाग्य से सभी RDBMS उत्पादों में SQL या इसके कार्यान्वयन वर्तमान में पूरी तरह से लौकिक संबंधों का समर्थन नहीं करते हैं।

केवल टेराडाटा और डीबी 2 में दो या अधिक स्तंभों में समय की कमी को लागू करने वाली कुछ विशेषताएं हैं।

मेरा उदाहरण:

सेट टेस्ट;

सृजन योग्य उत्पाद ( उत्पाद_ID पूर्ण
नहीं है,
अधिकता NVARCHAR (50),
प्राथमिक कुंजी ( उत्पाद_आईडी )
);

सृजन योग्य अभियान ( अभियान_ID पूर्ण
नहीं है,
उत्पाद_आईडी पूर्ण नहीं है,
मूल्य निर्धारित नहीं है ,
प्राथमिक कुंजी ( अभियान_आईडी )
)
;


वैकल्पिक टेबल अभियान ADD CONSTRAINT XFK_campaign_productid
विदेश कुंजी ( उत्पाद_आईडी ) संदर्भ उत्पाद ( उत्पाद_आईडी )
DELETE NO ACTION पर;

यदि आप अस्थायी कॉलम business_startdate और business_enddate और वैकल्पिक रूप से
transaction_starttime और transaction_endtime जोड़ते हैं , तो आप अब संदर्भात्मक अखंडता लागू नहीं कर सकते।

यदि आप इस तरह से एक बाधा को लागू करना चाहते हैं तो आपको ट्रिगर या संग्रहीत प्रक्रिया या अनुप्रयोग स्तर कोडिंग को लागू करना पड़ सकता है:

टेबल अभियान बनाएं (
CAMPAIGN_ID INT नहीं NULL,
product_id INT नहीं NULL,
business_startdate तारीख नहीं NULL,
business_enddate तारीख नहीं NULL,
transaction_starttime टाइमस्टैम्प नहीं NULL,
transaction_endtime टाइमस्टैम्प नहीं NULL,
कीमत दशमलव,
प्राथमिक कुंजी (CAMPAIGN_ID, business_startdate, transaction_starttime)
)
;

DB2 के लिए निम्नलिखित सिंटैक्स में एक अस्थायी प्राथमिक कुंजी बाधा मौजूद है:

क्रिएटिव टेबल अभियान ( अभियान_ID पूर्ण
नहीं है,
product_ID INT नहीं,
व्यावसायिक_स्टार्टडेट दिनांक नहीं, व्यवसाय_डेटडेट
दिनांक नहीं,
मूल्य DECIMAL,
PERIOD BUSINESS_TIME (business_startdate, business_enddate),
PRIMARY KEY (अभियान_ID
)
, BUS_ID


क्या आप दो या अधिक स्तंभों में समय की कमी को लागू करने वाली सुविधाओं पर एक लिंक प्रदान कर सकते हैं?
AK

@AlexKuznetsov यहाँ लिंक है ibm.com/developerworks/data/library/techarticle/...
विश्लेषक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.