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 :)