ਇੱਕ ਡਾਟਾਬੇਸ ਵਿੱਚ ਇਕ-ਨਾਲ-ਕਈ ਰਿਸ਼ਤੇ

ਇੱਕ ਡਾਟਾਬੇਸ ਵਿੱਚ ਇੱਕ -ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਸਬੰਧ ਉਦੋਂ ਹੁੰਦੇ ਹਨ ਜਦੋਂ ਟੇਬਲ ਏ ਵਿਚ ਹਰੇਕ ਰਿਕਾਰਡ ਟੇਬਲ ਬੀ ਵਿਚ ਬਹੁਤ ਸਾਰੇ ਲਿੰਕਡ ਰਿਕਾਰਡ ਰੱਖੇ ਜਾ ਸਕਦੇ ਹਨ, ਪਰ ਟੇਬਲ ਬੀ ਵਿਚ ਹਰੇਕ ਰਿਕਾਰਡ ਟੇਬਲ ਏ ਵਿਚ ਕੇਵਲ ਇਕ ਅਨੁਸਾਰੀ ਰਿਕਾਰਡ ਰੱਖ ਸਕਦਾ ਹੈ. ਇਕ ਇਕ ਤੋਂ ਦੂਜੇ ਸੰਬੰਧ ਇੱਕ ਡੈਟਾਬੇਸ ਸਭ ਤੋਂ ਆਮ ਰਿਲੇਸ਼ਨਲ ਡੈਟਾਬੇਸ ਡਿਜ਼ਾਈਨ ਹੈ ਅਤੇ ਵਧੀਆ ਡਿਜ਼ਾਈਨ ਦੇ ਦਿਲ ਵਿੱਚ ਹੈ.

ਇਕ ਸਿੱਖਿਅਕ ਅਤੇ ਉਹਨਾਂ ਸਿਖਿਆਰਾਂ ਦੇ ਰਿਸ਼ਤੇ ਬਾਰੇ ਸੋਚੋ ਜੋ ਉਹ ਸਿਖਾਉਂਦੇ ਹਨ. ਇਕ ਅਧਿਆਪਕ ਬਹੁ ਕੋਰਸ ਸਿਖਾ ਸਕਦਾ ਹੈ, ਪਰ ਕੋਰਸ ਦਾ ਅਧਿਆਪਕ ਨਾਲ ਇਕੋ ਜਿਹਾ ਰਿਸ਼ਤਾ ਨਹੀਂ ਹੋਵੇਗਾ.

ਇਸ ਲਈ, ਇਕ ਅਧਿਆਪਕ ਮੇਜ਼ ਵਿੱਚ ਹਰੇਕ ਰਿਕਾਰਡ ਲਈ, ਕੋਰਸ ਸਾਰਣੀ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਰਿਕਾਰਡ ਹੋ ਸਕਦੇ ਹਨ. ਇਹ ਇਕ-ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਰਿਸ਼ਤੇ ਹਨ: ਬਹੁ-ਕੋਰਸਾਂ ਲਈ ਇਕ ਅਧਿਆਪਕ.

ਇਕ-ਤੋਂ-ਕਈ ਰਿਸ਼ਤੇ ਸਥਾਪਿਤ ਕਰਨੇ ਮਹੱਤਵਪੂਰਨ ਕਿਉਂ ਹਨ?

ਇੱਕ-ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਰਿਸ਼ਤੇ ਨੂੰ ਦਰਸਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਘੱਟੋ ਘੱਟ ਦੋ ਟੇਬਲ ਲੋੜੀਂਦਾ ਹੈ. ਆਓ ਵੇਖੀਏ ਕਿਉਂ

ਸ਼ਾਇਦ ਅਸੀਂ ਇਕ ਅਧਿਆਪਕ ਟੇਬਲ ਬਣਾਇਆ ਹੈ ਜਿਸ ਵਿਚ ਅਸੀਂ ਨਾਮ ਅਤੇ ਸਿਖਲਾਈ ਵਾਲੇ ਕੋਰਸਾਂ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨਾ ਚਾਹੁੰਦੇ ਸੀ. ਅਸੀਂ ਇਸਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹਾਂ:

ਅਧਿਆਪਕ ਅਤੇ ਕੋਰਸ
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 ਤੋਂ ਬਚਦਾ ਹੈ, ਵਿਅਕਤੀਗਤ ਅਧਿਆਪਕਾਂ ਨੂੰ ਕਈ ਕੋਰਸ ਸਿਖਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਅਤੇ ਇੱਕ-ਨਾਲ-ਬਹੁਤ ਸਾਰੇ ਰਿਸ਼ਤੇ ਲਾਗੂ ਕਰਦਾ ਹੈ.

ਡੈਟਾਬੇਸ ਇੱਕ ਇਕ ਤੋਂ ਇਕ ਰਿਸ਼ਤਾ ਅਤੇ ਕਈ-ਤੋਂ-ਕਈ ਸਬੰਧਾਂ ਨੂੰ ਵੀ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹਨ