2009-10-08 3 views
3

Я пытаюсь решить, следует ли создавать глобальную таблицу представлений или 1 для каждого раздела. например, Допустим, у меня есть продукты, категории и страницы.Структура таблицы MYSQL

У меня есть 3 таблицы: например

CREATE TABLE `tbl_products` (
`p_id` INT NOT NULL , 
`p_views` INT NOT NULL , 
INDEX (`p_id`) 
) ENGINE = MYISAM 

CREATE TABLE `tbl_categories` (
`c_id` INT NOT NULL , 
`c_views` INT NOT NULL , 
INDEX (`c_id`) 
) ENGINE = MYISAM 

CREATE TABLE `tbl_pages` (
`pg_id` INT NOT NULL , 
`pg_views` INT NOT NULL , 
INDEX (`pg_id`) 
) ENGINE = MYISAM 

Или у меня есть 1 стол хранения всех, например,

CREATE TABLE `tbl_views` (
`view_id` INT NOT NULL , 
`view_type` VARCHAR(10) NOT NULL , 
`view_views` INT NOT NULL , 
INDEX (`view_id`) 
) ENGINE = MYISAM 

Где view_type - это либо продукты, категории или страницы.

Каковы будут преимущества/недостатки каждого решения?

Заранее спасибо.

ответ

2

Мне очень нравится метод таблицы 1, это сохраняет базу данных незагроможденной, что я считаю важным.

Кроме того, позже вы можете захотеть добавить другой тип, вам не нужно будет добавлять другую таблицу, просто строку с другим представлением view_type.

0

Держите их в одном столе лучше, скажем, в экземпляре вам нужно выбрать no. мнений всех 3 вместе было бы намного проще и быстрее получить доступ к одной таблице по сравнению с тремя отдельными таблицами или сказать, что вам нужно обновить номер. просмотров двух или более view_type снова намного лучше

0

В этом случае я предлагаю пойти с одной таблицей. Единственное различие между тремя таблицами - это тип, поэтому я не думаю, что они необходимы. В качестве дополнительного бонуса к использованию только одной таблицы, следует добавить новый тип представления, вам не нужно создавать новую таблицу базы данных - вы можете просто использовать новый ключ view_type. Однако, если вам нужны разные фрагменты данных для разных типов представлений (например: «страницы», требуется столбец «x», а «категории» - столбец «Y»), тогда вам нужны отдельные таблицы (это называется базой данных нормализация).

0

Мое решение о том, какой метод использовать, зависит от того, сколько записей требуется и насколько вероятен объем информации. Если вы просто перечисляете несколько просмотров, одна таблица хороша.

Если количество товаров + категории + страницы меньше тысячи, я бы объединил их в одну таблицу. Преимущество состоит в том, что если вы захотите позже добавить поле (пример: устаревший флаг), вам нужно будет добавить его только в одну таблицу. Недостатком является то, что вы используете (немного) больше места, то есть память &.

По мере увеличения количества записей разделение списков может повысить производительность. Если один тип намного больше, чем другие, меньшие типы могут увязнуть при анализе или обслуживании таблицы. Если время рассматривает типы по-разному, пространство может стать проблемой.

Пример: Если продукты начинают нуждаться в дополнительной информации (например, стиль, цена или кому разрешено ее просматривать), но страницы и категории никогда не выполняются, таблица резервирует пространство, которое страницы и категории никогда не будут использовать. Затем записи Pages и Category начинают выглядеть глупо, смешанными с Продуктами.

Смежные вопросы