2016-03-30 1 views
0

У меня есть несколько таблиц, в которых хранятся соответствующие записи для моей системы. Например, может быть таблица под названием templates и logos. Но для каждой таблицы одна из строк будет по умолчанию в системе. Я бы обычно добавил столбец is_default для каждой таблицы, но все строки, кроме 1, были бы 0.MySQL - Сохранение значений по умолчанию для системы

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

Правильно ли один из способов, чем другой? Первый способ: есть много столбцов с одинаковым значением, кроме 1. И второе, я полагаю, мне просто нужно сделать соединение, чтобы получить детали, а таблица растет боком всякий раз, когда я добавляю новую таблицу, которая имеет значение по умолчанию ,

+0

Предоставьте 'SHOW CREATE TABLE' для каждого подхода, а также несколько рядов образцов. Также расскажите нам о «SELECT», которые будут извлекать данные. –

ответ

1

Решения в основном отличаются тем, что для каждой таблицы назначено не более одного значения по умолчанию.

  • is_default решение: Здесь может случиться так, что более чем одна запись в таблице имеет значение 1. Это зависит от SQL диалекта базы данных, может ли это быть исключены ограничение. Насколько я понимаю MySQL, такого рода ограничение не может быть выражено там.

  • Отдельное настольное решение: здесь вы можете легко убедиться в дизайне стола, что в таблице присутствует не более одного значения по умолчанию. При назначении ограничений not null вы также можете принудительно устанавливать значения по умолчанию для определенных таблиц или нет. Когда вы вводите новую таблицу, вы все равно расширяете свою базу данных (и программное обеспечение, работающую над ней), поэтому дополнительный атрибут на таблице default не повредит.

средний курс может быть следующее: Есть таблица

Defaults 
id 
table_name 
row_id 

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

+0

Удивительный, спасибо за объяснение. – kenshin9