Връзка с много към много: пример в Access, в SQL. Как да направим много-към-много отношения?

Anonim

Във всички СУБД (системи за управление на бази данни) има няколко вида взаимоотношения между таблиците. Сред тях, едно-към-едно, едно към много отношения, много към едно (някои са склонни да идентифицират тези два вида в едно) и много-към-много отношения. Пример за последното, неговото обяснение и приложение в различни СУБД, като Access или SQL, ще бъдат обсъдени в тази статия.

дефиниция

Връзката от много към много се дефинира като съвпадение на всеки един от екземплярите на един от обектите на всички копия на другия. С други думи, всяко поле от първата (втора) таблица се свързва с всички полета от втората (първата) таблица.

Представената схема ясно показва същността на тази връзка.

Кога могат да се използват взаимоотношения много към много?

Пример за много-към-много отношения е група от ученици и група учители. Всеки ученик веднага се учи от няколко професора, които от своя страна дават лекции на няколко студенти. Картината показва разликата между едно-към-много и много-към-много отношения.

В съставянето на широкомащабни бази данни често са нужни много взаимоотношения, малки илюстративни примери обикновено се използват само за обучителни цели, но в действителност се оказва, че колкото повече са субектите в базата данни и колкото повече взаимоотношения са между тях, толкова по-вероятно е много-към-много.

Как да направим много-към-много отношения?

Примери за въпросното взаимоотношение ще бъдат добавени в хода на статията, но е важно не само да се разбере какво е то, но и как да се приложи. Подробностите за този процес са пряко зависими от базата данни, избрана за работата, докато принципът остава същият за всички.

Microsoft Access

Офис софтуерът от Microsoft е известен на пазара на софтуер от доста време. Той идва с текстов редактор Worfd, електронна таблица Excel процесор и други, включени в линията "офис". Можете да Достъп (чете като "аксесоари", буквален превод - "достъп") и купуват отделно от своите "колеги". Препоръчително е да закупите, разбира се, лицензиран софтуер, но за никого не е тайна колко пиратски опаковки могат да бъдат намерени в интернет под формата на обикновени файлове или дистрибуции на торенти. Microsoft Access е дори на разположение в преносима конструкция. Тя не изисква инсталация и специални умения за работа с компютър, най-добре е да се избере дали софтуерът няма да се използва непрекъснато и често.

От контекста е ясно, че Microsoft Access е система за управление на база данни. И един от най-популярните. Тя е релационна, което означава, че се основава на логически модел на данните, който в хода на своята работа се отнася до теорията на множествата и логиката на първия ред. Връзката „много към много“ в „Достъп“ (примери ще бъдат дадени по време на обяснението) се изпълнява много, много просто. Помислете за нея.

Има две таблици ..

За да не измисляме нищо ново, вземем вече споменатото, за да изясним връзката много към много, пример за учениците. Необходимо е да се създаде таблицата "Студенти" и таблицата "Учители". И в първия, и във втория от тях има първични ключове. За да обедините копия на тези две единици, се изисква и друга таблица, чиито полета са ключовете на първата и втората таблици.

Ако погледнем друг пример: да кажем играчите и отборите (като се има предвид, че поне един от играчите е играл за различни отбори, а всеки отбор има единадесет играчи), същността на изграждането на комуникация няма да се промени. Ще са необходими и три маси. От тях, "Футболисти" и "Екипи" като основен и един междинен.

Схема за данни

Връзките между таблиците в Microsoft Access се изпълняват чрез раздела Схеми за данни. Всички необходими обекти се добавят към появилия се панел (в нашия случай, всичките три таблици). Създаването на много-към-много отношения ще се случи чрез две едно-към-много отношения между основните ("Студенти" и "Учители") и междинна таблица. За да направите това, трябва да свържете съответните първични ключове.

Илюстрацията по-горе показва как изглежда раздела Схеми за данни (Relathionships). Броят на таблиците, добавени към панела, е неограничен. Мястото е напълно регулируемо от потребителя.

SQL

Проектирането на бази данни в SQL е по-трудна задача, отколкото в Access. Ако продуктът на Microsoft е напълно адаптиран към офисната среда, той има огромен и с всяко издание и актуализация, разширяем, функционален, но в същото време лесен за употреба интерфейс, а след това SQL е отделен непроцедурен език за програмиране, с който може да работи с бази данни. Известен софтуер за тази задача: Oracle MySQL и DB2 (популярна, но не уникална). Въпреки че всеки от тях има свои собствени тънкости и нюанси, езикът SQL ги обединява. След като се научили да работят с поне един от тях, ще бъде много по-лесно да се справим с другия.

