मुझे अपने MSSQL डेटाबेस डिज़ाइन में समस्या हो रही है।

मेरे पास 2 टेबल थे जो इस तरह दिखते थे:

CREATE TABLE tenants 
(
    tenantId INT PRIMARY KEY,
    tenantName VARCHAR
)

CREATE TABLE users 
(
    userId INT PRIMARY KEY,
    userName VARCHAR,
    tenantId INT,
    FOREIGN KEY (tenantId) REFERENCES tentants(tenantId)
)

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

CREATE TABLE tenants 
(
    tenantId INT PRIMARY KEY,
    tenantGuid UNIQUEIDENTIFIER,
    tenantName VARCHAR
)

CREATE TABLE users 
(
    userId INT PRIMARY KEY,
    userGuid UNIQUEIDENTIFIER,
    userName VARCHAR,
    tenantGuid UNIQUEIDENTIFIER,
    FOREIGN KEY (tenantGuid) REFERENCES tentants(tenantGuid)
)

अब एंटिटी फ्रेमवर्क सभी रिश्तों को खारिज कर जंगली जा रहा है क्योंकि गाइड प्राथमिक कुंजी का हिस्सा नहीं हैं।

पुरानी पोस्टों पर मैंने पढ़ा है कि यह समर्थित नहीं होगा। क्या यह अभी भी समर्थित नहीं है?

मैं इसे हल करने के लिए कैसे समर्थन कर रहा हूं?

बहुत - बहुत धन्यवाद!

खराब स्वरूपण के लिए भी खेद है, संपादक मेरी लाइन ब्रेक का सम्मान नहीं करता है: /

सुमोन

1
soomon 22 नवम्बर 2017, 21:52

2 जवाब

सबसे बढ़िया उत्तर

मैं विशिष्टता के लिए केवल आईडी से GUID में स्विच करना चाहता था और तालिकाओं को बदल दिया।

अद्वितीयता सुनिश्चित करने के लिए आपको वास्तव में GUID पर स्विच करने की आवश्यकता नहीं है। जब तक वे आपकी प्राथमिक कुंजी के रूप में सेट हैं, तब तक आपकी आईडी अद्वितीय होने की गारंटी दी जाएगी (जो भी प्रकार वे हैं, पूर्णांक कहें)।

मैंने पढ़ा है कि प्रदर्शन कारणों से प्राथमिक कुंजी के रूप में GUID की अनुशंसा नहीं की जाती है। इसलिए मैंने आईडी रखीं

tenantGuid uniqueidentifier foreign key to tenants.tenantGuid

मान लें कि आप कुंजी के रूप में GUID का उपयोग करते समय 'जुड़ने' के प्रदर्शन के बारे में बात कर रहे हैं, तो आईडी को प्राथमिक कुंजी के रूप में रखने से कोई फर्क नहीं पड़ेगा क्योंकि GUID पर वैसे भी प्रश्न किए जाएंगे।

अब इकाई ढांचा जंगली हो रहा है, सभी रिश्तों को खारिज कर रहा है क्योंकि गाइड प्राथमिक कुंजी का हिस्सा नहीं हैं।

मैं इसे हल करने के लिए कैसे समर्थन कर रहा हूं?

मेरा मानना ​​​​है कि आप इसे हल नहीं करने से बेहतर हैं और इसके बजाय या तो अपने पिछले डेटाबेस डिज़ाइन पर वापस जाने के लिए चुनते हैं जो पूर्णांक आईडी का उपयोग करता है। या अंततः GUID को अपनी प्राथमिक कुंजी के रूप में उपयोग करें (प्रक्रिया में पूर्णांक आईडी को हटाकर)।

1
Jan Paolo Go 22 नवम्बर 2017, 22:15

यदि आप अभी भी हमें विशिष्ट पहचानकर्ता चाहते हैं, तो आपको नीचे दी गई दो बातों पर ध्यान देने की आवश्यकता है

Tenant.tenantGuid को UNIQUE KEY पर सेट करें और users.tenantGuid को उसी डेटा प्रकार के रूप में भी सेट करें

नीचे दी गई तालिकाओं को संशोधित करें

CREATE TABLE tenants (
    tenantId INT PRIMARY KEY,
    tenantGuid UNIQUEIDENTIFIER UNIQUE,
    tenantName VARCHAR
)

CREATE TABLE users (
    userId INT PRIMARY KEY,
    userGuid UNIQUEIDENTIFIER,
    userName VARCHAR,
    tenantGuid UNIQUEIDENTIFIER,
    FOREIGN KEY (tenantGuid) REFERENCES tenants(tenantGuid)
)

उम्मीद है इससे आपका काम बनेगा

0
Suraj KV 22 नवम्बर 2017, 22:32