Таблицы связи, как лучше ?

fizot

Новичок
Таблицы связи, как лучше ?

CREATE TABLE connect (
artist int (3) NOT NULL default '',
tour int (3) NOT NULL default '',
concert int (3) NOT NULL default '',
platform int (3) NOT NULL default ''
) TYPE=MyISAM;

Вот так создаю таблицу связи, которая связывает артистов, туры, концерты и площадки, но вопрос: так ли надо это делать ?
 

chisto_tolyan

Враг народа
у одного артиста может быть много туров, тур может включать несколько концертов, концерт может проходить на нескольких площадках?тогда имхо нужно делать связку нескольких таблиц
артист->тур->концерт->площадка, а не все в одну таблицу пхать
 

fizot

Новичок
не совсем понял, т.е. мне нужно создать три таблицы связи?
артист-концерт, концерт-площалка, тур-площадка ??7
 

chisto_tolyan

Враг народа
смотря какие у тебя задачи?выводить все концерты артиста или всех артистов на концерте или и то и то. Думаю и твоя схема подойдет.
 

zarus

Хитрожопый макак
CREATE TABLE connect (
artist int (3) NOT NULL default '',
tour int (3) NOT NULL default '',
concert int (3) NOT NULL default '',
platform int (3) NOT NULL default '',
id int(9) PRIMARY KEY AUTO_INCREMENT,
ind1 INDEX (artist,tour),
ind2 INDEX (artist,concert),
....
) TYPE=MyISAM;

Насчет синтаксиса index не уверен - я обычно ключи через phpmyadmin создаю, как и таблицы
 

fizot

Новичок
Задачи следующие, при просмотре тура, можно было бы выводить все концерты тура. При просмотре Концерта выводить артиста , площадку и если есть тур. И при просмотре артиста выводить все его концерты, туры, площадки на которых выступал. И соответственно при просмотре площадки выводить все проходившие на ней туры, концерты, артистов.

не мог бы ты сказать что значит INDEX или доку дать.
 

zarus

Хитрожопый макак
INDEX - это внутренняя таблица соответствий для ускорения запросов.
А вообще, в твоей задаче нужно сделать отдельно таблицы:
Артисты, Туры, Концерты, Площадки и в них уже создавать поля-связи с таблицами между собой. Далее все решается с помощью JOIN.
Но думаю, что лучше начать с примеров попроще и прочитать книжечку по языку SQL. И по принципам построения БД - а это уже на форумное объяснение не тянет.
 

fizot

Новичок
А и правда, в моем примере как я понимаю таблицы связи вообще не нужны, проще у каждого концерта, артиста и площадки завести поля, в которых будут указываться все эти данные? ? ?
 

zarus

Хитрожопый макак
Автор оригинала: fizot
А и правда, в моем примере как я понимаю таблицы связи вообще не нужны, проще у каждого концерта, артиста и площадки завести поля, в которых будут указываться все эти данные? ? ?
Неправильно понял. Заводить надо поля_идентификаторы.
т.е.

TAB: Artist
Fields: id_art, name, id_tour, id_platform и т.д.

TAB: Platform
Fields: id_platform, name и т.д.

и т.п.

Соответственно, в каждой таблице в полях нужно будет указывать только id из других таблиц. И вообще, как я уже писал - учите матчасть по проектированию БД.
 

fizot

Новичок
Я прально понял, просто сформулировал нечетко, естественно я буду ИД указывать

-~{}~ 01.12.05 12:45:

Вообщем решил сделать одну таблицу связи между турами и концертами, т.к. у одного тура может быть несколько концертов. А связь между концертами, исполнителями и площадками буду осуществлять полем
 
Сверху