2010-11-25 6 views
0

Я попытался найти ответы на это, но я все еще немного потерян.SQL Multiple Tables и таблица LookUp

У меня есть сайт, использующий PHP/SQL для хранения сведений о музыкальных дорожках. Я хочу искать/добавлять/редактировать/удалять трек-трек, альбом, композитор, bpm, timeignature, продолжительность, инструментарий, жанр, ключевые слова (описание). Я до сих пор тестировал тестовую версию только с тремя таблицами и справочной таблицей (дорожкой, композитором, альбомом), которая, похоже, работает хорошо с поиском.

стол 'дорожка' (идентификатор, tracktitle) 'композитор таблицы (идентификатор, composername) таблицы 'альбом'(идентификатор, ALBUMTITLE) стола «albumtrack (track.id, composer.id, album.id)

Я не могу, однако, получить бит вставки сразу при добавлении нового трека и присвоении ему композитора и альбома. Трек-лист входит в таблицу треков в порядке, но как мне связать его в таблице поиска альбомов.

Нужны ли мне дополнительные биты?

$sql = "INSERT INTO track SET 
    track.tracktitle='$tracktitle' "; 

Кроме того ... я буду об этом правильном пути, используя таблицы для каждого бита (уд таблицы, длительность таблицы, жанр таблица)?

Трек может иметь более одной продолжительности (разные правки), bpms, подпись времени, поэтому большое количество данных будет разделяться. Я также хочу, чтобы пользователь мог выполнять поиск в диапазоне продолжительности или уд/мин, например, от 2 до 3 минут.

Прежде чем я расскажу о своей тестовой версии, мне нужен совет относительно того, насколько я делаю это наилучшим образом.

Благодаря

ответ

0

Если предположить, что поля «ID» являются автоинкрементом значения (база данных генерируя их для вас), а затем, после того, как вы вставили дорожку, которую необходимо восстановить идентификатор только что добавленной строки (с помощью mysql_insert_id()) , Затем вы используете этот идентификатор, плюс идентификаторы альбома и композитора, для INSERT в альбом.

Кроме того, вы должны знать, что синтаксис INSERT, который вы используете, зависит от MySQL. Это нормально, если вы никогда не планируете переключать DB, но вам может понадобиться изучить «стандартный» синтаксис INSERT (INSERT INTO tablename (col1, col2. . .) VALUES (val1, val2. . .)).

+0

Спасибо за это. Я попробую, что – paj 2010-11-25 19:30:42

0

Ваш ВСТАВИТЬ запрос должен быть что-то вроде:

$sql = "INSERT INTO track VALUES('','$tracktitle','$duration','$etc')"; 

Первое значение оставлено пустым для автоинкрементным ид.

«Также ... Я собираюсь сделать это правильно, используя таблицы для каждого бита (таблица bpm, таблица продолжительности, таблица жанров)?»

Не могли бы вы иметь только одну таблицу с несколькими полями (bbm, duration и т. Д.).

Надеюсь, это поможет.

+0

Спасибо вам, очень полезно. Да, я мог бы сделать это как один стол, но когда я проходил через некоторые учебники, они, похоже, предпочитали таблицу поиска. Но являются ли они полезными только в том случае, если в каждой таблице имеется несколько записей, связанных друг с другом? Разве это не требуется для того, что я хочу сделать? благодаря – paj 2010-11-25 19:30:02