ਇੱਕ ਡਾਟਾਬੇਸ ਵਿੱਚ ਇੱਕ -ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਸਬੰਧ ਉਦੋਂ ਹੁੰਦੇ ਹਨ ਜਦੋਂ ਟੇਬਲ ਏ ਵਿਚ ਹਰੇਕ ਰਿਕਾਰਡ ਟੇਬਲ ਬੀ ਵਿਚ ਬਹੁਤ ਸਾਰੇ ਲਿੰਕਡ ਰਿਕਾਰਡ ਰੱਖੇ ਜਾ ਸਕਦੇ ਹਨ, ਪਰ ਟੇਬਲ ਬੀ ਵਿਚ ਹਰੇਕ ਰਿਕਾਰਡ ਟੇਬਲ ਏ ਵਿਚ ਕੇਵਲ ਇਕ ਅਨੁਸਾਰੀ ਰਿਕਾਰਡ ਰੱਖ ਸਕਦਾ ਹੈ. ਇਕ ਇਕ ਤੋਂ ਦੂਜੇ ਸੰਬੰਧ ਇੱਕ ਡੈਟਾਬੇਸ ਸਭ ਤੋਂ ਆਮ ਰਿਲੇਸ਼ਨਲ ਡੈਟਾਬੇਸ ਡਿਜ਼ਾਈਨ ਹੈ ਅਤੇ ਵਧੀਆ ਡਿਜ਼ਾਈਨ ਦੇ ਦਿਲ ਵਿੱਚ ਹੈ.
ਇਕ ਸਿੱਖਿਅਕ ਅਤੇ ਉਹਨਾਂ ਸਿਖਿਆਰਾਂ ਦੇ ਰਿਸ਼ਤੇ ਬਾਰੇ ਸੋਚੋ ਜੋ ਉਹ ਸਿਖਾਉਂਦੇ ਹਨ. ਇਕ ਅਧਿਆਪਕ ਬਹੁ ਕੋਰਸ ਸਿਖਾ ਸਕਦਾ ਹੈ, ਪਰ ਕੋਰਸ ਦਾ ਅਧਿਆਪਕ ਨਾਲ ਇਕੋ ਜਿਹਾ ਰਿਸ਼ਤਾ ਨਹੀਂ ਹੋਵੇਗਾ.
ਇਸ ਲਈ, ਇਕ ਅਧਿਆਪਕ ਮੇਜ਼ ਵਿੱਚ ਹਰੇਕ ਰਿਕਾਰਡ ਲਈ, ਕੋਰਸ ਸਾਰਣੀ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਰਿਕਾਰਡ ਹੋ ਸਕਦੇ ਹਨ. ਇਹ ਇਕ-ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਰਿਸ਼ਤੇ ਹਨ: ਬਹੁ-ਕੋਰਸਾਂ ਲਈ ਇਕ ਅਧਿਆਪਕ.
ਇਕ-ਤੋਂ-ਕਈ ਰਿਸ਼ਤੇ ਸਥਾਪਿਤ ਕਰਨੇ ਮਹੱਤਵਪੂਰਨ ਕਿਉਂ ਹਨ?
ਇੱਕ-ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਰਿਸ਼ਤੇ ਨੂੰ ਦਰਸਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਘੱਟੋ ਘੱਟ ਦੋ ਟੇਬਲ ਲੋੜੀਂਦਾ ਹੈ. ਆਓ ਵੇਖੀਏ ਕਿਉਂ
ਸ਼ਾਇਦ ਅਸੀਂ ਇਕ ਅਧਿਆਪਕ ਟੇਬਲ ਬਣਾਇਆ ਹੈ ਜਿਸ ਵਿਚ ਅਸੀਂ ਨਾਮ ਅਤੇ ਸਿਖਲਾਈ ਵਾਲੇ ਕੋਰਸਾਂ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨਾ ਚਾਹੁੰਦੇ ਸੀ. ਅਸੀਂ ਇਸਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹਾਂ:
Teacher_ID | Teacher_Name | ਕੋਰਸ |
---|---|---|
ਟੀਚਰ_001 | ਕਾਰਮਨ | ਜੀਵ ਵਿਗਿਆਨ |
ਟੀਚਰ_002 | ਵੇਰੋਨਿਕਾ | ਮੈਥ |
Teacher_003 | ਜੋਰਜ | ਅੰਗਰੇਜ਼ੀ |
ਜੇ ਕਾਰਮਨ ਦੋ ਜਾਂ ਦੋ ਤੋਂ ਵੱਧ ਕੋਰਸ ਸਿਖਾਉਂਦਾ ਹੈ ਤਾਂ ਕੀ ਹੋਵੇਗਾ? ਸਾਡੇ ਕੋਲ ਇਸ ਡਿਜ਼ਾਈਨ ਦੇ ਦੋ ਵਿਕਲਪ ਹਨ. ਅਸੀਂ ਇਸ ਨੂੰ ਸਿਰਫ ਕਾਰਮਨ ਦੇ ਮੌਜੂਦਾ ਰਿਕਾਰਡ ਵਿੱਚ ਜੋੜ ਸਕਦੇ ਹਾਂ, ਇਸ ਤਰ੍ਹਾਂ:
Teacher_ID | ਟੀਚਰ _Name | ਕੋਰਸ |
---|---|---|
ਟੀਚਰ_001 | ਕਾਰਮਨ | ਬਾਇਓਲੋਜੀ, ਮੈਥ |
ਟੀਚਰ_002 | ਵੇਰੋਨਿਕਾ | ਮੈਥ |
Teacher_003 | ਜੋਰਜ | ਅੰਗਰੇਜ਼ੀ |
ਹਾਲਾਂਕਿ, ਉਪਰੋਕਤ ਡਿਜ਼ਾਈਨ ਅਢੁੱਕਵੀਂ ਹੈ ਅਤੇ ਡੇਟਾ ਨੂੰ ਸੰਮਿਲਿਤ ਕਰਨ, ਸੋਧਣ ਜਾਂ ਮਿਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਬਾਅਦ ਵਿੱਚ ਸਮੱਸਿਆਵਾਂ ਦਾ ਨਤੀਜਾ ਹੋ ਸਕਦਾ ਹੈ.
ਇਹ ਡਾਟਾ ਲੱਭਣਾ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦਾ ਹੈ. ਇਹ ਡਿਜ਼ਾਈਨ ਡਾਟਾਬੇਸ ਨਾਰਮੇਲਾਈਜੇਸ਼ਨ ਦੇ ਪਹਿਲੇ ਸਿਧਾਂਤ ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ, ਫਸਟ ਨਾਰਮਲ ਫਾਰਮ (1 ਐੱਨ ਐੱਫ) , ਜੋ ਦੱਸਦਾ ਹੈ ਕਿ ਹਰੇਕ ਸਾਰਣੀ ਸੈੱਲ ਵਿੱਚ ਡੇਟਾ ਦਾ ਇੱਕ ਸਿੰਗਲ, ਅਸਿੱਧਾ ਹਿੱਸਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ.
ਇਕ ਹੋਰ ਡਿਜ਼ਾਇਨ ਦੀ ਚੋਣ ਸ਼ਾਇਦ ਕਾਰਮਨ ਲਈ ਦੂਜੀ ਰਿਕਾਰਡ ਜੋੜਨੀ ਹੋ ਸਕਦੀ ਹੈ:
ਅਧਿਆਪਕ_ਆਈਡੀ | ਟੀਚਰ _Name | ਕੋਰਸ |
---|---|---|
ਟੀਚਰ_001 | ਕਾਰਮਨ | ਜੀਵ ਵਿਗਿਆਨ |
ਟੀਚਰ_001 | ਕਾਰਮਨ | ਮੈਥ |
ਟੀਚਰ_002 | ਵੇਰੋਨਿਕਾ | ਮੈਥ |
Teacher_003 | ਜੋਰਜ | ਅੰਗਰੇਜ਼ੀ |
ਇਹ 1NF ਦਾ ਪਾਲਣ ਕਰਦਾ ਹੈ ਪਰ ਅਜੇ ਵੀ ਡਾਟਾਬੇਸ ਡਿਜ਼ਾਈਨ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇਹ ਰਿਡੰਡਸੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਅਤੇ ਬੇਲੋੜੀਦਾ ਇੱਕ ਬਹੁਤ ਵੱਡਾ ਡਰਾਫਟ ਬਣਾ ਸਕਦਾ ਹੈ. ਵਧੇਰੇ ਮਹੱਤਵਪੂਰਨ, ਡਾਟਾ ਅਸੰਗਤ ਹੋ ਸਕਦਾ ਹੈ. ਮਿਸਾਲ ਲਈ, ਜੇ ਕਾਰਮਨ ਦਾ ਨਾਂ ਬਦਲਿਆ? ਡੈਟਾ ਨਾਲ ਕੰਮ ਕਰਨ ਵਾਲਾ ਕੋਈ ਵਿਅਕਤੀ ਉਸ ਦੇ ਨਾਮ ਨੂੰ ਇਕ ਰਿਕਾਰਡ ਵਿਚ ਅਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਦੂਜੀ ਰਿਕਾਰਡ ਵਿਚ ਇਸਨੂੰ ਅਪਡੇਟ ਕਰਨ ਲਈ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ. ਇਹ ਡਿਜ਼ਾਈਨ ਦੂਜੀ ਸਧਾਰਨ ਫਾਰਮ (2 ਐਨ ਐੱਫ) ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ, ਜੋ 1 ਐੱਨ ਐੱਫ ਦਾ ਪਾਲਣ ਕਰਦਾ ਹੈ ਅਤੇ ਡੇਟਾ ਦੇ ਸਬਸੈਟਾਂ ਨੂੰ ਬਹੁ ਸਾਰਣੀਆਂ ਵਿਚ ਵੱਖ ਕਰਕੇ ਅਤੇ ਉਹਨਾਂ ਵਿਚਾਲੇ ਸਬੰਧ ਬਣਾ ਕੇ ਕਈ ਰਿਕਾਰਡਾਂ ਦੀਆਂ ਬੇਲੋੜੀਆਂ ਨੂੰ ਰੋਕਣਾ ਵੀ ਚਾਹੀਦਾ ਹੈ.
ਇੱਕ-ਨਾਲ-ਕਈ ਰਿਸ਼ਤੇ ਨਾਲ ਇੱਕ ਡਾਟਾਬੇਸ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ
ਅਧਿਆਪਕਾਂ ਅਤੇ ਕੋਰਸ ਟੇਬਲ ਵਿਚ ਇਕ ਤੋਂ ਦੂਜੇ ਰਿਸ਼ਤੇ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ, ਅਸੀਂ ਟੇਬਲ ਨੂੰ ਦੋ ਵਿਚ ਤੋੜਦੇ ਹਾਂ ਅਤੇ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਹਨਾਂ ਨੂੰ ਜੋੜਦੇ ਹਾਂ.
ਇੱਥੇ, ਅਸੀਂ ਅਧਿਆਪਕ ਟੇਬਲ ਵਿੱਚ ਕੋਰਸ ਕਾਲਮ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਹੈ:
ਅਧਿਆਪਕ_ਆਈਡੀ | ਟੀਚਰ _Name |
---|---|
ਟੀਚਰ_001 | ਕਾਰਮਨ |
ਟੀਚਰ_002 | ਵੇਰੋਨਿਕਾ |
Teacher_003 | ਜੋਰਜ |
ਅਤੇ ਇੱਥੇ ਕੋਰਸ ਟੇਬਲ ਹੈ. ਨੋਟ ਕਰੋ ਕਿ ਉਸਦੀ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ, Teacher_ID, ਅਧਿਆਪਕ ਮੇਜ਼ ਵਿੱਚ ਇੱਕ ਅਧਿਆਪਕ ਨੂੰ ਇੱਕ ਕੋਰਸ ਜੋੜਦੀ ਹੈ:
ਕੋਰਸ_ਆਈਡੀ | Course_Name | Teacher_ID |
---|---|---|
ਕੋਰਸ_001 | ਜੀਵ ਵਿਗਿਆਨ | ਟੀਚਰ_001 |
ਕੋਰਸ_002 | ਮੈਥ | ਟੀਚਰ_001 |
Course_003 | ਅੰਗਰੇਜ਼ੀ | Teacher_003 |
ਅਸੀਂ ਇੱਕ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਧਿਆਪਕਾਂ ਅਤੇ ਕੋਰਸ ਸਾਰਣੀ ਵਿੱਚ ਇੱਕ ਰਿਸ਼ਤਾ ਵਿਕਸਿਤ ਕੀਤਾ ਹੈ.
ਇਹ ਸਾਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਬਾਇਓਲੋਜੀ ਅਤੇ ਮੈਥ ਦੋਨਾਂ ਨੂੰ ਕਾਰਮਨ ਦੁਆਰਾ ਪੜ੍ਹਾਇਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਜੋਰਜ ਇੰਗਲਿਸ਼ ਸਿਖਾਉਂਦਾ ਹੈ.
ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਕਿਵੇਂ ਇਹ ਡਿਜਾਈਨ ਕਿਸੇ ਵੀ ਸੰਭਾਵਿਤ redundancies ਤੋਂ ਬਚਦਾ ਹੈ, ਵਿਅਕਤੀਗਤ ਅਧਿਆਪਕਾਂ ਨੂੰ ਕਈ ਕੋਰਸ ਸਿਖਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਅਤੇ ਇੱਕ-ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਰਿਸ਼ਤੇ ਲਾਗੂ ਕਰਦਾ ਹੈ.
ਡੈਟਾਬੇਸ ਇੱਕ ਇਕ ਤੋਂ ਇਕ ਰਿਸ਼ਤਾ ਅਤੇ ਕਈ-ਤੋਂ-ਕਈ ਸਬੰਧਾਂ ਨੂੰ ਵੀ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਨ