Здравствуйте, Gattaka, Вы писали:
G> D>Пока звучит как бездумная денормализация.
G> Ну я выше приводил уже список таблиц. Продублирую: "Таблицы User(Id, Name, Property), Network_Node(Id, Name, Property), User_User(User1Id, User2Id), Network_Node(Node1Id, Node2Id), UserOnNode(NodeId, UserId)"
G> Что здесь бездумно денормализовано и как бы вы нормализовали? Какой у вас получился бы список таблиц?
Начнем с того что в твоем описании фигурируют какие-то роли
Итак, админ запускает приложение. Выбирает список узлов, правой кнопкой — назначить роль. Роль назначается на узлы, а также если на узле есть зарегестрированные пользователи (их может быть несколько, предположим что один) и если эти пользователи имеют связи между собой — нужно установить связи между сетевыми узлами, только если эти связи не были запрещены админом до этого, если нет запретов со стороны других ролей и эти связи еще не существуют. Плюс у связи может быть статус, но это опустим — нужно назначать в только для определенных статусов связей.
Далее, property у нода и пользователя-это что за зверь? Для каждого свойства своя колонка? Они пересекаются между user, node? Как могут существать 2 таблицы Network_Node? Что такое User_User, UserOnNode(а почему тут вдруг отказались от underscore нейминга?)? А как запрещаются связи? И еще 100500 вопросов и потенциальных ответов на них из которых я сделал вывод что тут присутствует денормализация(вероятно не к месту) и как следствие попытки добиться консистентности данных через ХП.