Нормализация / Схема для классификации кросс-браузерных ошибок на основе движков рендеринга и версий браузера? - PullRequest
1 голос
/ 05 июля 2010

Я пытаюсь выбрать схему для хранения кросс-браузерных ошибок во всех механизмах рендеринга.

Вот что я имел в виду:

таблица browser_engines:

id  name  version
1   gecko 1.5
2   gecko 1.7
3   gecko 1.8
4   gecko 1.9.0
5   gecko 1.9.1

таблица версий браузера:

id  name      version  engine_id
1   firefox   3.0      4
2   firefox   3.5      5

Таблица browser_bugs:

id  name    description   engine_id
1   ff bug                4

Так что, если я исправлю первую ошибку, она отобразится в gecko 1.9.0, поэтому представление html отобразит браузер как Firefox 3.0.

Вопрос 1.1 : имеет ли эта схема смысл? Достаточно ли нормализовано?

Вопрос 1.2 : Каким типом данных должен быть столбец версии?

Ответы [ 2 ]

1 голос
/ 05 июля 2010

Вопрос 1.1: имеет ли эта схема смысл?Это достаточно нормализовано?

Эй!Это два вопроса.; -)

Эта схема предполагает некоторые вещи, такие как:

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

Если какой-либо из этих параметров не всегда , гарантированно имеет значение true, вам могут потребоваться некоторые таблицы пересечений "многие ко многим".1017 *

Вопрос 1.2: Каким типом данных должен быть столбец версии?

Я бы пошел с VARCHAR, чтобы учесть "4.0 релиз-кандидат 1" и тому подобное.Я бы позволил, по крайней мере, длину 30.

1 голос
/ 05 июля 2010

Я бы создал таблицу движка (то есть одну строку для геккона и FK от browser_engine до engine), аналогично таблице обозревателя.Это снизит требования к хранилищу и ускорит запросы.Я бы также подумал о том, чтобы сохранить версию в основных / второстепенных / ревизионных полях, чтобы упростить запрос «всех ошибок в ревизии 2.5 или более ранней» («10.0» <«2.5» - поэтому строки не подходят для такого запроса).*

...