MySql/PHP - Проектирование моей первой базы данных. Нужны отзывы

Я разрабатываю свою первую базу данных и пишу свой первый PHP-проект с нуля, и мне нужен кто-то, кто проверит схему базы данных.

Назначение скрипта PHP: отображать статистику трафика для различных сайтов в моей сети, когда я публикую рекламные видео на таких сайтах, как Youtube, Myspace, Metacafe, Vimeo и т. д.

Как я планирую это организовать:

  1. На одном сайте может быть несколько категорий, таких как «уроки игры на гитаре», «уроки пения», «уроки танцев».
  2. Некоторые категории могут иметь подкатегории. Например, «уроки игры на гитаре» можно разделить на «бас» и «электро».
  3. В одной категории может быть один рекламный ролик. На изображении ниже видео называется item.
  4. Один предмет (рекламный ролик) может быть создан только в одной категории
  5. Один рекламный ролик можно разместить на нескольких сайтах обмена видео (Youtube, Vimeo и т. д.).
  6. Одно рекламное видео может иметь несколько разных метаданных, таких как «название» и «описание».

Сценарии, которые могут произойти:

  1. Возможно, когда-нибудь Youtube удалит одно из моих рекламных видео, в этом случае я бы перезалил его снова, возможно, с другим «названием» и «описанием», но я хотел бы показать некоторую старую информацию в статистике, например, предыдущее количество просмотров до удаления.
  2. Я не могу сейчас думать ни о чем другом..

РЕДАКТИРОВАТЬ: Я добавил таблицу itemStats введите здесь описание изображения

EDIT2: я не уверен, нужна ли мне отдельная таблица itemStats. Я думаю присоединиться к нему с помощью itemMeta?


person RhymeGuy    schedule 04.11.2012    source источник
comment
В какой программе вы создали приведенную выше диаграмму базы данных?   -  person TryHarder    schedule 01.12.2013


Ответы (2)


Я предлагаю вам объединить users и usersMeta в одну таблицу. В usersMeta всего 5 уникальных полезных полей. Вам нужно будет использовать соединения, чтобы получить все эти данные, если вам когда-нибудь понадобится, на мой взгляд, в этом нет необходимости. Помните, что нормализация — это процесс устранения избыточности и обеспечения минимального количества полей во всех таблицах... но это происходит в стоимость. Стоимость производительности в большинстве случаев.

Кроме того, таблица users будет состоять только из 9 полей, если их объединить. Это все еще то, что я считаю очень маленькой таблицей. Раньше у меня были таблицы с 20-30 полями. В моем случае не имело смысла выделять эти данные, потому что они были уникальными для таблицы, и никакая другая таблица или часть системы в любом случае никогда не использовали бы эти данные.

person Yes Barry    schedule 04.11.2012

Вы связываете первичные ключи с первичными ключами в некоторых таблицах (users:id с usersMeta:id) вместо первичных ключей с внешними ключами (sites:id с категориями:siteid). Вероятно, не будет работать хорошо.

person memilanuk    schedule 04.11.2012
comment
Хорошее место. Исправим! - person RhymeGuy; 04.11.2012