|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.03.2016, 12:55 | #1 |
Регистрация: 27.11.2015
Сообщений: 9
|
Иерархия в БД
Доброго всем!
Есть задача построить БД с иерархической структурой. Нашел много информации про использование parent_id и использование дополнительной таблицы для хранения структуры. Во всех случаях используется id записи и на его основании строится структура вложенности ( если я, конечно, все правильно понял ). Но как быть если записи часто перезаписываются и соответственно часто меняются id. Бывает так, что из базы одновременно удаляется и вносится более 1000 записей в разных категориях. Тогда при каждой такой операции придется переназначать связку id - parent_id? У меня вот какой вопрос: возможно ли вместо parent_id указывать имя родительского элемента? Например: id | element | parent | ------------------------- 1 | elem 1 | 2 | elem 2 | elem 1 | 3 | elem 3 | elem 2 | 4 | elem 4 | elem 2 | 5 | elem 5 | elem 4 | |
09.03.2016, 13:27 | #2 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
id (от слова identification ) - это уникальный код, однозначно указывающий на некий объект. Он меняться не должен. Совсем. Это раз. а во-вторых, Цитата:
Только в этом случае имя родительского элемента должно быть УНИКАЛЬНЫМ (т.е. выступать в роли естественного ключа. Это далеко не всегда допустимо и имеет ряд принципиальных недостатков (см. статью А.Тенцера "Искусственные ключи против естественных", например), однако на практике вполне допустимо). |
||
09.03.2016, 13:38 | #3 |
Регистрация: 27.11.2015
Сообщений: 9
|
под "перезаписываются" я имел ввиду удаление и последующее добавление такого же элемента. Например, удаление родительского элемента, а потом добавление такого же элемента, с тем же самым именем, но id у него будет уже другой.
За статью спасибо, буду изучать. |
09.03.2016, 13:51 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
Похоже, что Вам придётся менять логику приложения, где всё удаляется, а потом заново добавляется. Так тоже можно делать, но тогда нужно удалять всё - и родителей и потомков, а потом, при добавлении новых элементов прописывать заново новую иерархию. |
||
09.03.2016, 14:29 | #5 |
Регистрация: 27.11.2015
Сообщений: 9
|
Да, похоже на то. На как! Чет я совсем запуталси.
Давайте рассмотрим на примере сотрудников. Мне на примерах проще понимать. Есть несколько уровней иерархии и некоторое количество сотрудников. Во вложении. Таким образом получается, что поле с сотрудником одновременно является и категорией. При удалении или добавлении сотрудника, удаляется/добавляется категория. Как это правильно обработать? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Иерархия (с#) | s4egol | Помощь студентам | 0 | 30.11.2014 11:48 |
Иерархия классов на C# | s4egol | Помощь студентам | 4 | 05.09.2014 07:41 |
Иерархия С# | Skull_psyhothik | Помощь студентам | 2 | 22.03.2013 01:41 |
иерархия наследования | WizarD.89 | Общие вопросы по Java, Java SE, Kotlin | 1 | 07.11.2012 23:31 |
Иерархия | skyline_skyline | Microsoft Office Excel | 3 | 04.09.2009 13:00 |