एसक्यूएल डेटाबेस डिजाइन के लिए एक शुरुआती गाइड [बंद]


127

क्या आप एसक्यूएल समाधान डिजाइन करने के बारे में जानने के लिए एक अच्छा स्रोत जानते हैं?

मूल भाषा वाक्य रचना से परे, मुझे समझने में मदद के लिए कुछ ढूंढ रहा हूं:

  1. क्या तालिकाओं का निर्माण करना है और उन्हें कैसे लिंक करना है
  2. कैसे विभिन्न तराजू के लिए डिजाइन करने के लिए (एक विशाल वितरित वेबसाइट के लिए छोटे ग्राहक एपीपी)
  3. प्रभावी / कुशल / सुरुचिपूर्ण एसक्यूएल प्रश्न कैसे लिखें

जवाबों:


60

मैंने इस पुस्तक के साथ शुरू किया: रिलेशनल डेटाबेस डिज़ाइन स्पष्ट रूप से समझाया (डेटा मैनेजमेंट सिस्टम में मॉर्गन कॉफ़मैन सीरीज़) (पेपरबैक) जान एल। हेरिंगटन द्वारा और यह बहुत स्पष्ट और उपयोगी पाया गया

और जैसा कि आप इस गति के लिए उठते हैं एक अच्छा डेटाबेस सिस्टम था: एक व्यावहारिक दृष्टिकोण डिजाइन, कार्यान्वयन और प्रबंधन (अंतर्राष्ट्रीय कंप्यूटर विज्ञान श्रृंखला) (पेपरबैक)

मुझे लगता है कि SQL और डेटाबेस डिज़ाइन अलग (लेकिन पूरक) कौशल हैं।


1
शुरुआत डेटाबेस डिजाइन: नौसिखिया से व्यावसायिक - क्लेयर चर्चर तक?
उत्साही

40

मैंने इस लेख के साथ शुरुआत की

http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

यह एक संपूर्ण पुस्तक को पढ़ने की तुलना में बहुत संक्षिप्त है और यह डेटाबेस डिजाइन की मूल बातें (सामान्यीकरण, संबंधों के प्रकार) को बहुत अच्छी तरह से समझाता है।


इस गाइड को प्यार करो, धन्यवाद।
सुश्री

इस उत्तर में लिंक अब काम नहीं कर रहा है।
ग्रिजली पीक सॉफ्टवेयर

1
ऐसा लगता है कि लिंक फिर से काम कर रहा है।
14:85 पर user8576017

1
लिंक अब काम नहीं कर रहा है
jat255


28

अनुभव बहुत मायने रखता है, लेकिन टेबल डिज़ाइन के संदर्भ में आप बहुत कुछ सीख सकते हैं कि कैसे हाइबरनेट और ग्रेल्स जैसे ओआरएम यह देखने के लिए काम करते हैं कि वे चीजें क्यों करते हैं। के अतिरिक्त:

  1. विभिन्न प्रकार के डेटा को अलग रखें - अपने ऑर्डर टेबल में पते स्टोर न करें, उदाहरण के लिए अलग पते की तालिका में एक पते से लिंक करें।

  2. मैं व्यक्तिगत रूप से प्रत्येक टेबल पर एक पूर्णांक या लंबी सरोगेट कुंजी रखना पसंद करता हूं (जो डेटा रखता है, न कि विभिन्न तालिकाओं को एक साथ जोड़ता है, ई, जी, एम: एन रिश्तों) जो प्राथमिक कुंजी है।

  3. मुझे एक निर्मित और संशोधित टाइमस्टैम्प कॉलम भी पसंद है।

  4. सुनिश्चित करें कि किसी भी क्वेरी में आप "जहां कॉलम = वैल" करते हैं वह प्रत्येक कॉलम में एक इंडेक्स है। शायद डेटा प्रकार के लिए दुनिया में सबसे सही सूचकांक नहीं है, लेकिन कम से कम एक सूचकांक।

  5. अपनी विदेशी कुंजी सेट करें। अपनी वस्तु संरचना के आधार पर DELETE और MODIFY नियमों पर जहां या तो झरना, या अशक्त सेट करने के लिए प्रासंगिक है, इसलिए आपको अपने ऑब्जेक्ट ट्री के 'हेड' पर केवल एक बार डिलीट करने की आवश्यकता है स्वचालित रूप से हटा दिया गया)।

  6. यदि आप अपने कोड को संशोधित करना चाहते हैं, तो आप अपने DB स्कीमा को संशोधित करना चाहते हैं - उदाहरण के लिए, यह "ग्राहक" क्षेत्र है, यह "ऑर्डर" क्षेत्र है, और यह "उत्पाद" क्षेत्र है, और ज्वाइन / लिंक टेबल का उपयोग करें उनके बीच, भले ही वे 1: n संबंध हैं, और हो सकता है कि महत्वपूर्ण जानकारी की नकल करें (यानी, उत्पाद का नाम, कोड, मूल्य अपने order_details तालिका में डुप्लिकेट करें)। सामान्यीकरण पर पढ़ें।

  7. किसी और के ऊपर या कुछ के लिए बिल्कुल विपरीत की सिफारिश करेंगे: पी - कुछ चीजें करने के लिए कभी भी एक सही तरीका नहीं है एह!


