ਆਧੁਨਿਕਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਟ੍ਰਾਂਜਿਟਿਵ ਨਿਰਭਰਤਾ ਤੋਂ ਬਚੋ
ਡੈਟਾਬੇਸ ਵਿੱਚ ਸੰਚਾਲਿਤ ਨਿਰਭਰਤਾ ਉਸੇ ਸਾਰਣੀ ਵਿਚਲੇ ਮੁੱਲਾਂ ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਅਸਿੱਧੇ ਸੰਕੇਤ ਹੈ ਜੋ ਇੱਕ ਕਾਰਜਸ਼ੀਲ ਨਿਰਭਰਤਾ ਦਾ ਕਾਰਨ ਬਣਦੀ ਹੈ. ਤੀਜੀ ਆਮ ਫ਼ਾਰਮ (3 ਐਨ ਐੱਫ) ਦੇ ਸਧਾਰਣ ਮੁਲਾਂਕਣ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਕਿਸੇ ਵੀ ਸੰਕੀਰਣ ਨਿਰਭਰਤਾ ਨੂੰ ਖ਼ਤਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ.
ਇਸਦੇ ਸੁਭਾਅ ਦੁਆਰਾ, ਇਕ ਸੰਕੀਰਣ ਨਿਰਭਰਤਾ ਲਈ ਤਿੰਨ ਜਾਂ ਜਿਆਦਾ ਗੁਣਾਂ (ਜਾਂ ਡੇਟਾਬੇਸ ਕਾਲਮ) ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜਿਨ੍ਹਾਂ ਦੇ ਵਿਚਕਾਰ ਫੰਕਸ਼ਨਲ ਨਿਰਭਰਤਾ ਹੁੰਦੀ ਹੈ, ਮਤਲਬ ਕਿ ਇੱਕ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ ਏ ਕਾਲਮ B ਤੇ ਇੱਕ ਵਿਚਕਾਰਲੇ ਕਾਲਮ ਸੀ ਦੁਆਰਾ ਨਿਰਭਰ ਕਰਦਾ ਹੈ.
ਆਓ ਦੇਖੀਏ ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ.
ਟਰਾਂਜ਼ਿਟਿਵ ਨਿਰਭਰਤਾ ਉਦਾਹਰਨ
ਲੇਖਕ
Author_ID | ਲੇਖਕ | ਬੁੱਕ | ਲੇਖਕ- ਕੌਮੀਅਤ |
---|---|---|---|
Auth_001 | ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ | ਐਂਡਰ ਦੀ ਗੇਮ | ਸੰਯੁਕਤ ਪ੍ਰਾਂਤ |
Auth_001 | ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ | ਐਂਡਰ ਦੀ ਗੇਮ | ਸੰਯੁਕਤ ਪ੍ਰਾਂਤ |
Auth_002 | ਮਾਰਗਰਟ ਐਟਵੁਡ | ਹੈਂਡਮਾਡਜ਼ ਟੇਲ | ਕੈਨੇਡਾ |
ਉਪਰੋਕਤ ਲੇਖਕ ਦੇ ਉਦਾਹਰਣ ਵਿੱਚ:
- ਬੁੱਕ → ਲੇਖਕ : ਇੱਥੇ, ਕਿਤਾਬ ਵਿਸ਼ੇਸ਼ਤਾ ਲੇਖਕ ਗੁਣ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ. ਜੇ ਤੁਸੀਂ ਕਿਤਾਬ ਦਾ ਨਾਮ ਜਾਣਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲੇਖਕ ਦਾ ਨਾਮ ਸਿੱਖ ਸਕਦੇ ਹੋ. ਹਾਲਾਂਕਿ, ਲੇਖਕ ਕਿਤਾਬ ਨੂੰ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰਦਾ, ਕਿਉਂਕਿ ਲੇਖਕ ਕਈ ਕਿਤਾਬਾਂ ਲਿਖ ਸਕਦਾ ਹੈ ਉਦਾਹਰਣ ਵਜੋਂ, ਅਸੀਂ ਲੇਖਕ ਦਾ ਨਾਂ ਔਰਸਨ ਸਕੋਟ ਕਾਰਡ ਜਾਣਦੇ ਹਾਂ, ਇਸ ਲਈ ਸਾਨੂੰ ਅਜੇ ਵੀ ਇਸ ਕਿਤਾਬ ਦੇ ਨਾਮ ਦਾ ਪਤਾ ਨਹੀਂ ਹੈ.
- ਲੇਖਕ → ਲੇਖਕ- ਕੌਮੀਅਤ : ਇਸੇ ਤਰ੍ਹਾਂ, ਲੇਖਕ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਲੇਖਕ ਦੀ ਅਥਾਰਟੀ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ, ਪਰ ਦੂਜੇ ਪਾਸੇ ਨਹੀਂ; ਕੇਵਲ ਕੌਮੀਅਤ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ ਅਸੀਂ ਲੇਖਕ ਦਾ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹਾਂ.
ਪਰ ਇਹ ਸਾਰਣੀ ਇਕ ਸੰਕੀਰਣ ਨਿਰਭਰਤਾ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰਦੀ ਹੈ:
- ਬੁੱਕ → ਲੇਖਕ- ਰਾਸ਼ਟਰੀਤਾ: ਜੇਕਰ ਅਸੀਂ ਕਿਤਾਬ ਦਾ ਨਾਮ ਜਾਣਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਲੇਖਕ ਕਾਲਮ ਦੇ ਰਾਹੀਂ ਕੌਮੀਅਤ ਦਾ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹਾਂ.
Transitive Dependencies ਤੋਂ ਬਚਣਾ
ਤੀਜੀ ਆਮ ਫ਼ਾਰਮ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, ਆਓ ਸੰਚਾਰਤਮਿਕ ਨਿਰਭਰਤਾ ਨੂੰ ਦੂਰ ਕਰੀਏ.
ਅਸੀਂ ਲੇਖਕਾਂ ਦੀ ਮੇਜ਼ ਤੋਂ ਕਿਤਾਬ ਕਾਲਮ ਨੂੰ ਹਟਾ ਕੇ ਅਤੇ ਇੱਕ ਵੱਖਰੀ ਬੁੱਕ ਟੇਬਲ ਬਣਾ ਕੇ ਅਰੰਭ ਕਰ ਸਕਦੇ ਹਾਂ:
ਕਿਤਾਬਾਂ
Book_ID | ਬੁੱਕ | Author_ID |
---|---|---|
ਬੁਕ_001 | ਐਂਡਰ ਦੀ ਗੇਮ | Auth_001 |
ਬੁਕ_001 | ਮਨ ਦੇ ਬੱਚੇ | Auth_001 |
ਬੁਕ_002 | ਹੈਂਡਮਾਡਜ਼ ਟੇਲ | Auth_002 |
ਲੇਖਕ
Author_ID | ਲੇਖਕ | ਲੇਖਕ- ਕੌਮੀਅਤ |
---|---|---|
Auth_001 | ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ | ਸੰਯੁਕਤ ਪ੍ਰਾਂਤ |
Auth_002 | ਮਾਰਗਰਟ ਐਟਵੁਡ | ਕੈਨੇਡਾ |
ਕੀ ਇਸ ਨੂੰ ਠੀਕ ਕੀਤਾ? ਆਓ ਹੁਣ ਸਾਡੀ ਨਿਰਭਰਤਾ ਦਾ ਮੁਲਾਂਕਣ ਕਰੀਏ:
ਬੁੱਕ ਸਾਰਣੀ :
- Book_ID → ਬੁਕ: ਕਿਤਾਬ ਬੁੱਕ_ ਆਈਡੀ ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ.
- ਇਸ ਸਾਰਣੀ ਵਿੱਚ ਕੋਈ ਹੋਰ ਨਿਰਭਰਤਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਅਸੀਂ ਠੀਕ ਹਾਂ. ਨੋਟ ਕਰੋ ਕਿ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ ਲੇਖਕ_ਆਈਡੀ ਇਸ ਸਾਰਣੀ ਨੂੰ ਇਸ ਦੇ ਪ੍ਰਾਇਮਰੀ ਕੁੰਜੀ ਲੇਖਕ_ਆਈਡੀ ਦੁਆਰਾ ਲੇਖਕਾਂ ਦੀ ਸਾਰਣੀ ਨਾਲ ਜੋੜਦਾ ਹੈ . ਅਸੀਂ ਇੱਕ ਸੰਕੀਰਣ ਨਿਰਭਰਤਾ ਤੋਂ ਬਚਣ ਲਈ ਇੱਕ ਸਬੰਧ ਬਣਾਇਆ ਹੈ, ਰਿਲੇਸ਼ਨਲ ਡੈਟਾਬੇਸ ਦਾ ਇੱਕ ਮੁੱਖ ਡਿਜ਼ਾਇਨ.
ਲੇਖਕ ਦੀ ਸਾਰਣੀ :
- Author_ID → ਲੇਖਕ: ਲੇਖਕ Author_ID ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ.
- ਲੇਖਕ → ਲੇਖਕ- ਰਾਸ਼ਟਰੀਤਾ: ਰਾਸ਼ਟਰੀਅਤਾ ਲੇਖਕ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ.
- Author_ID → Author_Nationality: ਕੌਮੀਅਤ author_ID ਤੋਂ ਲੇਖਕ ਵਿਸ਼ੇਸ਼ਤਾ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ. ਸਾਡੇ ਕੋਲ ਅਜੇ ਵੀ ਇਕ ਸੰਕੀਰਣ ਨਿਰਭਰਤਾ ਹੈ.
ਸਾਨੂੰ ਇਸ ਡੇਟਾ ਨੂੰ ਆਮ ਬਣਾਉਣ ਲਈ ਇੱਕ ਤੀਜੀ ਸਾਰਣੀ ਜੋੜਨ ਦੀ ਲੋੜ ਹੈ:
ਦੇਸ਼
Country_ID | ਦੇਸ਼ |
---|---|
ਕਾਉਂਕ_001 | ਸੰਯੁਕਤ ਪ੍ਰਾਂਤ |
ਕਾਉਂ_002 | ਕੈਨੇਡਾ |
ਲੇਖਕ
Author_ID | ਲੇਖਕ | Country_ID |
---|---|---|
Auth_001 | ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ | ਕਾਉਂਕ_001 |
Auth_002 | ਮਾਰਗਰਟ ਐਟਵੁਡ | ਕਾਉਂ_002 |
ਹੁਣ ਸਾਡੇ ਕੋਲ ਤਿੰਨ ਟੇਬਲ ਹਨ, ਟੇਬਲਸ ਦੇ ਵਿੱਚਕਾਰ ਸਬੰਧ ਬਣਾਉਣ ਲਈ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀਆਂ ਦੀ ਵਰਤੋਂ:
- ਬੁੱਕ ਸਾਰਣੀ ਦੇ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ ਲੇਖਕ_ID ਨੇ AUTHORS ਸਾਰਣੀ ਵਿੱਚ ਇੱਕ ਲੇਖਕ ਨਾਲ ਇੱਕ ਕਿਤਾਬ ਜੋੜ ਦਿੱਤੀ ਹੈ.
- ਅਥੀਅਰਸ ਟੇਬਲ ਦੀ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ ਦੇਸ਼_ID COUNTRIES ਸਾਰਣੀ ਵਿੱਚ ਇੱਕ ਲੇਖਕ ਨਾਲ ਲਿੰਕ ਕਰਦੀ ਹੈ.
- COUNTRIES ਸਾਰਣੀ ਵਿੱਚ ਕੋਈ ਵਿਦੇਸ਼ੀ ਕੁੰਜੀ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇਸ ਡਿਜ਼ਾਇਨ ਵਿੱਚ ਕਿਸੇ ਹੋਰ ਸਾਰਣੀ ਨਾਲ ਲਿੰਕ ਕਰਨ ਦੀ ਕੋਈ ਲੋੜ ਨਹੀਂ ਹੈ.
ਕਿਉਂ ਟ੍ਰਾਂਜੈਂਸੀਵ ਨਿਰਭਰਤਾ ਗਲਤ ਡਾਟਾਬੇਸ ਡਿਜ਼ਾਇਨ ਹਨ
3 ਐਨਐਫ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਟਰਾਂਜ਼ਿਟਿਵ ਡਿਲਨਮੈਂਟਸ ਤੋਂ ਬਚਣ ਦਾ ਕੀ ਮੁੱਲ ਹੈ? ਆਓ ਆਪਾਂ ਆਪਣੀ ਪਹਿਲੀ ਸਾਰਣੀ ਨੂੰ ਫਿਰ ਵਿਚਾਰ ਕਰੀਏ ਅਤੇ ਦੇਖੀਏ ਕਿ ਇਸ ਨਾਲ ਪੈਦਾ ਹੋਏ ਮੁੱਦਿਆਂ ਬਾਰੇ
ਲੇਖਕ
Author_ID | ਲੇਖਕ | ਬੁੱਕ | ਲੇਖਕ- ਕੌਮੀਅਤ |
---|---|---|---|
Auth_001 | ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ | ਐਂਡਰ ਦੀ ਗੇਮ | ਸੰਯੁਕਤ ਪ੍ਰਾਂਤ |
Auth_001 | ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ | ਮਨ ਦੇ ਬੱਚੇ | ਸੰਯੁਕਤ ਪ੍ਰਾਂਤ |
Auth_002 | ਮਾਰਗਰਟ ਐਟਵੁਡ | ਹੈਂਡਮਾਡਜ਼ ਟੇਲ | ਕੈਨੇਡਾ |
ਇਸ ਕਿਸਮ ਦੀ ਡਿਜ਼ਾਈਨ ਡੇਟਾ ਇਨੋਮਿਨੀਜ਼ ਅਤੇ ਅਸੰਗਤੀ ਲਈ ਯੋਗਦਾਨ ਪਾ ਸਕਦੀ ਹੈ, ਉਦਾਹਰਣ ਲਈ:
- ਜੇ ਤੁਸੀਂ "ਬੱਚਿਆਂ ਦਾ ਮਨ" ਅਤੇ "ਐਂਡਰਸ ਗੇਮ" ਦੀਆਂ ਦੋ ਕਿਤਾਬਾਂ ਨੂੰ ਮਿਟਾ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲੇਖਕ "ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ" ਅਤੇ ਡਾਟਾਬੇਸ ਤੋਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਆਪਣੀ ਕੌਮੀਅਤ ਨੂੰ ਮਿਟਾ ਸਕਦੇ ਹੋ.
- ਤੁਸੀਂ ਡਾਟਾਬੇਸ ਨੂੰ ਨਵਾਂ ਲੇਖਕ ਨਹੀਂ ਜੋੜ ਸਕਦੇ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਕੋਈ ਕਿਤਾਬ ਨਹੀਂ ਜੋੜਦੇ; ਕੀ ਹੋਇਆ ਜੇ ਲੇਖਕ ਅਜੇ ਪ੍ਰਕਾਸ਼ਤ ਨਹੀਂ ਹੈ ਜਾਂ ਤੁਸੀਂ ਉਸ ਕਿਤਾਬ ਦਾ ਨਾਮ ਨਹੀਂ ਜਾਣਦੇ ਜਿਸ ਨੇ ਉਸ ਨੂੰ ਲੇਖਕ ਬਣਾਇਆ ਹੈ?
- ਜੇ "ਓਰਸਨ ਸਕੋਟ ਕਾਰਡ" ਨੇ ਆਪਣੀ ਨਾਗਰਿਕਤਾ ਬਦਲ ਦਿੱਤੀ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਉਸ ਸਾਰੇ ਰਿਕਾਰਡਾਂ ਵਿਚ ਬਦਲਣਾ ਪਏਗਾ, ਜਿਸ ਵਿਚ ਉਹ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ. ਉਸੇ ਲੇਖਕ ਦੇ ਨਾਲ ਕਈ ਰਿਕਾਰਡ ਰੱਖਣ ਨਾਲ ਗਲਤ ਜਾਣਕਾਰੀ ਹੋ ਸਕਦੀ ਹੈ: ਕੀ ਜੇਕਰ ਡਾਟਾ ਐਂਟਰੀ ਵਿਅਕਤੀ ਨੂੰ ਇਹ ਅਹਿਸਾਸ ਨਹੀਂ ਹੁੰਦਾ ਕਿ ਉਸ ਦੇ ਲਈ ਕਈ ਰਿਕਾਰਡ ਹਨ ਅਤੇ ਸਿਰਫ ਇੱਕ ਰਿਕਾਰਡ ਵਿੱਚ ਡਾਟਾ ਬਦਲਦਾ ਹੈ?
- ਤੁਸੀਂ ਲੇਖਕ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮਿਟਾਉਣ ਤੋਂ ਬਿਨਾਂ "ਹੈਂਡਮਾਡਜ਼ ਟੇਲ" ਵਰਗੇ ਕਿਸੇ ਕਿਤਾਬ ਨੂੰ ਨਹੀਂ ਮਿਟਾ ਸਕਦੇ.
ਇਹ ਕੁਝ ਕਾਰਨ ਹਨ, ਕਿਉਂ ਸਧਾਰਣ ਹੋਣਾ , ਅਤੇ ਸੰਕ੍ਰਮਣਕ ਨਿਰਭਰਤਾ ਤੋਂ ਬਚਣਾ, ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਅਤੇ ਇਕਸਾਰਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ.