kuchin
Новичок
Поругайте структуру БД
Посмотрите пожалуйста, скажите что вам тут не нравится и вы бы сделали по другому:
(проект MyProgs)
Таблица программ:
Таблица связей программ и юзеров:
Таблица тагов:
Таблица связей программ и тагов:
Таблицу пользователей давать не буду, там все просто.
На данный момент это бежит на Apache 2.0, MySQL 3.23, собираюсь переносить на более новую версию, чтобы воспользоваться SELECT'ами внутри SELECT'ов и транзакциями (4.1 вроде должно хватить для этого? Или надо сразу 5?). PHP 4.3, может быть перейду на 5 вскоре.
Посмотрите пожалуйста, скажите что вам тут не нравится и вы бы сделали по другому:
(проект MyProgs)
Таблица программ:
Код:
id INT(10)
name VARCHAR(250) - имя программы
hash VARCHAR(32)
description VARCHAR(250)
version VARCHAR(30)
usercount SMALLINT(6) - пересчитывается каждый раз,
когда юзер добавляет/удаляет программу
Код:
id INT(11)
program INT(10) - id из таблицы программ
member INT(10) - id из таблицы юзеров
description VARCHAR(250) - user-specific
version VARCHAR(30) - user-specific
added INT(10) - дата
Код:
id INT(10)
tag VARCHAR(30) - имя тага
progcount SMALLINT(6) - пересчитывается каждый раз,
когда этот таг добавляют/удаляют к какой-нибудь программе
Код:
id INT(11)
program INT(10) - id из таблицы программ
tag INT(10) - id из таблицы тагов
member INT(10) - id из таблицы юзеров - в принципе, этот элемент
можно достать из таблицы программа/юзер,
но "кэширование" его тут позволяет
убрать лишний INNER JOIN.
На данный момент это бежит на Apache 2.0, MySQL 3.23, собираюсь переносить на более новую версию, чтобы воспользоваться SELECT'ами внутри SELECT'ов и транзакциями (4.1 вроде должно хватить для этого? Или надо сразу 5?). PHP 4.3, может быть перейду на 5 вскоре.