1
ORM, आपके सभी बिंदु डेटाबेस विरोधी हैं ।
PerformanceDBA

1
अनुक्रमणिका को जोड़ने का मतलब हमेशा अधिक गति नहीं होता है। कभी-कभी वे वास्तव में प्रश्नों को धीमा कर देते हैं। यह वास्तव में क्वेरी पर निर्भर करता है और explain analyzeयदि कोई सूचकांक लाभ है तो आपको उनका परीक्षण करना चाहिए ।
ArashM



2

ये ऐसे प्रश्न हैं, जो मेरी राय में, विभिन्न डोमेन से अलग ज्ञान की आवश्यकता है।

  1. आपको बस पहले से पता नहीं चल सकता है कि "कौन-सी" तालिकाएँ बनानी हैं, आपको उस समस्या को जानना होगा जो आपको स्कीमा के अनुसार हल और डिजाइन करना है;
  2. यह डेटाबेस डिज़ाइन निर्णय और आपके डेटाबेस विक्रेता कस्टम क्षमताओं का मिश्रण है (यानी आपको अपने (r) dbms के प्रलेखन की जांच करनी चाहिए और अंततः स्केलिंग के लिए कुछ "टिप्स और ट्रिक्स" सीखना चाहिए), आपके dbms का कॉन्फ़िगरेशन भी महत्वपूर्ण है स्केलिंग (प्रतिकृति, डेटा विभाजन और इसी तरह);
  3. फिर से, लगभग हर rdbms SQL भाषा की एक विशेष "बोली" के साथ आता है, इसलिए यदि आप कुशल प्रश्न चाहते हैं तो आपको उस विशेष बोली --btw को सीखना होगा। शायद बहुत सुंदर क्वेरी लिखते हैं जो कुशल भी हैं एक बड़ी बात है: लालित्य और दक्षता अक्सर परस्पर विरोधी लक्ष्य होते हैं -

उस ने कहा, हो सकता है कि आप कुछ पुस्तकों को पढ़ना चाहते हों, व्यक्तिगत रूप से मैंने इस पुस्तक का उपयोग अपने डेटाबेस विश्वविद्यालय के पाठ्यक्रम में किया है (और एक सभ्य पाया, लेकिन मैंने इस क्षेत्र में अन्य पुस्तकें नहीं पढ़ी हैं, इसलिए मेरी सलाह है कि आप इसकी जांच करें डेटाबेस डिजाइन में कुछ अच्छी किताबें)।


2

जब से मैंने इसे पढ़ा है तब से कुछ समय हो गया है (इसलिए, मुझे यकीन नहीं है कि यह अभी भी कितना प्रासंगिक है), लेकिन मेरा स्मरण है कि जो सेलको की एसक्यूएल फॉर स्मार्टीज़ पुस्तक सुरुचिपूर्ण, प्रभावी और कुशल प्रश्न लिखने पर बहुत सारी जानकारी प्रदान करती है। ।


चौथा संस्करण 2010 अप टू डेट हो सकता है
रेले

1
सेलको पुस्तक त्रुटियों में एक अध्ययन है, और कोड को लागू करने की धारणा को आगे बढ़ाता है, जिसे डेटाबेस में लागू किया जाना चाहिए।
प्रदर्शन ६
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.