Отношения дизайна базы данных для фильма - PullRequest
0 голосов
/ 22 января 2020

Hellow. Я создаю таблицу mov ie в mysql, которая имеет 1 миллион mov ie, например, с идентификатором и столбцом имени. Я также создаю пользовательскую таблицу с идентификаторами, столбцами имени и таблицей комментариев, которые имеют movie_id и user_id и столбцы комментариев, чтобы сохранить все комментарии пользователя. Вопрос: если у меня 1 млн. mov ie и если у каждого mov ie есть 1000 комментариев (скажем, у нас есть 1000 активных пользователей), то таблица комментариев должна иметь 1 000 000 000 строк, и это так медленно использовать запрос, чтобы найти все комментарии по одному указанному c mov ie. Кто-нибудь из ваших друзей может помочь мне с другим решением или способом сделать это? Я высоко оценил

вот запросы, которые я использую для создания таблиц моего проекта:
movie_tb:
create table movie_tb (id bigint не нулевой первичный ключ auto_increment, movie_name varchar (30) не нулевой);

user_table:
создать таблицу user_tb (идентификатор bigint не нулевой первичный ключ auto_increment, user_name varchar (30) не нулевой);

comment_tb:
создать таблицу comment_tb (идентификатор bigint не равен первичному ключу auto_increment, идентификатор_объекта bigint не равен нулю, идентификатор_пользователя bigint не равен нулю, комментарий varchar (250));
<====== ================================================== ===================>
movie_table выглядит так:

+---------+--------------+  
|  id     |  movie_name  |  
+---------+--------------+  
|  1      |  Joker       |  
+---------+--------------+  
+---------+--------------+  
|  2      |  Avatar      |  
+---------+--------------+  
+---------+--------------+  
|  3      | Harry potter |  
+---------+--------------+  

movie_tb содержит 100 000 строк.
<==== ================================================== =============> есть user_tb:

+---------+--------------+  
|id       |   name       |  
+---------+--------------+  
+---------+--------------+  
|  1      | jack         |  
+---------+--------------+  
+---------+--------------+  
|    2    |     joy      |  
+---------+--------------+  

user_tb имеет 10 000 строк.
<============== ================================================== ===>
вот тут comment_tb:

+---------+--------------+---------------+---------------+  
|  id     | movie_id     | user_id       | comment       |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  1      | 1            | 2             | comment1      |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  2      | 1            | 3             | comment2      |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  3      | 1            | 5             | comment3      |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  4      | 1            | 1024          | comment4      |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  5      | 1475         | 505           | comment       |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  6      | 1475         | 56            | comment       |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  7      | 2            | 2             | comment       |  
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  8      | 1            | 8761          | comment5      |   
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|  ...    | ...          |  ...          |   ...         |   
+---------+--------------+---------------+---------------+  
+---------+--------------+---------------+---------------+  
|31000000 | 1            | 36            | comment6      | 
+---------+--------------+---------------+---------------+  

вот небольшая строка внутри comment_tb: есть 6 комментариев на джокере (movei_id = 1
см. Mov ie id в movie_tb и комментарий от user_id 2,3,5,1024,8761,36, которые ссылаются на id пользователей в user_tb.

эта таблица (commnet_tb) имеет 31 миллион строк;
я использую этот запрос: выберите комментарий из comment_tb, где movie_id = 1;
, чтобы получить все комментарии к movie_id 1, который является joker.but его получить перезапуск через 8 или несколько раз 30 секунд.

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Если MySQL - единственный вариант, в котором вы должны хранить комментарии, то в зависимости от вашего варианта использования вы также можете посмотреть на разделение данных для комментариев пользователей.

0 голосов
/ 22 января 2020

Если у вас есть миллиард комментариев, то для решения с реляционной базой данных требуется миллиард строк для таблицы комментариев.

С другой стороны, это не замедляет запросы, если вы правильно проектируете базу данных: просто добавьте индекс в столбцы user_id и movie_id таблицы комментариев, и на запрос, который найдет все комментарии для определенного фильма или все комментарии определенного пользователя, будет дан очень эффективный ответ без «сканирования» всей таблицы. .

...