Я думаю, что мой вопрос лучше всего объяснить с помощью примера: Предположим, я хочу написать веб-сервер для потоковой передачи музыки. У меня есть следующие столбцы в таблице songs
: |song_id|song_name|song_genre|song_length|artist
mysql: как написать таблицу просмотров
Я хотел бы, чтобы позволить своим пользователям, чтобы сохранить плейлист, но я не хочу, чтобы мои плейлисты, которые будут определен в явном виде указать песни, которые находятся в списке воспроизведения, а что-то вроде «всех песен ringo starr», что означало бы, что когда новые композиции ringo starr добавляются в таблицу, плейлист будет автоматически их иметь. Фактически, что я хочу, это таблица под названием playlists
, которая содержит список представлений mysql.
Самого наивный подход был бы просто иметь таблицу с именем playlists
, и один из его столбцов будут называться playlist_query
, который будет хранить для приведенного выше примера что-то вроде строки "select song_id from songs where artist='ringo starr'
.
Это, конечно, невероятно неуверенно, но этого было бы достаточно, если бы не было лучшего решения, так как это приложение используется только внутри внутри нашей компании несколькими сотрудниками, которые являются хорошими программистами, которые знают свой путь вокруг mysql.
Итак, что вы предлагаете? пойти с этим уродливым решением, или есть какой-то более простой способ сделать это?
Я не вижу ничего плохого в этом подходе. Что небезопасно? –
@Jan - для общего использования, позволяя пользователям вставлять запросы, которые будут использоваться вашей БД, считается довольно неуверенным, я считаю: http://en.wikipedia.org/wiki/Sql_injection Предполагая, что мы знаем, что всем пользователям доверяют пользователей, кто-то может по-прежнему совершать ошибку, например, неправильно выполнить соединение (с условием объединения, которое всегда выполняется), в результате чего вы можете выбрать 1000 000 000 000 песен. – olamundo
Просто сохраните «ringo starr» в таблице. Постройте остаток своего запроса в своем коде. Сделайте некоторое ускорение в поисковом запросе, и вы настроены –