В статистической системе я должен сохранить маленькие кусочки информации об одном посещении на многих столах или только на одном столе? - PullRequest
0 голосов
/ 29 августа 2010

Мне уже давно интересно. Название обозначает мой вопрос. Что вы предпочитаете?

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

Single or multiple tables?

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 29 августа 2010

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

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

0 голосов
/ 29 августа 2010

Что вы действительно думаете о том, стоит ли денормализовать таблицу или использовать первую нормальную форму .Когда вы используете 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, это не хороший пример создания нескольких сущностей, поэтому можно смело идти за одной таблицей, а затем подумать о том, как он / она собирается справиться с необходимостью, скажем, найти все записи.с соответствующим именем браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...