2016-10-10 2 views
0

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

Вот сценарий, я работаю с:

У меня есть Метки таблицы со столбцом идентификации ID. Метки могут быть выбраны через веб-приложение для категоризации историй, представленных пользователем. Когда база данных была впервые засеяна; как теги были высеяны в порядке вместе. Как вы можете видеть, все кампусы (города) были 1-4, Колледжи (предметы) составляют 5-7, а население - 8-11.

Если эта база данных находится в рабочем состоянии, и клиент хочет добавить новый тег Campus (City), что это лучший способ сделать это?

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

Это типичный? Есть ли лучшие способы настроить базу данных или обработать эту ситуацию, чтобы все оставалось более организованным?

Спасибо

+----+------------------+---------------+-----------------+--------------+--------+----------+ 
| ID | DisplayName | DisplayDetail | DisplayCategory | DisplayOrder | Active | ParentID | 
+----+------------------+---------------+-----------------+--------------+--------+----------+ 
| 1 | Albany   | NULL   |    1 |   0 |  1 | NULL  | 
| 2 | Buffalo   | NULL   |    1 |   1 |  1 | NULL  | 
| 3 | New York City | NULL   |    1 |   2 |  1 | NULL  | 
| 4 | Syracuse   | NULL   |    1 |   3 |  1 | NULL  | 
| 5 | Business   | NULL   |    2 |   0 |  1 | NULL  | 
| 6 | Dentistry  | NULL   |    2 |   1 |  1 | NULL  | 
| 7 | Law    | NULL   |    2 |   2 |  1 | NULL  | 
| 8 | Student-Athletes | NULL   |    3 |   0 |  1 | NULL  | 
| 9 | Alumni   | NULL   |    3 |   1 |  1 | NULL  | 
| 10 | Faculty   | NULL   |    3 |   2 |  1 | NULL  | 
| 11 | Staff   | NULL   |    3 |   3 |  1 | NULL  | 
+----+------------------+---------------+-----------------+--------------+--------+----------+ 
+1

Это типично. Проблема, которую вы собираетесь иметь, - это поддерживать столбец DisplayOrder, поскольку вы получаете все больше записей. –

+0

@ DanBracuk хорошая точка ... На самом деле я сталкиваюсь с такими проблемами при создании и изменении данных семян. Мне еще предстоит найти хороший способ справиться с этим. Есть ли решение, чтобы лучше управлять этим? – Michael

+0

Лучший способ, который я нашел, - иметь представление для каждой категории с триггерами для обработки DML. Это решает несколько проблем. Выпадающий список, который показывает только города, может иметь вид Города как его единственный объект данных. То же самое с выпадающим майором и т. Д. Им не нужно даже знать о категориях отображения или активных флагах (неактивная запись даже не отображается в представлении). Техническое обслуживание также может быть выполнено через представления. Триггер Delete может просто перевернуть флаг Active, если это желаемый результат. – TommCatt

ответ

3

Термины «верхние» и «нижние», которые вы используете на самом деле не применяется. «Олбани» не находится в «Верх» таблицы - это просто верх верхней части конкретного представления, которое вы видите, когда вы запрашиваете таблицу без указания значимого порядка сортировки. По умолчанию используется порядок сортировки, основанный на идентификаторе или внутреннем параметре ROWID, который не является способом для отображения этих данных logical.

Данные в таблице по порядку не указаны. Если вы хотите просмотреть свои теги, организованные по их категории, просто закажите свой запрос по DisplayCategory (и, вероятно, по следующему адресу DisplayOrder), и вы увидите, что ваши данные правильно организованы. Вы даже можете создать постоянный вид, который сортирует его таким образом для вашего удобства.

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