ಸಾಮಾನ್ಯೀಕರಣವನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಟ್ರಾನ್ಸಿಟಿವ್ ಅವಲಂಬನೆಗಳನ್ನು ತಪ್ಪಿಸಿ
ಒಂದು ದತ್ತಸಂಚಯದಲ್ಲಿ ಸಂವಹನ ಅವಲಂಬನೆಯು ಒಂದು ಕಾರ್ಯಕಾರಿ ಅವಲಂಬನೆಯನ್ನು ಉಂಟುಮಾಡುವ ಒಂದೇ ಕೋಷ್ಟಕದಲ್ಲಿನ ಮೌಲ್ಯಗಳ ನಡುವಿನ ಪರೋಕ್ಷ ಸಂಬಂಧವಾಗಿದೆ. ಮೂರನೆಯ ಸಾಧಾರಣ ಫಾರ್ಮ್ (3NF) ನ ಸಾಮಾನ್ಯೀಕರಣದ ಗುಣಮಟ್ಟವನ್ನು ಸಾಧಿಸಲು, ನೀವು ಯಾವುದೇ ಸಂವಹನ ಅವಲಂಬನೆಯನ್ನು ತೊಡೆದುಹಾಕಬೇಕು.
ಅದರ ಸ್ವಭಾವದಿಂದ, ಒಂದು ಸಾಂದರ್ಭಿಕ ಅವಲಂಬನೆಯು ಅವುಗಳ ನಡುವೆ ಕ್ರಿಯಾತ್ಮಕ ಅವಲಂಬನೆಯನ್ನು ಹೊಂದಿರುವ ಮೂರು ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು (ಅಥವಾ ಡೇಟಾಬೇಸ್ ಕಾಲಮ್ಗಳು) ಅಗತ್ಯವಿದೆ, ಅಂದರೆ ಮಧ್ಯಂತರ ಅಂಕಣ ಸಿ ಮೂಲಕ ಅಂಕಣದಲ್ಲಿ ಅಂಕಣ A ಅವಲಂಬಿಸಿರುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದೆಂದು ನೋಡೋಣ.
ಟ್ರಾನ್ಸಿಟಿವ್ ಡಿಪೆಂಡೆನ್ಸಿ ಉದಾಹರಣೆ
AUTHORS
Author_ID | ಲೇಖಕ | ಪುಸ್ತಕ | ಲೇಖಕ_ರಾಷ್ಟ್ರೀಯತೆ |
---|---|---|---|
Auth_001 | ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ | ಎಂಡರ್ಸ್ ಗೇಮ್ | ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ |
Auth_001 | ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ | ಎಂಡರ್ಸ್ ಗೇಮ್ | ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ |
Auth_002 | ಮಾರ್ಗರೆಟ್ ಅಟ್ವುಡ್ | ಹ್ಯಾಂಡ್ಮೇಡ್ಸ್ ಟೇಲ್ | ಕೆನಡಾ |
ಮೇಲಿನ AUTHORS ಉದಾಹರಣೆಯಲ್ಲಿ:
- ಪುಸ್ತಕ → ಲೇಖಕ : ಇಲ್ಲಿ, ಪುಸ್ತಕ ಗುಣಲಕ್ಷಣ ಲೇಖಕ ಗುಣಲಕ್ಷಣವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ನಿಮಗೆ ಪುಸ್ತಕದ ಹೆಸರು ತಿಳಿದಿದ್ದರೆ, ನೀವು ಲೇಖಕರ ಹೆಸರನ್ನು ಕಲಿಯಬಹುದು. ಆದಾಗ್ಯೂ, ಲೇಖಕರು ಪುಸ್ತಕವನ್ನು ನಿರ್ಧರಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಲೇಖಕರು ಬಹು ಪುಸ್ತಕಗಳನ್ನು ಬರೆಯಬಹುದು. ಉದಾಹರಣೆಗೆ, ಲೇಖಕರ ಹೆಸರು ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ ತಿಳಿದಿರುವ ಕಾರಣ, ನಾವು ಇನ್ನೂ ಪುಸ್ತಕದ ಹೆಸರನ್ನು ತಿಳಿದಿಲ್ಲ.
- ಲೇಖಕ → Author_Nationality : ಅಂತೆಯೇ, ಲೇಖಕ ಗುಣಲಕ್ಷಣ Author_Nationality ನಿರ್ಧರಿಸುತ್ತದೆ, ಆದರೆ ಇತರ ರೀತಿಯಲ್ಲಿ ಸುಮಾರು; ರಾಷ್ಟ್ರೀಯತೆಯು ನಾವು ಲೇಖಕರನ್ನು ನಿರ್ಣಯಿಸಬಹುದೆಂದು ಅರ್ಥವಲ್ಲ ಎಂದು ನಾವು ತಿಳಿದಿದ್ದೇವೆ.
ಆದರೆ ಈ ಕೋಷ್ಟಕವು ಒಂದು ಸಂವಹನ ಅವಲಂಬನೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ:
- ಪುಸ್ತಕ → ಲೇಖಕ_ರಾಷ್ಟ್ರೀಯತೆ: ನಾವು ಪುಸ್ತಕದ ಹೆಸರನ್ನು ತಿಳಿದಿದ್ದರೆ, ನಾವು ಲೇಖಕ ಕಾಲಮ್ ಮೂಲಕ ರಾಷ್ಟ್ರೀಯತೆಯನ್ನು ನಿರ್ಧರಿಸಬಹುದು.
ಟ್ರಾನ್ಸಿಟಿವ್ ಡಿಪೆಂಡೆನ್ಸಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು
ಮೂರನೆಯ ಸಾಧಾರಣ ಫಾರ್ಮ್ ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ಟ್ರಾನ್ಸಿಟಿವ್ ಅವಲಂಬನೆಯನ್ನು ತೆಗೆದುಹಾಕೋಣ.
ಲೇಖಕರ ಕೋಷ್ಟಕದಿಂದ ಪುಸ್ತಕದ ಕಾಲಮ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವ ಮೂಲಕ ಮತ್ತು ಪ್ರತ್ಯೇಕ ಪುಸ್ತಕಗಳ ಪಟ್ಟಿಯನ್ನು ರಚಿಸುವ ಮೂಲಕ ನಾವು ಪ್ರಾರಂಭಿಸಬಹುದು:
ಪುಸ್ತಕಗಳು
Book_ID | ಪುಸ್ತಕ | Author_ID |
---|---|---|
ಬುಕ್_001 | ಎಂಡರ್ಸ್ ಗೇಮ್ | Auth_001 |
ಬುಕ್_001 | ಮನಸ್ಸಿನ ಮಕ್ಕಳು | Auth_001 |
ಬುಕ್_002 | ಹ್ಯಾಂಡ್ಮೇಡ್ಸ್ ಟೇಲ್ | Auth_002 |
AUTHORS
Author_ID | ಲೇಖಕ | ಲೇಖಕ_ರಾಷ್ಟ್ರೀಯತೆ |
---|---|---|
Auth_001 | ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ | ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ |
Auth_002 | ಮಾರ್ಗರೆಟ್ ಅಟ್ವುಡ್ | ಕೆನಡಾ |
ಇದನ್ನು ಸರಿಪಡಿಸಲು ಮಾಡಿದ್ದೀರಾ? ಈಗ ನಮ್ಮ ಅವಲಂಬನೆಗಳನ್ನು ನೋಡೋಣ:
ಪುಸ್ತಕಗಳ ಪಟ್ಟಿ :
- Book_ID → ಪುಸ್ತಕ: ಬುಕ್ ಪುಸ್ತಕದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ.
- ಈ ಕೋಷ್ಟಕದಲ್ಲಿ ಯಾವುದೇ ಅವಲಂಬನೆಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ, ಆದ್ದರಿಂದ ನಾವು ಸರಿ. ವಿದೇಶಿ ಕೀಲಿ Author_ID ಈ ಟೇಬಲ್ ಅನ್ನು AUTHORS ಟೇಬಲ್ಗೆ ಅದರ ಪ್ರಾಥಮಿಕ ಕೀಲಿ Author_ID ಮೂಲಕ ಲಿಂಕ್ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಸಂಬಂಧಿಕ ದತ್ತಸಂಚಯಗಳ ಒಂದು ಪ್ರಮುಖ ವಿನ್ಯಾಸವಾದ ಟ್ರಾನ್ಸಿಟಿವ್ ಅವಲಂಬನೆಯನ್ನು ತಪ್ಪಿಸಲು ನಾವು ಸಂಬಂಧವನ್ನು ರಚಿಸಿದ್ದೇವೆ.
AUTHORS ಟೇಬಲ್ :
- Author_ID → ಲೇಖಕ: ಲೇಖಕ Author_ID ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ.
- ಲೇಖಕ → Author_Nationality: ರಾಷ್ಟ್ರೀಯತೆಯನ್ನು ಲೇಖಕರಿಂದ ನಿರ್ಧರಿಸಬಹುದು.
- Author_ID → Author_Nationality: ಲೇಖಕ ಗುಣಲಕ್ಷಣದ ಮೂಲಕ ರಾಷ್ಟ್ರೀಯತೆಯನ್ನು AUTH_ID ನಿಂದ ನಿರ್ಧರಿಸಬಹುದು. ನಾವು ಇನ್ನೂ ಒಂದು ಸಂವಹನ ಅವಲಂಬನೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ.
ಈ ಡೇಟಾವನ್ನು ಸಾಮಾನ್ಯಗೊಳಿಸಲು ನಾವು ಮೂರನೇ ಕೋಷ್ಟಕವನ್ನು ಸೇರಿಸಬೇಕಾಗಿದೆ:
COUNTRIES
Country_ID | ದೇಶ |
---|---|
Coun_001 | ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ |
ಕೌಂಟರ್_002 | ಕೆನಡಾ |
AUTHORS
Author_ID | ಲೇಖಕ | Country_ID |
---|---|---|
Auth_001 | ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ | Coun_001 |
Auth_002 | ಮಾರ್ಗರೆಟ್ ಅಟ್ವುಡ್ | ಕೌಂಟರ್_002 |
ಈಗ ನಾವು ಮೂರು ಕೋಷ್ಟಕಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಕೋಷ್ಟಕಗಳ ನಡುವೆ ಲಿಂಕ್ ಮಾಡಲು ವಿದೇಶಿ ಕೀಲಿಗಳನ್ನು ಬಳಸುತ್ತೇವೆ:
- AUTHORS ಟೇಬಲ್ನಲ್ಲಿನ ಲೇಖಕರ ಪುಸ್ತಕವನ್ನು ಬುಕ್ ಟೇಬಲ್ನ ವಿದೇಶಿ ಕೀ Author_ID ಲಿಂಕ್ ಮಾಡುತ್ತದೆ.
- AUTHORS ಟೇಬಲ್ನ ವಿದೇಶಿ ಕೀಲಿ Country_ID COUNTRIES ಟೇಬಲ್ನಲ್ಲಿರುವ ದೇಶಕ್ಕೆ ಲೇಖಕನನ್ನು ಸಂಪರ್ಕಿಸುತ್ತದೆ.
- ಈ ವಿನ್ಯಾಸದಲ್ಲಿ ಮತ್ತೊಂದು ಟೇಬಲ್ಗೆ ಲಿಂಕ್ ಮಾಡಬೇಕಾದ ಅಗತ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ COUNTRIES ಟೇಬಲ್ ವಿದೇಶಿ ಕೀಲಿಯನ್ನು ಹೊಂದಿಲ್ಲ.
ಏಕೆ ಟ್ರಾನ್ಸಿಟಿವ್ ಡಿಪೆಂಡೆನ್ಸಿಗಳು ಬ್ಯಾಡ್ ಡೇಟಾಬೇಸ್ ಡಿಸೈನ್
3 ಎನ್ಎಫ್ ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡಲು ಟ್ರಾನ್ಸಿಟಿವ್ ಡಿಪೆಂಡೆನ್ಸಿಗಳನ್ನು ತಪ್ಪಿಸುವ ಮೌಲ್ಯವೇನು? ನಮ್ಮ ಮೊದಲ ಟೇಬಲ್ ಅನ್ನು ಮತ್ತೊಮ್ಮೆ ಪರಿಗಣಿಸೋಣ ಮತ್ತು ಅದು ರಚಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ನೋಡೋಣ:
AUTHORS
Author_ID | ಲೇಖಕ | ಪುಸ್ತಕ | ಲೇಖಕ_ರಾಷ್ಟ್ರೀಯತೆ |
---|---|---|---|
Auth_001 | ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ | ಎಂಡರ್ಸ್ ಗೇಮ್ | ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ |
Auth_001 | ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್ | ಮನಸ್ಸಿನ ಮಕ್ಕಳು | ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ |
Auth_002 | ಮಾರ್ಗರೆಟ್ ಅಟ್ವುಡ್ | ಹ್ಯಾಂಡ್ಮೇಡ್ಸ್ ಟೇಲ್ | ಕೆನಡಾ |
ಈ ರೀತಿಯ ವಿನ್ಯಾಸವು ಡೇಟಾ ವೈಪರೀತ್ಯಗಳು ಮತ್ತು ಅಸ್ಥಿರತೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು, ಉದಾಹರಣೆಗೆ:
- ನೀವು "ಮೈಂಡ್ ಚಿಲ್ಡ್ರನ್" ಮತ್ತು "ಎಂಡರ್ಸ್ ಗೇಮ್" ಎಂಬ ಎರಡು ಪುಸ್ತಕಗಳನ್ನು ಅಳಿಸಿದರೆ, ನೀವು "ಓರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್" ಮತ್ತು ಅವನ ರಾಷ್ಟ್ರೀಯತೆ ಡೇಟಾಬೇಸ್ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಅಳಿಸಲ್ಪಡುತ್ತೀರಿ.
- ನೀವು ಪುಸ್ತಕವನ್ನು ಸೇರಿಸದ ಹೊರತು ನೀವು ಹೊಸ ಲೇಖಕನನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ; ಲೇಖಕರು ಇನ್ನೂ ಅಪ್ರಕಟಿತರಾಗಿದ್ದರೆ ಅಥವಾ ಅವರು ಬರೆದ ಪುಸ್ತಕದ ಹೆಸರನ್ನು ನಿಮಗೆ ತಿಳಿದಿಲ್ಲವೇ?
- "ಆರ್ಸನ್ ಸ್ಕಾಟ್ ಕಾರ್ಡ್" ತನ್ನ ಪೌರತ್ವವನ್ನು ಬದಲಾಯಿಸಿದರೆ, ಅವನು ಕಾಣಿಸಿಕೊಳ್ಳುವ ಎಲ್ಲಾ ದಾಖಲೆಗಳಲ್ಲಿ ನೀವು ಇದನ್ನು ಬದಲಾಯಿಸಬೇಕಾಗಿರುತ್ತದೆ. ಅದೇ ಲೇಖಕನೊಂದಿಗೆ ಅನೇಕ ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿರದಿದ್ದರೆ ನಿಖರವಾದ ಮಾಹಿತಿಯು ಕಾರಣವಾಗಬಹುದು: ಡೇಟಾ ಪ್ರವೇಶ ವ್ಯಕ್ತಿಗೆ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ ಅವನಿಗೆ ಬಹು ದಾಖಲೆಗಳು ಮತ್ತು ಕೇವಲ ಒಂದು ದಾಖಲೆಯಲ್ಲಿ ಡೇಟಾವನ್ನು ಬದಲಾಯಿಸುವುದು ಏನು?
- ಲೇಖಕರನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಅಳಿಸದೆ ನೀವು "ಹ್ಯಾಂಡ್ಮಯಿಡ್ಸ್ ಟೇಲ್" ಎಂಬ ಪುಸ್ತಕವನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಸಾಮಾನ್ಯೀಕರಣ ಏಕೆ, ಮತ್ತು ಸಂವಹನ ಅವಲಂಬನೆಗಳನ್ನು ತಪ್ಪಿಸುವುದು, ಡೇಟಾವನ್ನು ರಕ್ಷಿಸುವುದು ಮತ್ತು ಸ್ಥಿರತೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಕೆಲವು ಕಾರಣಗಳು.