Дайындар базасындагы бирден көп мамилелер

Мазмуну:

Дайындар базасындагы бирден көп мамилелер
Дайындар базасындагы бирден көп мамилелер
Anonim

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

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

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

Image
Image

Бирден-көп мамилелердин мисалы

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

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

Эмне үчүн бир-көп мамилелерди түзүү маанилүү

Бирден көпкө мамилени көрсөтүү үчүн сизге кеминде эки таблица керек. Эмне үчүн экенин карап көрөлү.

Биринчи нормалдуу форма дизайнына кармануу

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

Мугалимдин_ID Мугалимдин_аты Курс
Мугалим_001 Кармен Биология
Мугалим_002 Вероника Математика
Мугалим_003 Хорхе Англисче

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

Мугалимдин_ID Мугалим_Аты-жөнү Курс
Мугалим_001 Кармен Биология, математика
Мугалим_002 Вероника Математика
Мугалим_003 Хорхе Англисче

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

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

Экинчи кадимки форма эрежеси

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

Мугалим_ID Мугалим_Аты-жөнү Курс
Мугалим_001 Кармен Биология
Мугалим_001 Кармен Математика
Мугалим_002 Вероника Математика
Мугалим_003 Хорхе Англисче

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

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

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

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

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

Бул жерде Мугалимдер таблицасындагы Курс тилкесин алып салдык:

Мугалим_ID Мугалим_Аты-жөнү
Мугалим_001 Кармен
Мугалим_002 Вероника
Мугалим_003 Хорхе

Бул жерде Курстар таблицасы. Анын чет өлкөлүк ачкычы, Teacher_ID Мугалимдер таблицасындагы курсту мугалим менен байланыштырарын эске алыңыз:

Курс_ID Курстун_аты Мугалимдин_ID
Курс_001 Биология Мугалим_001
Курс_002 Математика Мугалим_001
Курс_003 Англисче Мугалим_003

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

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

Сунушталууда: