Wpis z mikrobloga

Mam pytanie odnośnie SQL.
Myślę nad sposobem zapisu wektora do tabeli, powiedzmy, że mam taki przykład:

Tabela: users
Kolumny: id, login, password

Tabela: books
Kolumny: id, name, author

i chciałbym dodać listę ID książek do których dany użytkownik miałby dostęp.
Tak jak poszukałem w internecie to znalazłem 2 rozwiązania:

1. Dodanie kolejnej kolumny do tabeli users jako varchar i przekazanie wektora z użyciem np. JSON'a
2. Stworzenie specjalnej tablicy dla każdego użytkownika, gdzie będą przechowywane kolejne identyfikatory książek:

Tabela: user{id}bookIDs
Kolumny: id, book
id

Pierwsze rozwiązanie wydaje się mało eleganckie i na potrzeby mojego projektu wolałbym zostać przy drugim i tutaj zaczynają się

PYTANIA:
1 Nazewnictwo, jak nazwać tablicę dla użytkownika?

Dla mnie intuicyjnym byłoby coś w stylu
user's1bookIDs
nie można używać apostrofów, więc lepiej by to wyglądało w taki sposób
user
1bookIDs

2 A może tworzyć bazę danych dla każdego użytkownika oddzielnie?

Wtedy miałbym główną bazę danych z tabelami: users, books
oraz dla każdego użytkownika bazę danych o nazwie np "user1" z tabelą: bookIDs

Mógłbym wtedy łatwo rozszerzać taką bazę o kolejne wektory, jednak po stronie implementacji było by to chyba bardzo niedogodne, przykładowo gdy klient zakładał by konto, to po stronie serwera musiała by być generowana baza danych, i tak jak szukałem w internecie to nie ma tego typu przykładów np. z nodejs

3 Czy jest może jakiś bardziej oczywisty i wygodny sposób podchodzenia do takich problemów?

Dopiero się uczę SQL'a więc proszę o wyrozumiałość :)

#programowanie #mysql #bazydanych #naukaprogramowania troche #nodejs
  • 3