ಒಂದು ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಒಂದರಿಂದ ಹಲವು ಸಂಬಂಧಗಳು

ಟೇಬಲ್ ಎ ಯಲ್ಲಿರುವ ಪ್ರತಿ ದಾಖಲೆಯು ಟೇಬಲ್ ಬಿ ಯಲ್ಲಿ ಅನೇಕ ಲಿಂಕ್ ರೆಕಾರ್ಡ್ಗಳನ್ನು ಹೊಂದಿರಬಹುದು, ಆದರೆ ಟೇಬಲ್ ಬಿ ಯಲ್ಲಿ ಪ್ರತಿ ದಾಖಲೆಯೂ ಟೇಬಲ್ ಎ ನಲ್ಲಿ ಒಂದೇ ಒಂದು ಅನುಕ್ರಮ ದಾಖಲೆಯನ್ನು ಹೊಂದಿರಬಹುದಾಗಿದ್ದಾಗ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಒಂದರಿಂದ ಹಲವು ಸಂಬಂಧಗಳು ಕಂಡುಬರುತ್ತವೆ. ಒಂದು ಡೇಟಾಬೇಸ್ ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾದ ಸಂಬಂಧಿತ ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸವಾಗಿದೆ ಮತ್ತು ಉತ್ತಮ ವಿನ್ಯಾಸದ ಹೃದಯಭಾಗದಲ್ಲಿದೆ.

ಒಬ್ಬ ಶಿಕ್ಷಕ ಮತ್ತು ಅವರು ಕಲಿಸುವ ಶಿಕ್ಷಣದ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಪರಿಗಣಿಸಿ. ಒಬ್ಬ ಶಿಕ್ಷಕನು ಅನೇಕ ಕೋರ್ಸ್ಗಳನ್ನು ಕಲಿಸಬಹುದು, ಆದರೆ ಕೋರ್ಸ್ ಶಿಕ್ಷಕನೊಂದಿಗಿನ ಅದೇ ಸಂಬಂಧವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ.

ಆದ್ದರಿಂದ, ಶಿಕ್ಷಕರ ದಾಖಲೆಯಲ್ಲಿ ಪ್ರತಿ ದಾಖಲೆಯಲ್ಲೂ, ಕೋರ್ಸೆಸ್ ಟೇಬಲ್ನಲ್ಲಿ ಅನೇಕ ದಾಖಲೆಗಳು ಇರಬಹುದಾಗಿರುತ್ತದೆ. ಇದು ಒಂದರಿಂದ ಹಲವು ಸಂಬಂಧ: ಅನೇಕ ಶಿಕ್ಷಕರಿಗೆ ಒಬ್ಬ ಶಿಕ್ಷಕ.

ಯಾಕೆ ಒಬ್ಬರಿಂದ ಅನೇಕ ಸಂಬಂಧಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದು ಮಹತ್ವದ್ದಾಗಿದೆ

ಒಂದಕ್ಕೊಂದು ಸಂಬಂಧವನ್ನು ಪ್ರತಿನಿಧಿಸಲು, ನಿಮಗೆ ಕನಿಷ್ಠ ಎರಡು ಕೋಷ್ಟಕಗಳು ಬೇಕಾಗುತ್ತವೆ. ಏಕೆ ನೋಡೋಣ.

ಪ್ರಾಯಶಃ ನಾವು ಶಿಕ್ಷಕರ ಹೆಸರುಗಳನ್ನು ರಚಿಸಿದ್ದೇವೆ, ಅದರಲ್ಲಿ ನಾವು ಹೆಸರು ಮತ್ತು ಕೋರ್ಸ್ಗಳನ್ನು ಕಲಿಸಲು ಬಯಸುತ್ತೇವೆ. ನಾವು ಅದನ್ನು ಹೀಗೆ ವಿನ್ಯಾಸಗೊಳಿಸಬಹುದು:

ಶಿಕ್ಷಕರು ಮತ್ತು ಕೋರ್ಸ್ಗಳು
Teacher_ID ಶಿಕ್ಷಕರ_ಹೆಸರು ಕೋರ್ಸ್
ಶಿಕ್ಷಕರ_001 ಕಾರ್ಮೆನ್ ಜೀವಶಾಸ್ತ್ರ
ಶಿಕ್ಷಕರ_002 ವೆರೋನಿಕಾ ಮಠ
ಶಿಕ್ಷಕರ_003 ಜಾರ್ಜ್ ಇಂಗ್ಲಿಷ್

