| Termin | Definicja |
|---|---|
| Problemy z duplikatami przy JOIN | Problemy z duplikatami przy złączeniu wynikają z relacji wiele do wielu, mnożącej liczbę zwracanych wierszy. Skąd biorą się powielone wiersze po złączeniu tabelDuplikaty pojawiające się po użyciu Przykładowo tabela Szczególnie dużo wyników może powstać przy połączeniu dwóch relacji jeden-do-wielu dotyczących tego samego rekordu. Jeżeli klient ma trzy adresy zapisane w jednej tabeli i cztery zgłoszenia w drugiej, bez wcześniejszego ograniczenia danych połączenie może utworzyć dwanaście kombinacji. Jest to efekt iloczynu liczby dopasowanych rekordów, a niekoniecznie obecności identycznych rekordów w bazie. Dlatego przed usunięciem rzekomych duplikatów trzeba ustalić, jaki poziom szczegółowości ma mieć wynik. Warunek ON, klucze i niepełne kryteria dopasowaniaNajczęstszą przyczyną nieoczekiwanej liczby wierszy jest złączenie po kolumnie, która nie identyfikuje rekordu jednoznacznie. Klucz główny tabeli ma unikalną wartość w każdym wierszu, natomiast zwykła kolumna, taka jak nazwisko, miasto, status albo numer dokumentu, może występować wielokrotnie. Połączenie tabel wyłącznie po takiej kolumnie dopasuje wszystkie rekordy o tej samej wartości. Jeżeli nazwisko występuje u kilku osób, warunek Bezpieczniejsze złączenie zwykle wykorzystuje klucz obcy po stronie tabeli zależnej i odpowiadający mu klucz główny tabeli nadrzędnej, na przykład Warto odróżnić warunek złączenia od filtrów umieszczonych w Rozróżnienie DISTINCT, agregacji i poprawnego modelu danychKlauzula Jeżeli celem jest jeden wiersz na klienta, zamówienie lub urządzenie, trzeba określić regułę wyboru danych szczegółowych. Można zastosować agregację, na przykład Przy relacji wiele-do-wielu typowym rozwiązaniem jest tabela pośrednia zawierająca klucze obu stron. Jeżeli użytkownik może mieć wiele ról, a jedna rola może należeć do wielu użytkowników, wynik złączenia użytkowników, tabeli łącznikowej i ról będzie zawierał osobny wiersz dla każdej pary użytkownik–rola. To zachowanie jest prawidłowe. Jeśli raport wymaga jednego wiersza na użytkownika, dane ról trzeba pogrupować, ograniczyć do wybranej roli albo zwrócić w odrębnej strukturze. Przed użyciem funkcji redukujących należy także sprawdzić ograniczenia unikalności i indeksy, ponieważ to one opisują oczekiwane zależności w danych. Praktyczne sprawdzenie zapytania i wynikówDiagnostykę warto rozpocząć od uruchomienia każdego fragmentu osobno. Najpierw należy policzyć rekordy w tabeli bazowej, następnie sprawdzić liczbę dopasowań po stronie tabeli dołączanej, a potem wykonać pełne złączenie z dodatkowymi kolumnami identyfikującymi źródłowy rekord. Pomocne jest tymczasowe dodanie identyfikatorów kluczy głównych, aby zobaczyć, które kombinacje są powtarzane. Zapytanie kontrolne z Należy też sprawdzić, czy relacja jest zgodna z założeniem aplikacji. Kolumna używana jako klucz obcy powinna wskazywać właściwy rekord nadrzędny, a dane nie powinny zawierać przypadkowych wartości powodujących dodatkowe dopasowania. Warto przejrzeć definicje kluczy, ograniczeń unikalności oraz indeksów, ale sam indeks nie gwarantuje braku duplikatów. Indeks może przyspieszyć wyszukiwanie, natomiast unikalność wynika z odpowiedniego ograniczenia lub klucza. Trzeba również ustalić, czy zapytanie nie wykonuje połączenia z tabelą historii, logów lub wersji, gdzie wiele rekordów dla jednego obiektu jest zamierzone. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC, a przy problemach z aplikacjami bazodanowymi może pomóc w odtworzeniu zapytania, prześledzeniu relacji między tabelami oraz sprawdzeniu, czy obserwowane powielanie wynika z danych, warunku |