Хранение настроек внутри БД - PullRequest
0 голосов
/ 09 августа 2010

Может кто-нибудь сказать мне, как лучше хранить множество различных настроек в база данных? Должен ли я использовать одну таблицу с идентификатором, ключом, значением?

Вот пример того, что я должен хранить:

PageNavigation.Font = "fontRegular";
PageNavigation.FontSize = 14;
PageNavigation.FontColor = 0x000000;
PageNavigation.SubFont = "fontRegular";
PageNavigation.SubFontSize = 12;
PageNavigation.SubFontColor = 0x000000;
PageNavigation.width = 200;
PageNavigation.height = 22;
PageNavigation.spacing = 5;
PageNavigation.LetterSpacing = 0;
PageNavigation.top = 250;
PageNavigation.rightMargin = 24;
PageNavigation.RollOverColor = 0xFF3300;
PageNavigation.ActiveColor = 0xCCCCCC;
PageNavigation.Icon = "/assets/images/arrow_default.png";
PageNavigation.IconLeft = 5;
PageNavigation.TextLeft = 5;
PageNavigation.SubIcon = "";
PageNavigation.SubIconLeft = 5;
PageNavigation.SubTextLeft = 22;

PageViewer.BackgroundColor = 0xe9edee;
PageViewer.ThumbSource = "";
PageViewer.maxVisible = 17;
PageViewer.ThumbWidth = 38;
PageViewer.ThumbHeight = 49;
PageViewer.ThumbActiveBorder = 2;
PageViewer.ThumbActiveBorderColor = 0xEE2233;
PageViewer.ThumbSpacing = 10;
PageViewer.ThumbLeft = 20;
PageViewer.ThumbBorderColor = 0xFF3300;
PageViewer.ThumbBorderSize = 1;
PageViewer.ThumbRollOverColor = 0xDDDDDD;
PageViewer.ThumbActiveColor = 0xCCCCCC;
PageViewer.ThumbSelectColor = 0xCCCCCC;
PageViewer.ThumbShadow = 1;
PageViewer.ThumbLayout = "Layout1";
PageViewer.ButtonLayout = "ButtonLayout1";

Я новичок в разработке баз данных и не знаю хороших ресурсов для изучения db-design

Ура, Дом

Ответы [ 2 ]

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

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

Конечно, можно создать таблицу для каждого типа настроек, например,

create table Settings
(
  settings_id primary key int not null,
  name VARCHAR(255) not null,
);

create table DoubleValues
(
  value double not null
  fk_setting int not null;
);

create table ColorValues
(
  value char(8) not null
  fk_setting int not null;
);

..

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

Другим способом было бы использовать простой текстовый файл и считывать настройки в хеш-таблицу, что будет самым быстрым способом. Может быть, вы можете взглянуть на базу данных noSQL, такую ​​как MongoDb или CouchDb.

Подумайте, являются ли ваши настройки в основном статическими или как часто новые ключи настроек вставляются или удаляются.

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

лучшее, что я думаю, это создать поле для каждого типа настроек. Что это делает,

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

ETC

...