2013-05-10 7 views
0

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

Моя перспектива. Поставьте значения по умолчанию в базу данных. Blank и Not Completed являются допустимыми параметрами и должны храниться в базе данных в качестве опции для выбора.

Его Перспектива: удалить значения по умолчанию из базы данных. Для первого элемента, если его нет в базе данных, тогда код должен предоставить значение по умолчанию. Если выбрано какое-либо другое значение, то оно сохраняется в базе данных, иначе оно равно NULL.

Это может начаться, но я просто ищу мнения людей больше всего на свете.

+1

Лучшая практика - наиболее подходящая для ситуации. –

ответ

0

ИМХО, как и большинство вещей, это зависит. Если Not Completed является допустимым значением в контексте ваших данных, оно должно быть в базе данных. Например, если вам нужно указать, что конкретное поле в форме не было выполнено пользователем. Однако, если вы пытаетесь указать отсутствующие данные, то NULL - это путь.

+0

Оба ответа были замечательными ответами, но из-за его внешнего вида мы собираемся идти по маршруту выше. Поскольку «Не завершено» является допустимым значением в контексте наших данных, имеет смысл помещать его в базу данных. –

0

Я предпочитаю сохранять значения по умолчанию из базы данных. Мои значения по умолчанию в основном NULL, если не установлены.

Причина:

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

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

Pro:

  • код легко читать/управлять
  • идентификаторы или клавиши увеличения производительности (экв VARCHAR против TINYINT)

Con:

  • Не знаю.

Пример:

# Model 
class User_Model { 

    const STATUS_DEFAULT  = null; 
    const STATUS_ACTIVE  = 1; 
    const STATUS_INACTIVE  = 2; 
    const STATUS_BANNED  = 3; 
    const STATUS_NOT_COMPLETED = 4; // you could save the int 4   
            // instead of varchar "not completed" 

    public function __construct() { 
     self::STATUS_DEFAULT = self::STATUS_ACTIVE; 
    } 
} 

# simple multi-language 
$lang   = "en"; 
$languages  = array(); 
$languages["en"] = array(
    "user_status_1" => "active", 
    "user_status_2" => "not active", 
    "user_status_3" => "banned", 
    "user_status_4" => "not completed" 
); 

echo $languages[$lang]["user_status_4"]; // output: not completed 
0

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

Смежные вопросы