В статистической системе я должен сохранить маленькие кусочки информации об одном посещении на многих столах или только на одном столе?

0

Я уже давно это задавался. Название означает мой вопрос. Что вы предпочитаете?

Я сделал pic, чтобы сделать мой вопрос более ясным.

Изображение 174551

Почему я даже об этом думаю? Разве одна таблица не является наиболее очевидным вариантом? Ну, вроде. Это самый простой способ, но подумайте более практично. Когда в одной таблице есть тонна данных, и пользователь хочет видеть только статистику о браузерах, которые посетители используют, это может быть не так успешно. Разумеется, лучше брать данные браузера из одной таблицы.

У нескольких таблиц есть и недостатки. Запись данных занимает больше времени и ресурсов. С одной таблицей нужен только один mysql-запрос.

В любом случае, я выяснил решение, которое, я думаю, имеет смысл. Данные записываются в какую-то временную таблицу. Все эти строки будут экспортированы позже в несколько таблиц (запланировано script). Таким образом, система не занимает время загрузки с пользовательской страницы, но данные остаются быстрыми для просмотра.

Давайте обсудим здесь. Я надеюсь поднять некоторые мнения.

Какой из них лучше? Давайте узнаем!

Теги:
performance
database-design

2 ответа

2
Лучший ответ

Дата, браузер и ОС связаны друг с другом по отдельности... Без дополнительной информации, требующей дальнейшего выделения записей, я создавал бы одну таблицу, а не две.

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

0

Что вы действительно думаете о том, следует ли денормализовать таблицу или использовать первую обычную форму. Когда вы используете 1NF, у вас есть таблица, которая выглядит так:

Table statistic
id     | date       | browser_id      | os_id
---------------------------------------------
1      | 127003727  | 1               | 1
2      | 127391662  | 2               | 2
3      | 127912683  | 3               | 2

И затем, чтобы объяснить, какой браузер и какой клиент использовали, вам нужны другие таблицы:

Table browser
id      | name        | company      | version
-----------------------------------------------
1       | Firefox     | Mozilla      | 3.6.8
2       | Safari      | Apple        | 4.0
3       | Firefox     | Mozilla      | 3.5.1

Table os
id      | name        | company      | version
-----------------------------------------------
1       | Ubuntu      | Canonical    | 10.04
2       | Windows     | Microsoft    | 7
3       | Windows     | Microsoft    | 3.11

Как уже указывал OMG Ponies, это не очень хороший пример для создания нескольких объектов, поэтому можно смело идти с одной таблицей, а затем думать о том, как он/она будет иметь дело с необходимостью, скажем, найти все записи с соответствующим именем браузера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню