{"id":86335,"date":"2020-06-24T07:42:54","date_gmt":"2020-06-24T05:42:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh"},"modified":"2020-06-24T07:42:54","modified_gmt":"2020-06-24T05:42:54","slug":"effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","title":{"rendered":"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die Suche nach funktionalen Abh\u00e4ngigkeiten in Daten wird in verschiedenen Bereichen der Datenanalyse angewendet: Datenbankverwaltung, Datenbereinigung, Reverse Engineering von Datenbanken und Datenexploration. Zu den Abh\u00e4ngigkeiten selbst haben wir bereits publiziert. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/JetBrains-education\/blog\/473882\/\">den Artikel<\/a><\/noindex> Anastasia Birillo und Nikita Bobrov. Diesmal teilt Anastasia, die in diesem Jahr ihren Abschluss am Computer Science Center gemacht hat, die Entwicklung dieser Arbeit im Rahmen ihrer Forschung, die sie im Zentrum verteidigt hat. <\/p>\n<p><img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/5c88e821622e91c2058b0c11b6718bc9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Aufgabenwahl <\/h3>\n<p>\nW\u00e4hrend meiner Ausbildung im CS Center begann ich, mich intensiv mit Datenbanken und insbesondere mit der Suche nach funktionalen und differenziellen Abh\u00e4ngigkeiten zu besch\u00e4ftigen. Dieses Thema war mit dem Thema meiner Abschlussarbeit an der Universit\u00e4t verbunden, weshalb ich w\u00e4hrend der Arbeit an meiner Abschlussarbeit anfing, Artikel \u00fcber verschiedene Abh\u00e4ngigkeiten in Datenbanken zu lesen. Ich schrieb einen \u00dcberblick \u00fcber dieses Gebiet \u2013 einen meiner ersten. <noindex><a rel=\"nofollow\" href=\"https:\/\/seim-conf.org\/media\/materials\/2017\/proceedings\/SEIM-2017_Full_Papers.pdf#page=44\">Artikel<\/a><\/noindex> in englischer Sprache und reichte ihn auf der Konferenz SEIM-2017 ein. Ich war sehr gl\u00fccklich, als ich erfuhr, dass er tats\u00e4chlich angenommen wurde, und entschied mich, tiefer in das Thema einzutauchen. Das Konzept ist nicht neu \u2013 es wurde bereits in den 90er Jahren angewendet, findet aber auch heute noch in vielen Bereichen Anwendung. <\/p>\n<p>Im zweiten Semester meines Studiums im Zentrum begann ich ein Forschungsprojekt zur Verbesserung von Algorithmen zur Suche nach funktionalen Abh\u00e4ngigkeiten. Dabei arbeitete ich mit dem Doktoranden Nikita Bobrov von der SPbGU an der JetBrains Research zusammen. <\/p>\n<h3>Rechenaufwand bei der Suche nach funktionalen Abh\u00e4ngigkeiten<\/h3>\n<p>\nDas Hauptproblem ist der Rechenaufwand. Die Anzahl m\u00f6glicher minimaler und nicht-trivialer Abh\u00e4ngigkeiten ist nach oben durch die Anzahl der Attribute der Tabelle begrenzt. <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/bdd1d2928000d8128ba21920e9b4c765.jpg\" style=\"display:block;margin: 0 auto;\" \/>, wobei <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/6211a4051b8b98e32312948027b4a5f3.jpg\" style=\"display:block;margin: 0 auto;\" \/> Die Laufzeit der Algorithmen h\u00e4ngt nicht nur von der Anzahl der Attribute ab, sondern auch von der Anzahl der Zeilen. In den 90er Jahren konnten Algorithmen zur Suche nach FZ auf gew\u00f6hnlichen Desktop-PCs Datens\u00e4tze verarbeiten, die bis zu 20 Attribute und Zehntausende von Zeilen enthielten, was mehrere Stunden in Anspruch nehmen konnte. Moderne Algorithmen, die auf Mehrkernprozessoren arbeiten, erkennen Abh\u00e4ngigkeiten f\u00fcr Datens\u00e4tze mit Hunderten von Attributen (bis zu 200) und Hunderttausenden von Zeilen in etwa derselben Zeit. Dennoch ist das unzureichend: Diese Laufzeit ist f\u00fcr die meisten realen Anwendungen inakzeptabel. Daher entwickelten wir Ans\u00e4tze zur Beschleunigung bestehender Algorithmen. <\/p>\n<h3>Caching-Strategien f\u00fcr die Partitionierung<\/h3>\n<p>\nIm ersten Teil der Arbeit haben wir Caching-Strategien f\u00fcr den Algorithmusklasse entwickelt, die die Methode der Partitionierung verwendet. Eine Partition f\u00fcr ein Attribut stellt eine Menge von Listen dar, wobei jede Liste die Zeilenindizes mit gleichen Werten f\u00fcr das betreffende Attribut enth\u00e4lt. Jede dieser Listen wird als Cluster bezeichnet. Viele moderne Algorithmen nutzen Partitionen zur Feststellung, ob eine Abh\u00e4ngigkeit bestehen bleibt oder nicht, insbesondere unter Ber\u00fccksichtigung des Lemmas: Eine Abh\u00e4ngigkeit <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/fa2667dcc78cded2d42bbf0a415d4de6.jpg\" style=\"display:block;margin: 0 auto;\" \/> besteht, wenn <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/b314fd0e7dbd225098198e48d5b28d38.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Hier <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/ef197235c0b8f15673c5179423349e21.jpg\" style=\"display:block;margin: 0 auto;\" \/> Eine Partition wird bezeichnet und das Konzept der Partitionsgr\u00f6\u00dfe \u2013 die Anzahl der Cluster darin \u2013 verwendet. Algorithmen, die Partitionen nutzen, f\u00fcgen bei einer Verletzung der Abh\u00e4ngigkeit zus\u00e4tzliche Attribute auf der linken Seite der Abh\u00e4ngigkeit hinzu und berechnen diese anschlie\u00dfend neu, indem sie eine Schnittoperation von Partitionen durchf\u00fchren. Diese Operation wird in Artikeln als Spezialisierung bezeichnet. Es wurde jedoch festgestellt, dass Partitionen f\u00fcr Abh\u00e4ngigkeiten, die nur nach mehreren Runden der Spezialisierung gehalten werden, aktiv wiederverwendet werden k\u00f6nnen, was die Laufzeit der Algorithmen erheblich verk\u00fcrzen kann, da die Schnittoperation kostspielig ist. <\/p>\n<p>Daher haben wir eine Heuristik vorgeschlagen, die auf der Shannon-Entropie und der Gini-Unsicherheit sowie unserer Metrik basiert, die wir als Umgekehrte Entropie bezeichnet haben. Sie ist eine geringf\u00fcgige Modifikation der Shannon-Entropie und w\u00e4chst, w\u00e4hrend die Einzigartigkeit des Datensatzes zunimmt. Die vorgeschlagene Heuristik sieht folgenderma\u00dfen aus:<\/p>\n<p><img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/4d9750c9f41679ae013ee7118928566b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hier <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/f3e620ccc932916349b338f613723542.jpg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 der Grad der Einzigartigkeit der k\u00fcrzlich berechneten Partition <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/4a43e7b49fc30d8a928fb365567c724a.jpg\" style=\"display:block;margin: 0 auto;\" \/>, und <img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/c21371f6b9ec89f5d93917e3c3c7df07.jpg\" style=\"display:block;margin: 0 auto;\" \/> ist der Medianwert der Einzigartigkeit f\u00fcr einzelne Attribute. Alle drei oben beschriebenen Metriken f\u00fcr die Einzigartigkeit wurden als Messgr\u00f6\u00dfe getestet. Zudem gibt es zwei Modifikatoren in der Heuristik. Der erste Modifikator zeigt an, wie nah die aktuelle Partition am Prim\u00e4rschl\u00fcssel ist und erm\u00f6glicht eine bessere Zwischenspeicherung derjenigen Partitionen, die weit vom potenziellen Schl\u00fcssel entfernt sind. Der zweite Modifikator verfolgt die Cache-Auslastung und f\u00f6rdert somit die Hinzuf\u00fcgung weiterer Partitionen in den Cache, wenn ausreichend Platz vorhanden ist. Die erfolgreiche L\u00f6sung dieser Aufgabe hat den PYRO-Algorithmus um 10-40 % beschleunigt, abh\u00e4ngig vom Datensatz. Es ist zu beachten, dass der PYRO-Algorithmus in diesem Bereich die besten Ergebnisse erzielt. <\/p>\n<p>In der folgenden Abbildung sind die Ergebnisse der Anwendung der vorgeschlagenen Heuristik im Vergleich zu dem auf M\u00fcnzwurf basierenden Ansatz zur Zwischenspeicherung zu sehen. Die X-Achse ist logarithmisch.<\/p>\n<p><img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/3d6fe6a57237b27e76e6833965dc9c93.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Alternative Methode zur Speicherung von Partitionen<\/h3>\n<p>\nAnschlie\u00dfend haben wir eine alternative Methode zur Speicherung von Partitionen vorgeschlagen. Partitionen bestehen aus einer Reihe von Clustern, in denen die Nummern von Tupeln mit gleichen Attributwerten gespeichert sind. Diese Cluster k\u00f6nnen lange Sequenzen von Tupelnummern enthalten, insbesondere wenn die Daten in der Tabelle geordnet sind. Daher haben wir ein Kompressionsschema zur Speicherung der Partitionen vorgeschlagen, n\u00e4mlich die intervallweise Speicherung der Werte in den Partitionclustern:<\/p>\n<p>$$display$$pi(X) = {{underbrace{1, 2, 3, 4, 5}_{Erster~Intervall}, underbrace{7, 8}_{Zweiter~Intervall}, 10}}\\ downarrow{Kompression}\\ pi(X) = {{underbrace{$, 1, 5}_{Erster~Intervall}, underbrace{7, 8}_{Zweiter~Intervall}, 10}}$$display$$<\/p>\n<p>Diese Methode konnte den Speicherverbrauch w\u00e4hrend der Ausf\u00fchrung des TANE-Algorithmus um 1 bis 25 % reduzieren. Der TANE-Algorithmus ist ein klassischer Algorithmus zur Suche nach funktionalen Abh\u00e4ngigkeiten (FZ) und nutzt Partitionen w\u00e4hrend seiner Ausf\u00fchrung. Im Rahmen der Praxis wurde speziell der TANE-Algorithmus gew\u00e4hlt, da es wesentlich einfacher war, intervallweise Speicherung zu implementieren als beispielsweise im PYRO, um zu bewerten, ob der vorgeschlagene Ansatz funktioniert. Die erhaltenen Ergebnisse sind im folgenden Bild dargestellt. Die X-Achse ist logarithmisch.<\/p>\n<p><img decoding=\"async\" alt=\"Effektive Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken\" src=\"\/wp-content\/uploads\/2020\/06\/609a547d3d19b6e2c54ed70481ff6cdb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Konferenz ADBIS-2019<\/h3>\n<p>\nIm September 2019 pr\u00e4sentierte ich einen Artikel <noindex><a rel=\"nofollow\" href=\"https:\/\/link.springer.com\/chapter\/10.1007\/978-3-030-30278-8_7\">Smart Caching zur effizienten Entdeckung funktionaler Abh\u00e4ngigkeiten<\/a><\/noindex> auf der 23. Europ\u00e4ischen Konferenz \u00fcber Fortschritte in Datenbanken und Informationssystemen (ADBIS-2019). W\u00e4hrend der Pr\u00e4sentation erhielt die Arbeit Anerkennung von Bernhard Thalheim, einer bedeutenden Pers\u00f6nlichkeit im Bereich der Datenbanken. Die Ergebnisse dieser Forschung bildeten die Grundlage meiner Masterarbeit am Mathematisch-Mechanischen Institut der Universit\u00e4t St. Petersburg, in der beide vorgeschlagenen Ans\u00e4tze (Caching und Kompression) in beide Algorithmen: TANE und PYRO implementiert wurden. Die Ergebnisse zeigten, dass die vorgeschlagenen Ans\u00e4tze universell sind, da bei beiden Algorithmen unter beiden Ans\u00e4tzen eine erhebliche Reduzierung des Speicherverbrauchs sowie eine signifikante Verk\u00fcrzung der Laufzeit der Algorithmen beobachtet wurde.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/JetBrains-education\/blog\/507716\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u0438 \u0411\u0438\u0440\u0438\u043b\u043b\u043e \u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0411\u043e\u0431\u0440\u043e\u0432\u0430. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u2014 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u0446\u0430 Computer Science Center \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u041d\u0418\u0420, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86336,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86335","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u0438 \u0411\u0438\u0440\u0438\u043b\u043b\u043e \u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0411\u043e\u0431\u0440\u043e\u0432\u0430. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u2014 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u0446\u0430 Computer Science Center \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u041d\u0418\u0420, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u0430\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u0438 \u0411\u0438\u0440\u0438\u043b\u043b\u043e \u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0411\u043e\u0431\u0440\u043e\u0432\u0430. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u2014 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u0446\u0430 Computer Science Center \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u041d\u0418\u0420, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-24T05:42:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-24T05:42:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Effiziente Suche nach funktionalen Abh\u00e4ngigkeiten in Datenbanken | ProHoster","description":"Die Suche nach funktionalen Abh\u00e4ngigkeiten in Daten wird in verschiedenen Bereichen der Datenanalyse angewendet: Datenbankmanagement, Datenbereinigung, Reverse Engineering von Datenbanken und Datenexploration. Zu den Abh\u00e4ngigkeiten selbst haben wir bereits einen Artikel von Anastasia Birillo und Nikita Dobrov ver\u00f6ffentlicht. Diesmal teilt Anastasia \u2013 Absolventin des Computer Science Centers aus diesem Jahr \u2013 die Weiterentwicklung dieser Arbeit im Rahmen ihrer Forschungsarbeit.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u0438 \u0411\u0438\u0440\u0438\u043b\u043b\u043e \u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0411\u043e\u0431\u0440\u043e\u0432\u0430. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u2014 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u0446\u0430 Computer Science Center \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u041d\u0418\u0420, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u0430","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-24T05:42:54+00:00","article:modified_time":"2020-06-24T05:42:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86335","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:17:33","updated":"2022-09-27 17:20:14"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/86335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=86335"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/86335\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/86336"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=86335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=86335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=86335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}