Структура базы подписчиков

usascha

Новичок
Структура базы подписчиков

Здравствуйте.
Составил тут базу по работе с подписчиками. Осталось дело за малым :eek: - участь кто на что подписан (всего 5 изданий).

Сейчас структура базы выглядит следующми образом:
subscriber (s) - все о подписчике, кроме подписанных изданий
publication (p) - все сведения о каждом из изданий
list (l) - что-то вроде индекса, где объединены данные [foreign keys] из (s) и (p)

ВОПРОС. Куда лучше добавлять сведения о подписанных изданиях?

В (s) - просто добавить 5 полей, где в каждом указывать количество подписок или (l), тогда каждая новая строчка содержит id подписчика и id издания. Выборку же производить группируя по id подписчика.

Что правильнее?
 

alexhemp

Новичок
Не нужно добавлять 5 полей - что ты будешь делать, если в будущем станет 100 изданий. Ну или хотя-бы 6-7-8 ?

У тебя классический вариант связи Много <-> Много

Он реализуется через промежуточную таблицу, как ты вроде бы и сделал.

Выбирать так и надо - нужно количество - группируй и считай.
 

usascha

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

Если я добавляю одну подписку, то все, вроде, в порядке. А если мне надо указать, что подписчик подписан на 2,3 и т.д. подписок одного издания?
Как это выполнить? Одним запросом или несколькими?
Сейчас таблица list (l) содержит три колонки l_id, subscriber_id и publication_id. Чтобы добавлять несколько подписок одного издания надо доавить еще одно поле (напр., publication_id_kolichestvo)?

короче, мое сомнение сводится к уже обсуждавшемуся вопросу множественных форм <input> и внесения их значений в базу.

Вот что придумал:

Код:
$query="SELECT p.*, l.*, s.id 
		FROM list l, publication p, subscriber s 
		WHERE l.subscriber_id=s.id 
		GROUP BY l.publication_id 
		ORDER BY p.izdanie ASC";
print $query;
$SQL=mysql_query($query) or die(mysql_errno($query).mysql_error($query)); 

$lines=mysql_num_rows($SQL);

for ($i=1;$i<=5;$i++) {
	while ($row=mysql_fetch_array($SQL)) {
		$izdanie=$row['izdanie'];
		$period=$row['period'];
		$weight=$row['weight'];
		echo "<li><input type=\"text\" size=\"20\" name=\"izdanie[]\" value='".$izdanie."'> - <input type=\"text\" size=2 name=\"period\" value='".$period."'> (".$weight." гр.)<br>";
	}
}
 
Сверху