Wszyscy już tam byli- rozważmy następujący przykład - po pierwsze, klient mówi "każdy użytkownik ma tylko jedno zdjęcie profilowe", więc dodajemy do tego pole dla tabeli użytkowników - pół roku później , wymagania zmieniają się, a użytkownik musi mieć n zdjęć profilowych.Tabela z trójwymiarową bazą danych
Teraz wydaje się to możliwe tylko po dodaniu nowej tabeli, takiej jak user_pictures, aby obsłużyć nową liczność 1: n zamiast 1: 1. Często może to być bardzo skomplikowane. Ilekroć napotykam ten problem, zastanawiam się, dlaczego nie używamy wszystkich trzech wymiarów, w których możemy myśleć. Dwuwymiarowy stół jest ograniczony w sposób, który jest nieco niekompletny - co jeśli, odnosząc się do naszego problemu z obrazem profilu ponownie, pole obrazu w tabeli użytkowników miało głębokość, a ta głębokość uczyniła z pola tablicę, która doskonale reprezentowała obie wartości: 1: 1 i 1: n w tym samym czasie.
Pola tabeli stałyby się po prostu tablicami i automatycznie obsługują obie karty - czy to nie byłoby coś? Przynajmniej bym go użył. Czy jest już coś takiego?
Uwzględniono wszystkie możliwe zależności między "rzeczami" w bazie danych (jeden-do-jednego, jeden-do-wielu, wiele-do-wielu). Jaki byłby przypadek użycia dla "trójwymiarowego" stołu - cokolwiek to znaczy? – NullUserException
Przykładowy przypadek użycia to ten powyżej ze zdjęciami profilu: Musisz dodać nową tabelę, ale jest to wyraźnie uciążliwe. Wzajemne relacje między modelami musiałyby zostać zmienione, odpowiednio zaktualizowane zapytania itp. - z dużą ilością bólu i pracy. Myślę, że jesteśmy w stanie zrobić coś więcej. Czy dwuwymiarowe pole, dzięki któremu stół nie będzie trójwymiarowy, nie rozwiąże tego problemu? – weltschmerz
Relacyjne bazy danych są obsługiwane przez bardzo solidne podstawy - [relacyjna algebra] (http://en.wikipedia.org/wiki/Relational_algebra). Zapewnia to, że są one szybkie i poprawne. To jeden z powodów, dla których wciąż istnieją, gdy inne rodzaje baz danych pojawiały się i znikały przez lata. Nie naprawiaj tego, co nie jest zepsute. – NullUserException