Przechowywanie tablicy w komórce tabeli bazy danych

0

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

2

Aby bylo to latwe do rozbudowy, zapytan i przy okazji nie duplikowalo danych moim zdaniem powinienes miec 3 tablice, np:

IdName Name
0 Adam
1 Barbara
2 Czeslaw
IdCity City
0 Warsaw
1 Berlin
2 New York
IdName IdCity
0 1
1 2
2 0
0 3
1 2
2 2

http://pl.wikipedia.org/wiki/Normalizacja_bazy_danych

1 użytkowników online, w tym zalogowanych: 0, gości: 1