Jaka jest najlepsza praktyka przechowywania metadanych poszczególnych rekordów w bazie danych?
Muszę przechowywać typowe dane meta, takie jak czas utworzenia i czas ostatniej aktualizacji dla wielu tabel w mojej bazie danych. Znalazłem kilka różnych rozwiązań:
Przechowuj metadane bezpośrednio w tabelach.
Plusy:
- Metadane są bezpośrednio powiązane z rekordami
- Do pobierania metadanych nie są wymagane połączenia
Cons:
- Wymaganych jest wiele zduplikowanych kolumn (chyba że zastosowano dziedziczenie)
- Metadane i dane biznesowe nie są rozdzielane
Utwórz ogólną tabelę metadanych i użyj miękkich kluczy obcych, aby połączyć dane z odpowiednimi tabelami i rekordami.
Plusy:
- Brak powielania kolumn
- Metadane są oddzielone od danych biznesowych
Cons:
- Brak bezpośrednich powiązań między metadanymi i danymi (nie można użyć FK)
- Połączenia wymagają dodatkowego warunku
Utwórz osobne tabele metadanych dla każdej tabeli wymagającej metadanych.
Plusy:
- Metadane są bezpośrednio powiązane z rekordami
- Metadane są oddzielone od danych biznesowych
Cons:
- Wymaganych jest wiele dodatkowych stolików
- Wymaganych jest wiele zduplikowanych kolumn (chyba że zastosowano dziedziczenie)
Czy jest więcej opcji, zalet lub wad niż te, o których tu wspomniałem? A jaka jest najlepsza praktyka przechowywania tych metadanych?
hstore
lubJSON
może rozwiązać problem?