Witam,
chciałbym zapytać bardziej doświadczonych programistów o ich sposób na przechowywanie wielu wartości w jednej komórce. Dla przykładu: mamy tabelę, w której przechowujemy id, imię oraz odwiedzone miasto (lub miasta).
Pierwsze co przyszło mi na myśl to poniższe rozwiązanie:
Id | Name | City |
---|---|---|
0 | Adam | Warsaw;Paris |
1 | Barbara | Berlin |
2 | Czeslaw | New York;Warsaw;Moscow;Mexico |
Następnie przy wyciąganiu danych należałoby podzielić stringa z 'City' po średnikach i w ten sposób uzyskać tablicę/listę miast. |
Osobiście uważam to za najbardziej naturalne podejście ale spotkałem się również z twierdzeniem, że dodaje to tylko niepotrzebnie operacje na uzyskanych danych i lepiej stworzyć dodatkową tablicę a w niej pole na id osoby oraz nazwę miasta (oczywiście wtedy usuwamy kolumnę "City" z pierwszej tabeli):
Id_person | City |
---|---|
0 | Warsaw |
0 | Paris |
1 | Berlin |
2 | New York |
2 | Warsaw |
2 | Moscow |
2 | Mexico |
itd. Następnie wystarczy najprostsze zapytanie SQL wyciągające z drugiej tabeli miasta dla użytkownika o określonym Id (lub bardziej złożone jeśli dysponujemy imieniem osoby). |
Które Waszym zdaniem rozwiązanie jest najlepsze? A może oba są nie do końca poprawne i istnieje inne optymalne podejście?
Dzięki za wszelkie sugestie :)