Witam ...
eksperymentując i rozmyślając nad założeniami bazy wpadłem na pewien pomysł ... elementy łączy się ze sobą przy pomocy tablic które zawierają relacje 1:1, n:m i 1:n ... takie coś jest wygodne, w miarę wydajne i nie powoduje dublowania się danych (wszystko w teorii oczywiście :roll2: )
a gdyby tak połączyć tabele łączące w jedną ... już wyjaśniam o co chodzi ...
mamy kilka standardowych tabel: users, groups, content, params ... oraz jedną tabelę o nazwie con ... składa się ona z kolumny: type, relation, id1, id2 oraz priority ... i teraz przy pomocy różnych kombinacji type oraz relation łączymy ze sobą elementy id1 i id2 ... np: (po kolei: type, relation, id1, id2 - priority jest narazie nie ważne)
doc author 1 2 - dokument o id = 1 którego auterm jest user o id = 2
doc author 1 5 - dokument o id = 1 którego auterm jest user o id = 5
doc related_doc 1 3 - dokument o id = 1 który jest powiązany z dokumentem o id = 3
doc attachment 1 88 - plik o id = 88 jest załącznikiem do dokumentu o id = 1
doc related_news 1 66 - news 66 związany z dokumentem o id = 1
doc cat 1 4 - dokument 1 w kategorii 4
doc cat 1 9 - dokument 1 w kategorii 9
w ten sposób można pobierać dane na temat elementów przy pomocy jednego zapytania ... wszystkie informacje o dokumencie są dostępne odrazu ... potem stosując proste zapytania (brak joinów za każdym razem z tabelą pośrednią ... ) również bardziej skąplikowane elementy (np. ten użytkownik napisał też: i dokumenty napisane przez usera - wszystkie tytuły pobrane jednym zapytaniem, bo id przecież mamy), wszystkie komentarze do dokumentu itp ...
co do priority: jego zastosowanie jest oczywiste i chyba nie wymaga wyjasnień ...
i teraz pytanie co o tym sądzicie - celowo nie podaje żadnych create table bo taka koncepcja może zostać wykorzystana w każdym silniku danych.
pozdrawiam