Създаването, попълването и прякото въздействие върху вече съществуваща база данни в SQL е необходимо чрез специални кодове или скриптове. Въпреки това, тези, които вече са достигнали до раздела "Много-към-много комуникация", пример за които в този език за програмиране ще бъдат представени по-долу, трябва да познават поне основните команди и принципи за използване на SQL езика.

Принципът на създаване на много-към-много отношения

Дългото въведение би могло донякъде да смути и да "остави мъглата", но всъщност принципът на осъществяване на комуникацията остава същият. За да може типът отношения много-към-много да бъде реализиран на практика, не само в Access, но също и SQL, е необходимо първоначално да се създадат две основни таблици и едно междинно. Подобна е ситуацията с ключовете: основните обекти имат основните полета, всяка от които е записана в таблица с връзки. Което означава, че SQL връзката много към много не е коренно различна от Access.

Изпълнение на комуникацията

За да се реализира връзката много-към-много в SQL скриптове, се използват чужди ключове (FOREIGN KEY), които са подобни на оригиналните ключове в основните таблици. Те са написани заедно с всички полета, когато са създадени и / или редактирани.

Ролята на комуникацията много към много

Като цяло, връзките между единиците в базите данни се използват за целостта на информацията, съхранявана в тях. Само добре проектирана база данни с всички необходими връзки осигурява безопасно съхранение, използваемост и е структура, устойчива на външни влияния и промени. Обикновено, ако базата данни съдържа данни за цялата организация, компания или компания, тя съдържа много единици с различни инстанции.

А това означава, че при съставянето на схема за данни (в "Достъп") или при писане на скриптове (в "Oracle" или "DiBiTu") ще има поне една връзка много към много. Пример за SQl, често използван в обучението на курса "Организация на база данни" - база данни на King.

База данни на краля

Тази база данни за обучение е информация за краля. Сред таблиците:

  • служители на фирмата - съдържа кода на служителя, неговото фамилно име, собствено и средно начало (фокус върху чужди имена), както и кода на ръководителя и длъжността на служителя, датата на получаването му в дружеството, заплатата му и предписаната комисиона, кода на отдела;
  • отдели на корпорацията - сред полетата на таблицата има код и име на отдела, както и кода за неговото разполагане;
  • местоположение на отделите, което включва въвеждане на информация за кода на местоположението и името на града;
  • позиции в компанията - малка таблица с две полета на позиционния код и неговото официално наименование;
  • фирми-купувачи - полета: код и име на купувача, адрес, град и държава, пощенски код и регионален код, телефон, код на мениджъра, обслужващ купувача, кредит за купувача и коментари (бележки и бележки);
  • споразумения за продажба, съдържащи кода и датата на договора, кода на купувача, датата на доставка и общата сума на договора;
  • актове на продажба - кодът на акта и кода на договора, който включва акта, кода на продукта, неговата цена, закупената сума и общата покупна цена;
  • стоки - код на продукта и наименование;
  • цени - кода на продукта, обявената за него цена, най-ниската възможна цена, датата на установяване и датата на анулиране на цената.

Малките таблици, в които има не повече от две или три полета, са свързани с максимум една таблица чрез връзка „един към един“ или „един към много“.

Мащабни таблици като "служители на фирмата", "фирми-купувачи", "договори за продажби" и "търговски актове" са свързани с няколко предприятия едновременно, а с някои - с помощта на "посредници" много-към-много отношения. Таблицата "купувачи-фирми" сама по себе си е посредник, тъй като има много полета в нея, заимствани от други маси и са чужди ключове. В допълнение, големината и взаимовръзката на базата данни на King's Corporation е такава, че всички взаимоотношения са неразривно свързани помежду си и засягат помежду си. Унищожаването на поне една от тях би довело до унищожаване на целостта на цялата база данни.

Важни нюанси

При осъществяването на много-към-много комуникации, независимо от това коя СУБД се използва, е много важно правилно да се идентифицират ключовете, с които да се състави връзката. Неправилно изпълнената връзка няма да изпълни основната си цел, а именно да осигури целостта на таблицата, и в резултат на това вместо очакваното удобство, потребителят ще получи, напротив, неудобство и допълнителни проблеми, особено проявени при попълване на таблици и редактиране на данни в тях.