Бир маалымат базасы менен жекеме-жеке көп мамилелер

Бир бирөө көп үчүн бир маалыматтар базасына байланыш дасторкону ар бир рекорддук стол B көп шилтемеленген жазуулары бар мүмкүн болгон кырдаалда келип чыгат, ал эми стол B ар бир рекорддук стол A. бир гана тиешелүү жазуу болушу мүмкүн бир көпкө бир катышы менен маалыматтар базасын таралган мамиледеги базасын дизайн жана жакшы үлгүсүн жүрөгү болуп саналат.

Алар үйрөткөн бир мугалим жана курстары ортосундагы мамилени алалы. Бир мугалим бир нече сабак болот, бирок, албетте, мугалим менен бирдей мамиледе болушубуз эмес.

Демек, мугалимдер столдун ар бир жазуу үчүн курстар столдун көптөгөн жазуулар бар болушу мүмкүн. бир нече курстарга окутуучу: Бул бир жолу гана байланыш болуп саналат.

Эмне үчүн бири-менен-Көптөгөн мамиле түзүү маанилүү болуп саналат

бир-а-көп мамилелерди билдирет үчүн, бери дегенде эле, эки лоокту керек. эмне себептен экенин көрөлү.

Балким, биз окуткан атын жана курстарды жазып келген кайсы бир Мугалимдер үстөл жараткан. Биз бул сыяктуу, аны иштеп чыгуу үчүн:

Мугалимдер жана курстар
Teacher_ID Мугалимдин аты Сабактын
Teacher_001 Кармен биология
Teacher_002 Veronica Math
Teacher_003 Хорхе Англисче

Кармен эки же андан көп сабак болсо, эмне кылышыбыз керек? Биз бул долбоор менен, эки жолу бар. Биз жөн гана Кармен учурдагы жазуу кошуу, бул сыяктуу:

Мугалимдер жана курстар
Teacher_ID Окутуучу _Name Сабактын
Teacher_001 Кармен Биология, математика
Teacher_002 Veronica Math
Teacher_003 Хорхе Англисче

киргизүү, өзгөртүү же маалыматты өчүрүүгө аракет кылып жатканда дизайн жогору, бирок, кийинчерээк маселелерге ийкемсиз жана алып келиши мүмкүн эмес.

Бул маалыматтарды издөө үчүн кыйын болуп калат. Бул долбоор базасы нормалдашуу, алгач бузган биринчи көнүмүшкө (1NF) ар бир стол клетка маалыматтардын бирдиктүү, дискреттик бөлүгүн болушу керек деп айтылат.

Дагы бир долбоор альтернатива жөн Кармен экинчи жазууну кошуу үчүн болушу мүмкүн:

Мугалимдер жана курстар
Окутуучу _ID Окутуучу _Name Сабактын
Teacher_001 Кармен биология
Teacher_001 Кармен Math
Teacher_002 Veronica Math
Teacher_003 Хорхе Англисче

бул кыскартуу жана негизсиз өтө чоң базасын Bloat мүмкүн киргизет, анткени бул 1NF карманат, бирок дагы эле начар базасын дизайн болуп саналат. Андан да маанилүүсү, бул маалыматтар туура келбей калышы мүмкүн. Мисалы, Кармен аты болсо, эмне өзгөрдү? маалыматтар менен иштеген кимдир бирөө бир протоколдо анын атын өзгөртүүгө жана экинчи жазылган, аны өзгөртүүгө мүмкүн. Бул долбоор Экинчи көнүмүшкө (2NF) 1NF, ошондой эле бир нече столдорду берилиштер Бул кербездик деп бөлүп, ошондой эле, алардын ортосундагы мамиле түзүп, бир нече жазууларды ашыкча качышыбыз керек карманат, бузат.

Бири-менен-топ менен болгон мамилелери бир базасын кантип дизайнынын

Мугалимдер жана курстар үстөлдүн бирөө көп үчүн мамилелерди ишке ашыруу үчүн, эки лоокту талкалап жана колдонуп, аларга шилтеме чет ачкычы .

Бул жерде биз Мугалимдер столго Сабактын мамыча алып кеткен:

Мугалимдер
Окутуучу _ID Окутуучу _Name
Teacher_001 Кармен
Teacher_002 Veronica
Teacher_003 Хорхе

Ал эми бул жерде курстар стол болуп саналат. анын сырткы ачкыч Белгилей кетсек, Teacher_ID, мугалимдер столдо бир мугалимге курсунан шилтемелер:

курстар
Course_ID Course_Name Teacher_ID
Course_001 биология Teacher_001
Course_002 Math Teacher_001
Course_003 Англисче Teacher_003

Биз чет өлкөлүк ачкычын колдонуу менен Мугалимдер жана курстар столдун ортосундагы мамиле иштелип чыккан.

Бул биология жана математика да Кармен жана Хорхе англис тилин окутат деп окутуп жатканын айтат.

Биз бул долбоор ар кандай мүмкүн болгон ашыкча баш тарткан кантип көрө алат, айрым мугалимдер бир нече курстарды үйрөтүүгө мүмкүнчүлүк берет, ошондой эле бир жолу мамилесин ишке ашырат.

Базасы, ошондой эле бир-бир мамиле жана көп менен мамилени ишке ашырууга болот.