2016-04-17 40 views
6

Obecnie próbuję zaprojektować bazę danych i nie jestem zbyt pewny co do najlepszego sposobu podejścia do dynamicznie wielkości pola tablicy jednego z moich obiektów. Moją pierwszą myślą jest użycie kolumny w moim obiekcie do przechowywania tablicy liczb całkowitych. Jednak im więcej czytam, tym bardziej uważam, że nie jest to najlepsza opcja. Konkretny przykład: Mam obiekt odtwarzacza, który przechowuje 0 do wielu elementów, które są reprezentowane przez liczbę całkowitą. Jaki jest najlepszy sposób na reprezentowanie tego?Jaki jest najlepszy sposób przechowywania tablicy w relacyjnej bazie danych?

Odpowiedz

10

Jeśli ten zbiór wartości jest atomowy, przechowuj je razem. Oznacza to, że jeśli zawsze zależy Ci na całej grupie, jeśli nigdy nie wyszukujesz zagnieżdżonych wartości i nigdy nie sortujesz według zagnieżdżonych wartości, powinny one być przechowywane razem jako jedna wartość pola.

Jeśli nie, powinny być przechowywane w oddzielnej tabeli, każda wartość przynosi wiersz, z których każdy ma przypisany identyfikator rodzica (klucz obcy) rekordu z drugiej tabeli, która "jest właścicielem" ich jako grupy.

Na przykład klastry odczyty z instrumentu naukowego, które są używane tylko jako zbiór do analizy, powinny być przechowywane razem w polu. W przeciwieństwie do tego, lista numerów telefonów dla klienta, która często musi być zapytana o indywidualny numer, powinna być prawdopodobnie podzielona na pojedynczy numer telefonu na wiersz w powiązanej tabeli podrzędnej.

Aby uzyskać więcej informacji, wyszukaj termin "normalizacja bazy danych".

Niektóre bazy danych obsługują tablicę jako typ danych. Na przykład Postgres pozwala zdefiniować kolumnę jako tablicę jednowymiarową lub nawet tablicę dwuwymiarową.

Jeśli baza danych nie obsługuje tablicę jako rodzaj definicji kolumny, to może mieć trzy warianty:

  • XML/JSON
    Transform ci zbiór danych do XML lub JSON dokumentu, jeśli baza danych bazy danych obsługuje ten typ. Na przykład Postgres ma podstawowe wsparcie dla przechowywania, pobierania i nieindeksowanego wyszukiwania XML przy użyciu XPath. I Postgres oferuje doskonałą wiodącą w branży obsługę JSON jako typu danych, w tym indeksowaną obsługę wartości zagnieżdżonych z typem danych jsonb, gdzie przychodzący JSON jest analizowany i zapisywany w wewnętrznie zdefiniowanym formacie binarnym. Ta funkcja rozwiązuje jeden z głównych powodów, dla których ludzie rozważają korzystanie z tak zwanych systemów "NoSQL", chcąc przechowywać i wyszukiwać semi-structured data.
  • Tekst
    Utwórz ciągi reprezentujące dane do przechowywania jako tekst.
  • BLOB
    Utwórz binarną wartość do zapisania jako BLOB.