Я уже давно это задавался. Название означает мой вопрос. Что вы предпочитаете?
Я сделал pic, чтобы сделать мой вопрос более ясным.
Почему я даже об этом думаю? Разве одна таблица не является наиболее очевидным вариантом? Ну, вроде. Это самый простой способ, но подумайте более практично. Когда в одной таблице есть тонна данных, и пользователь хочет видеть только статистику о браузерах, которые посетители используют, это может быть не так успешно. Разумеется, лучше брать данные браузера из одной таблицы.
У нескольких таблиц есть и недостатки. Запись данных занимает больше времени и ресурсов. С одной таблицей нужен только один mysql-запрос.
В любом случае, я выяснил решение, которое, я думаю, имеет смысл. Данные записываются в какую-то временную таблицу. Все эти строки будут экспортированы позже в несколько таблиц (запланировано script). Таким образом, система не занимает время загрузки с пользовательской страницы, но данные остаются быстрыми для просмотра.
Давайте обсудим здесь. Я надеюсь поднять некоторые мнения.
Какой из них лучше? Давайте узнаем!
Дата, браузер и ОС связаны друг с другом по отдельности... Без дополнительной информации, требующей дальнейшего выделения записей, я создавал бы одну таблицу, а не две.
Конструкция базы данных основана на создании таблиц, которые отражают сущности, и я не вижу двух отдельных объектов в приведенном примере. Рассмотрите возможность использования представлений для обслуживания данных без дублирования данных в базе данных; централизованная копия данных упрощает управление данными...
Что вы действительно думаете о том, следует ли денормализовать таблицу или использовать первую обычную форму. Когда вы используете 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, это не очень хороший пример для создания нескольких объектов, поэтому можно смело идти с одной таблицей, а затем думать о том, как он/она будет иметь дело с необходимостью, скажем, найти все записи с соответствующим именем браузера.