ಕಾರ್ಮೆನ್ ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಕೋರ್ಸ್ಗಳನ್ನು ಕಲಿಸಿದರೆ ಏನು? ಈ ವಿನ್ಯಾಸದೊಂದಿಗೆ ನಮಗೆ ಎರಡು ಆಯ್ಕೆಗಳಿವೆ. ನಾವು ಇದನ್ನು ಕಾರ್ಮೆನ್ ಅವರ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ದಾಖಲೆಯಲ್ಲಿ ಸೇರಿಸಿಕೊಳ್ಳಬಹುದು:

ಶಿಕ್ಷಕರು ಮತ್ತು ಕೋರ್ಸ್ಗಳು
Teacher_ID ಶಿಕ್ಷಕರ _ಹೆಸರು ಕೋರ್ಸ್
ಶಿಕ್ಷಕರ_001 ಕಾರ್ಮೆನ್ ಬಯಾಲಜಿ, ಮಠ
ಶಿಕ್ಷಕರ_002 ವೆರೋನಿಕಾ ಮಠ
ಶಿಕ್ಷಕರ_003 ಜಾರ್ಜ್ ಇಂಗ್ಲಿಷ್

ಆದಾಗ್ಯೂ, ಮೇಲಿನ ವಿನ್ಯಾಸವು ಹೊಂದಿಕೊಳ್ಳುವುದಿಲ್ಲ ಮತ್ತು ಡೇಟಾವನ್ನು ಸೇರಿಸಲು, ಸಂಪಾದಿಸಲು ಅಥವಾ ಅಳಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.

ಇದು ಡೇಟಾವನ್ನು ಹುಡುಕಲು ಕಷ್ಟವಾಗುತ್ತದೆ. ಈ ವಿನ್ಯಾಸ ಡೇಟಾಬೇಸ್ ಸಾಮಾನ್ಯೀಕರಣದ ಮೊದಲ ತತ್ವವನ್ನು ಉಲ್ಲಂಘಿಸುತ್ತದೆ, ಮೊದಲ ಸಾಧಾರಣ ಫಾರ್ಮ್ (1NF) , ಇದು ಪ್ರತಿ ಟೇಬಲ್ ಕೋಶವು ಏಕೈಕ, ವಿಭಿನ್ನವಾದ ದತ್ತಾಂಶವನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ಹೇಳುತ್ತದೆ.

ಕಾರ್ಮೆನ್ಗಾಗಿ ಎರಡನೇ ದಾಖಲೆಯನ್ನು ಸರಳವಾಗಿ ಸೇರಿಸಲು ಇನ್ನೊಂದು ವಿನ್ಯಾಸ ಪರ್ಯಾಯವಾಗಿರಬಹುದು:

ಶಿಕ್ಷಕರು ಮತ್ತು ಕೋರ್ಸ್ಗಳು
ಶಿಕ್ಷಕರ _ ಐಡಿ ಶಿಕ್ಷಕರ _ಹೆಸರು ಕೋರ್ಸ್
ಶಿಕ್ಷಕರ_001 ಕಾರ್ಮೆನ್ ಜೀವಶಾಸ್ತ್ರ
ಶಿಕ್ಷಕರ_001 ಕಾರ್ಮೆನ್ ಮಠ
ಶಿಕ್ಷಕರ_002 ವೆರೋನಿಕಾ ಮಠ
ಶಿಕ್ಷಕರ_003 ಜಾರ್ಜ್ ಇಂಗ್ಲಿಷ್

ಇದು 1NF ಗೆ ಬದ್ಧವಾಗಿದೆ ಆದರೆ ಇನ್ನೂ ಕಳಪೆ ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸವಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಪುನರುಜ್ಜೀವನವನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ ಮತ್ತು ಅನಗತ್ಯವಾಗಿ ದೊಡ್ಡದಾದ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಉಬ್ಬಿಕೊಳ್ಳುತ್ತದೆ. ಹೆಚ್ಚು ಮುಖ್ಯವಾಗಿ, ಡೇಟಾ ಅಸ್ಥಿರವಾಗಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕಾರ್ಮೆನ್ ಹೆಸರನ್ನು ಬದಲಾಯಿಸಿದರೆ ಏನು? ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಯಾರಾದರೂ ತನ್ನ ಹೆಸರನ್ನು ಒಂದು ದಾಖಲೆಯಲ್ಲಿ ನವೀಕರಿಸಬಹುದು ಮತ್ತು ಎರಡನೇ ದಾಖಲೆಯಲ್ಲಿ ಅದನ್ನು ನವೀಕರಿಸಲು ವಿಫಲರಾಗಬಹುದು. ಈ ವಿನ್ಯಾಸವು ಎರಡನೇ ಸಾಮಾನ್ಯ ಫಾರ್ಮ್ (2NF) ವನ್ನು ಉಲ್ಲಂಘಿಸುತ್ತದೆ, ಇದು 1NF ಅನ್ನು ಅನುಸರಿಸುತ್ತದೆ ಮತ್ತು ಅನೇಕ ಕೋಷ್ಟಕಗಳ ಮರುಪರಿಚಯಗಳನ್ನು ಬಹು ಕೋಷ್ಟಕಗಳಾಗಿ ವಿಭಜಿಸುವ ಮೂಲಕ ಮತ್ತು ಅವುಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ರಚಿಸುವ ಮೂಲಕ ತಪ್ಪಿಸಬೇಕು.

