Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Зашел в тупик - две сущности, FK и каскадное удаление / 17 сообщений из 17, страница 1 из 1
03.10.2013, 10:19
    #38415095
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
Имеем два варианта связывания модели:

ЛИБО а)
1. Две связанных сущности -
МЕСТО(PK:PlaceID, PlaceName) и ОБОРУДОВАНИЕ(PK:HwID, HwName, FK:PlaceID)
2. Каждая запись в ОБОРУДОВАНИИ должна быть обязательно привязана(NOT NULL) к сущности МЕСТО,
по вторичному ключу PlaceID(NOT NULL)
3. При удалении записи в таблице МЕСТО, удаляются все связанные записи в таблице ОБОРУДОВАНИЕ
(DELETE CASCADE)

Плюсы: удобство в контроллере для управления сущностями в БД
Минусы: удаляются все! связанные с МЕСТОМ записи в таблице ОБОРУДОВАНИЕ (что неприемлемо)

ЛИБО б)
1. Две связанных сущности -
МЕСТО(PK:PlaceID, PlaceName) и ОБОРУДОВАНИЕ(PK:HwID, HwName, FK:PlaceID)
2. Каждая запись в ОБОРУДОВАНИИ может быть привязана(NOT NULL) или не может быть
привязана(NULL) к сущности МЕСТО, по вторичному ключу PlaceID(ALLOW NULL)
3. При удалении записи в таблице МЕСТО, необходимо сначала обнулить все связи (PlaceID)
с этим МЕСТОМ в таблице ОБОРУДОВАНИЕ

Плюсы: все связанные записи не удаляются (что необходимо)
Минусы: сложность написания кода обработчика в контроллере для обнуления всех связанных позиций,
нарушение соглашения EntityFramework, недостаток знаний по написанию такого кода

Вопрос:
Как решить данную проблему, какой вариант лучше использовать, что можно сделать?
Может быть нужно переделать модель и использовать промежуточную таблицу между ними?
...
Рейтинг: 0 / 0
03.10.2013, 10:21
    #38415099
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkoloкакой вариант лучше использоватьВы же сами сказали, что вариант "а" неприемлем
...
Рейтинг: 0 / 0
03.10.2013, 10:23
    #38415103
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
можеть быть есть 3-й вариант, я прошу совета
...
Рейтинг: 0 / 0
03.10.2013, 10:23
    #38415104
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
...
Рейтинг: 0 / 0
03.10.2013, 10:33
    #38415121
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
Спасибо, я попробую использовать это
...
Рейтинг: 0 / 0
03.10.2013, 10:34
    #38415123
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkolo,
кому они нужны, бесхозные записи оборудования
сделайте поле в таблице место - is_deletes признак что запись удалена
второе поле - date_out -время удаления записи
третье по настроению userid_delete - кто удалял запись.
так хоть у Вас целостность сохранится и история ..
...
Рейтинг: 0 / 0
03.10.2013, 11:33
    #38415232
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
Где-то в степиakkolo-kakkolo,
кому они нужны, бесхозные записи оборудования
сделайте поле в таблице место - is_deletes признак что запись удалена
второе поле - date_out -время удаления записи
третье по настроению userid_delete - кто удалял запись.
так хоть у Вас целостность сохранится и история ..

Т.е. вы хотите сказать, что необходимо создать только видимость удаления записи для пользователя, а в таблице МЕСТО данные на самом деле будут оставаться на месте?
...
Рейтинг: 0 / 0
03.10.2013, 11:38
    #38415240
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
да, во многих ИС это нормальная практика

вообще рекомендую такие вопросы задавать в http://www.sql.ru/forum/db-design
...
Рейтинг: 0 / 0
03.10.2013, 11:40
    #38415245
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
Хорошо, спасибо всем огромное!
...
Рейтинг: 0 / 0
03.10.2013, 11:45
    #38415260
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkolo,
как хотите, так и назовите, я бы мог предложить еще 2-3 варианта, но этот имхо лучше, вас первый не устраивает,
на второй что вы предлагаете встречный вопрос, а в чем профит тогда у вас в применении ограничения, в том что
ef авто сгенерирует поле оборудование, так вы и так можете убрать ограничение и генерировать в ручную ?
...
Рейтинг: 0 / 0
03.10.2013, 12:00
    #38415286
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
Где-то в степиakkolo-kakkolo,
кому они нужны, бесхозные записи оборудования+1, оборудование это материальный объект, он не может быть "нигде". В крайних случаях оно "в чулане", "на помойке", "списано". "Списано" вполне можно сделать виртуальным местом. Всего лишь еще одна запись в таблице мест вместо нагромождения промежуточных сущностей.
...
Рейтинг: 0 / 0
03.10.2013, 13:03
    #38415399
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
А если, все же, мне когда-нибудь через лет 10-20 понадобится удалить пару десятков тысяч "удаленных" записей в таблице МЕСТО для экономии места на сервере, то в таком случае удалятся все связанные записи в таблице ОБОРУДОВАНИЕ, а записи об этом оборудовании мне еще понадобятся.
...
Рейтинг: 0 / 0
03.10.2013, 13:10
    #38415416
akkolo-kakkolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
Где-то в степиakkolo-kakkolo,
как хотите, так и назовите, я бы мог предложить еще 2-3 варианта, но этот имхо лучше, вас первый не устраивает,
на второй что вы предлагаете встречный вопрос, а в чем профит тогда у вас в применении ограничения, в том что
ef авто сгенерирует поле оборудование, так вы и так можете убрать ограничение и генерировать в ручную ?

Сейчас меня первый вариант устраивает с применением IsDeleted.
Второй вариант меня смущает чисто по вопросу соглашений EF, что правильно программровать ТАК, а не СЯК
...
Рейтинг: 0 / 0
03.10.2013, 13:57
    #38415499
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkolo,
а что вас смущает, что предложил Antonariy, это вполне законная практика, и многие ей пользуются, она прекрасно ложится под ef
...
Рейтинг: 0 / 0
03.10.2013, 14:00
    #38415502
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkolo,
автормне когда-нибудь через лет 10-20 понадобится удалить пару десятков тысяч "удаленных" записей в таблице МЕСТО для экономии места на сервере
не смешите меня, пру десятков миллионов, я бы еще задумался, ну и конечно предложил еще финт, а пару десятков тысяч = это просто
пыль для хранилища
...
Рейтинг: 0 / 0
03.10.2013, 15:26
    #38415655
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkoloА если, все же, мне когда-нибудь через лет 10-20 понадобится удалить пару десятков тысяч "удаленных" записей в таблице МЕСТО для экономии места на сервере, то в таком случае удалятся все связанные записи в таблице ОБОРУДОВАНИЕ, а записи об этом оборудовании мне еще понадобятся.Если это вы мне, то не вижу связи с моим предложением. При удалении места оборудование переезжает на место "списано", а запись отправляется сразу фтопку без всяких isDeleted.
...
Рейтинг: 0 / 0
03.10.2013, 16:46
    #38415841
Зашел в тупик - две сущности, FK и каскадное удаление
akkolo-kakkoloА если, все же, мне когда-нибудь через лет 10-20 понадобится удалить пару десятков тысяч "удаленных" записей в таблице МЕСТО для экономии места на сервере, то в таком случае удалятся все связанные записи в таблице ОБОРУДОВАНИЕ, а записи об этом оборудовании мне еще понадобятся.
А вот это означает, что оборудование не должно зависеть от места.
А для связки оборудования с местом - отдельная таблица
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Зашел в тупик - две сущности, FK и каскадное удаление / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]