Дайте совет по архитектуре.

kiruxa_dnp

Новичок
Дайте совет по архитектуре.

Доброго дня

Длаю сайт для турагенства
есть таблица туров,(tbl_tour) и у каждого тура есть опции -
например вид отдыха - КРУИЗЫ ЛЕЧЕБНЫЙ МОЛОДЕЖНЫЙ ОБРАЗОВАТЕЛЬНЫЙ ОБУЧАЮЩИЙ
соответственно каждый из них имеет свои ИД (допустим 1,2,3,4,5)

как лучше хранить в базе эти опции -
1. добавить их в tbl_tour - сделать поле options - и загонять туда эти опции через сепаратор - "1,2,3,4,5"
2. либо сделать tbl_tour_options (id,tour_id, option_id) и класть их в эту таблицу ?

надо будет проводить поиск по виду отдыха.

скажите как правильнее сделать ? буду благодарен за совет ...
 

berkut

Новичок
2. либо сделать tbl_tour_options (tour_id, option_id) и класть их в эту таблицу ?

нахрена везде где не попадя всовывать id auto_increment??? пря болезнь какая-то
 

kiruxa_dnp

Новичок
Спасибо,

это вредная привычка, обычно думаешь что а вдруг пригодится

Просто думаю как тогда потом в одно поле воткнуть значения этих опций через запятую

типа
SELECT * FROM tbl_tour
LEFT OUTER JOIN tbl_tour_options ON `tbl_tour`.`tour_id` =`tbl_tour_options`.`tour_id`

...
но чтоб результат на mysql_fetch_array был
tour_id, tour_name, tour_options <-- тут эти опции в виде "1,2,3,4,5"
 

Wicked

Новичок
berkut
нахрена везде где не попадя всовывать id auto_increment??? пря болезнь какая-то
jfyi:
Every InnoDB table has a special index called the clustered index where the data for the rows is stored. If you define a PRIMARY KEY on your table, the index of the primary key is the clustered index.

If you do not define a PRIMARY KEY for your table, MySQL picks the first UNIQUE index that has only NOT NULL columns as the primary key and InnoDB uses it as the clustered index. If there is no such index in the table, InnoDB internally generates a clustered index where the rows are ordered by the row ID that InnoDB assigns to the rows in such a table. The row ID is a 6-byte field that increases monotonically as new rows are inserted. Thus, the rows ordered by the row ID are physically in insertion order.
(c) http://dev.mysql.com/doc/refman/5.1/en/innodb-table-and-index.html
 

Balloon

Новичок
Автор оригинала: kiruxa_dnp
Просто думаю как тогда потом в одно поле воткнуть значения этих опций через запятую

типа
SELECT * FROM tbl_tour
LEFT OUTER JOIN tbl_tour_options ON `tbl_tour`.`tour_id` =`tbl_tour_options`.`tour_id`

...
но чтоб результат на mysql_fetch_array был
tour_id, tour_name, tour_options <-- тут эти опции в виде "1,2,3,4,5"
В MySQL c версии 4.1 можно делать так:

SELECT tbl_tour .*, GROUP_CONCAT(tbl_tour_options.opt_id SEPARATOR ',') as `tour_options` FROM tbl_tour
LEFT JOIN tbl_tour_options ON tbl_tour_options.tour_id=tbl_tour .id
GROUP BY tbl_tour .id
 
Сверху