ಒಂದರಿಂದ ಹಲವು ಸಂಬಂಧಗಳೊಂದಿಗೆ ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸ ಹೇಗೆ

ಶಿಕ್ಷಕರು ಮತ್ತು ಕೋರ್ಸ್ಗಳ ಕೋಷ್ಟಕದಲ್ಲಿ ಒಂದರಿಂದ ಹಲವು ಸಂಬಂಧವನ್ನು ಜಾರಿಗೆ ತರಲು, ನಾವು ಕೋಷ್ಟಕಗಳನ್ನು ಎರಡು ಆಗಿ ಮುರಿಯುತ್ತೇವೆ ಮತ್ತು ವಿದೇಶಿ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಅವುಗಳನ್ನು ಲಿಂಕ್ ಮಾಡುತ್ತೇವೆ.

ಇಲ್ಲಿ, ನಾವು ಶಿಕ್ಷಕರ ಮೇಜಿನ ಕೋರ್ಸ್ ಅಂಕಣವನ್ನು ತೆಗೆದುಹಾಕಿದ್ದೇವೆ:

ಶಿಕ್ಷಕರು
ಶಿಕ್ಷಕರ _ ಐಡಿ ಶಿಕ್ಷಕರ _ಹೆಸರು
ಶಿಕ್ಷಕರ_001 ಕಾರ್ಮೆನ್
ಶಿಕ್ಷಕರ_002 ವೆರೋನಿಕಾ
ಶಿಕ್ಷಕರ_003 ಜಾರ್ಜ್

ಮತ್ತು ಇಲ್ಲಿ ಕೋರ್ಸ್ಸ್ ಟೇಬಲ್ ಆಗಿದೆ. ಅದರ ವಿದೇಶಿ ಕೀಲಿ, Teacher_ID, ಶಿಕ್ಷಕರ ಮೇಜಿನ ಶಿಕ್ಷಕರಿಗೆ ಕೋರ್ಸ್ ಅನ್ನು ಲಿಂಕ್ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ:

ಕೋರ್ಸ್ಗಳು
ಕೋರ್ಸ್_ಐಡಿ ಕೋರ್ಸ್_ಹೆಸರು Teacher_ID
ಕೋರ್ಸ್_001 ಜೀವಶಾಸ್ತ್ರ ಶಿಕ್ಷಕರ_001
ಕೋರ್ಸ್_002 ಮಠ ಶಿಕ್ಷಕರ_001
ಕೋರ್ಸ್_003 ಇಂಗ್ಲಿಷ್ ಶಿಕ್ಷಕರ_003

ವಿದೇಶಿ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಶಿಕ್ಷಕರ ಮತ್ತು ಕೋರ್ಸ್ಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ನಾವು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇವೆ.

ಬಯಾಲಜಿ ಮತ್ತು ಮಠ ಎರಡೂ ಕಾರ್ಮೆನ್ನಿಂದ ಕಲಿಸಲ್ಪಟ್ಟಿವೆ ಮತ್ತು ಜಾರ್ಜ್ ಇಂಗ್ಲಿಷ್ ಭಾಷೆಯನ್ನು ಕಲಿಸುತ್ತಾನೆ ಎಂದು ಇದು ನಮಗೆ ಹೇಳುತ್ತದೆ.

ಈ ವಿನ್ಯಾಸವು ಯಾವುದೇ ಸಂಭವನೀಯ ಮರುಪರಿಚಯಗಳನ್ನು ಹೇಗೆ ತಪ್ಪಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ನೋಡಬಹುದು, ಪ್ರತ್ಯೇಕ ಶಿಕ್ಷಕರಿಗೆ ಬಹು ಕೋರ್ಸ್ಗಳನ್ನು ಕಲಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ ಮತ್ತು ಒಂದರಿಂದ ಹಲವು ಸಂಬಂಧಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಬಹುದು.

ಡೇಟಾಬೇಸ್ಗಳು ಒಂದು-ಟು-ಒನ್ ಸಂಬಂಧವನ್ನು ಮತ್ತು ಅನೇಕ-ಟು-ಸಂಬಂಧವನ್ನು ಕೂಡಾ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು.