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

  • Автор темы Автор темы fizot
  • Дата начала Дата начала

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;

Вот так создаю таблицу связи, которая связывает артистов, туры, концерты и площадки, но вопрос: так ли надо это делать ?
 
у одного артиста может быть много туров, тур может включать несколько концертов, концерт может проходить на нескольких площадках?тогда имхо нужно делать связку нескольких таблиц
артист->тур->концерт->площадка, а не все в одну таблицу пхать
 
не совсем понял, т.е. мне нужно создать три таблицы связи?
артист-концерт, концерт-площалка, тур-площадка ??7
 
смотря какие у тебя задачи?выводить все концерты артиста или всех артистов на концерте или и то и то. Думаю и твоя схема подойдет.
 
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 создаю, как и таблицы
 
Задачи следующие, при просмотре тура, можно было бы выводить все концерты тура. При просмотре Концерта выводить артиста , площадку и если есть тур. И при просмотре артиста выводить все его концерты, туры, площадки на которых выступал. И соответственно при просмотре площадки выводить все проходившие на ней туры, концерты, артистов.

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

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

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

и т.п.

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

-~{}~ 01.12.05 12:45:

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