नॉर्मलाइज़्ड और डीनॉर्मलाइज़्ड डेटाबेस

डेटाबेस डिज़ाइन

Lis Sulmont

Curriculum Manager

बुक स्टोर उदाहरण पर लौटते हैं

डीनॉर्मलाइज़्ड: स्टार स्कीमा

$$

नॉर्मलाइज़्ड: स्नोफ्लेक स्कीमा

$$

डेटाबेस डिज़ाइन

डीनॉर्मलाइज़्ड क्वेरी

लक्ष्य: Vancouver में 2018 की Q4 में बिकी Octavia E. Butler की सभी किताबों की quantity निकालें

  SELECT SUM(quantity) FROM fact_booksales
    -- शहर पाने के लिए जॉइन
    INNER JOIN dim_store_star on fact_booksales.store_id = dim_store_star.store_id
    -- लेखक पाने के लिए जॉइन
    INNER JOIN dim_book_star on fact_booksales.book_id = dim_book_star.book_id
    -- वर्ष और क्वार्टर पाने के लिए जॉइन
    INNER JOIN dim_time_star on fact_booksales.time_id = dim_time_star.time_id
  WHERE 
    dim_store_star.city = 'Vancouver' AND dim_book_star.author = 'Octavia E. Butler' AND
    dim_time_star.year = 2018 AND dim_time_star.quarter = 4;
7600

कुल 3 joins

डेटाबेस डिज़ाइन

नॉर्मलाइज़्ड क्वेरी

SELECT
  SUM(fact_booksales.quantity)
FROM
  fact_booksales
  -- शहर पाने के लिए जॉइन
  INNER JOIN dim_store_sf ON fact_booksales.store_id = dim_store_sf.store_id
  INNER JOIN dim_city_sf ON dim_store_sf.city_id = dim_city_sf.city_id
  -- लेखक पाने के लिए जॉइन
  INNER JOIN dim_book_sf ON fact_booksales.book_id = dim_book_sf.book_id
  INNER JOIN dim_author_sf ON dim_book_sf.author_id = dim_author_sf.author_id
  -- वर्ष और क्वार्टर पाने के लिए जॉइन
  INNER JOIN dim_time_sf ON fact_booksales.time_id = dim_time_sf.time_id
  INNER JOIN dim_month_sf ON dim_time_sf.month_id = dim_month_sf.month_id
  INNER JOIN dim_quarter_sf ON dim_month_sf.quarter_id =  dim_quarter_sf.quarter_id
  INNER JOIN dim_year_sf ON dim_quarter_sf.year_id = dim_year_sf.year_id
डेटाबेस डिज़ाइन

नॉर्मलाइज़्ड क्वेरी (जारी)

WHERE
  dim_city_sf.city = `Vancouver`
  AND 
  dim_author_sf.author = `Octavia E. Butler`
  AND
  dim_year_sf.year = 2018 AND dim_quarter_sf.quarter = 4; 
sum
7600

कुल 8 joins

तो, हम डेटाबेस को नॉर्मलाइज़ क्यों करना चाहेंगे?

डेटाबेस डिज़ाइन

नॉर्मलाइज़ेशन स्पेस बचाता है

डीनॉर्मलाइज़्ड डेटाबेस data redundancy सक्षम करते हैं

डेटाबेस डिज़ाइन

नॉर्मलाइज़ेशन स्पेस बचाता है

नॉर्मलाइज़ेशन data redundancy हटाता है

डेटाबेस डिज़ाइन

नॉर्मलाइज़ेशन बेहतर डेटा इंटेग्रिटी सुनिश्चित करता है

$$

1. डेटा संगति लागू करता है

रेफरेंशियल इंटेग्रिटी के कारण नामकरण नियम मानने होते हैं, जैसे 'California', न कि 'CA' या 'california'

2. अपडेट, हटाना, और इंसर्शन अधिक सुरक्षित

कम data redundancy = बदलने के लिए कम रिकॉर्ड

3. एक्सटेंशन से रीडिज़ाइन आसान

छोटी टेबल्स को बढ़ाना बड़ी टेबल्स से आसान होता है

डेटाबेस डिज़ाइन

डेटाबेस नॉर्मलाइज़ेशन

फायदे

  • नॉर्मलाइज़ेशन data redundancy हटाता है: स्टोरेज बचेगा

  • बेहतर डेटा इंटेग्रिटी: डेटा सटीक और सुसंगत

नुकसान

  • जटिल क्वेरियाँ अधिक CPU मांगती हैं
डेटाबेस डिज़ाइन

OLTP और OLAP याद हैं?

OLTP

e.g., ऑपरेशनल डेटाबेस

आम तौर पर बहुत नॉर्मलाइज़्ड

  • लिखने-प्रधान
  • डेटा का तेज़ और सुरक्षित इंसर्शन प्राथमिकता

OLAP

e.g., डेटा वेयरहाउस

आम तौर पर कम नॉर्मलाइज़्ड

  • पढ़ने-प्रधान
  • एनालिटिक्स के लिए तेज़ क्वेरी प्राथमिकता
डेटाबेस डिज़ाइन

अभ्यास करते हैं!

डेटाबेस डिज़ाइन

Preparing Video For Download...