मैं ऐसे ऐप पर काम कर रहा हूं जो स्मार्टकार्ड से डेटा एकत्र करता है। मैं कई ग्राहक खातों के लिए ऐप को वेब सेवा के रूप में चलाने में सक्षम होना चाहता हूं। सवाल यह है कि, क्या मुझे प्रत्येक खाते के लिए एक अलग डेटाबेस बनाना चाहिए या क्या मुझे एक ऐसे डेटाबेस को डिज़ाइन करना चाहिए जिसमें सभी खातों का डेटा हो? सबसे पहले, मैंने सोचा कि एक डेटाबेस एक स्पष्ट उत्तर था, लेकिन इसके परिणामस्वरूप AccountID
में केवल हर जगह, टेबल, इंडेक्स, बाधाओं, प्रश्नों, चेक आदि में उपयोग किया जाना चाहिए।अलग ग्राहक खातों के लिए एकल या अलग डेटाबेस?
इस ऐप में, ऐसा नहीं है डेटा के एक बाइट जिसे खातों के बीच साझा किया जाना है। ,
ALTER TABLE CardHolder ADD CONSTRAINT UQ_CardHolderName UNIQUE (CardHolderUniqueName);
ALTER TABLE SmartCard ADD CONSTRAINT UQ_CardName UNIQUE (CardUniqueName);
अब,
CREATE TABLE CardHolder (
CardHolderID int, -- primary key
CardHolderUniqueName nvarchar(30));
CREATE TABLE SmartCard (
SmartCardID int, -- primary key
CardHolderID int,
CardUniqueName nvarchar(30));
कि कुछ विशिष्टता की कमी में जोड़े अगर मैं एक डेटाबेस में सब कुछ डाल दिया:
पहले, आइए कैसे एक खाते के लिए एक अलग डेटाबेस लगेगा को देखो , इसका मतलब है कि कई खाते एक ही कार्डहोल्डर और स्मार्टकार्ड को संभाल सकते हैं, लेकिन खातों को एक दूसरे के डेटा को नहीं देखना चाहिए। इस वजह से, एक स्मार्टकार्ड एक खाते के भीतर अद्वितीय है, लेकिन पूरे डेटाबेस में नहीं। तो, हर बाधा एक ACCOUNTID,
CREATE TABLE CardHolder (
CardHolderID int, -- primary key
CardHolderUniqueName nvarchar(30),
AccountID int);
CREATE TABLE SmartCard (
SmartCardID int, -- primary key
CardHolderID int,
CardUniqueName nvarchar(30)
AccountID int);
ALTER TABLE CardHolder
ADD CONSTRAINT UQ_CardHolderName UNIQUE (AccountID, CardHolderUniqueName);
ALTER TABLE SmartCard
ADD CONSTRAINT UQ_CardName UNIQUE (AccountID, CardUniqueName);
वास्तविक DB में शामिल करना चाहिए, वहाँ (expirydate आदि आदि द्वारा लिस्टिंग के लिए) से अधिक टेबल, स्तंभों और कई अनुक्रमित का भार हो जाएगा और खाते के स्तंभ हर जगह शामिल किया जाना है ।
यह मेरे लिए थोड़ा सा झुका हुआ लगता है, पहले सभी खातों को एक डेटाबेस में डालकर, और फिर उन्हें प्रत्येक तालिका में खाता आईडी कॉलम और केवल हर बाधा और अनुक्रमणिका के द्वारा अलग करना। उपयोगकर्ताओं को अन्य खातों के डेटा तक पहुंचने के लिए मुझे कुछ प्रकार की पंक्ति स्तर सुरक्षा खोजने या आविष्कार करने की भी आवश्यकता होगी। तो, क्या मेरे पास प्रत्येक खाते के लिए एक अलग डेटाबेस बनाने के लिए एक वैध बहाना है, या "असली डीबी डिजाइनर" हमेशा एक ही डेटाबेस में सबकुछ रखते हैं?
उत्तर के रूप में चिह्नित किया गया, क्योंकि आपके लिंक ने मुझे सबसे अधिक जानकारी दी है। मैं अभी भी तय नहीं कर सकता कि क्या करना है। मैं कई किरायेदारों के लिए एक डीबी डिजाइन करना शुरू कर दूंगा, क्योंकि अलग-अलग डीबी में इसे बदलना आसान है, अगर मैं अपना दिमाग बदलता हूं, तो एक डीबी डिज़ाइन में पृथक डीबी को फिर से डिजाइन करना है। – Batibix
वह लिंक वास्तव में बहुत अच्छा था। मैंने बहुत कुछ सीखा। यह सास के निर्माण पर एक पुस्तक का हिस्सा होना चाहिए जो मैं शायद खरीदूँगा। – racl101
वास्तव में आप चाहते हैं कि आप उस लेख का मांस यहां पोस्ट करें, क्योंकि अब यह एक मृत उत्तर है जो लिंक-रोट के लिए धन्यवाद। –