Ребят, не могу разобраться.
У меня есть три класса.
1) User (методы: создание, обновление, удаление) в mysql для пользователей отдельная таблица.
2) Organisation (методы: создание, обновление, удаление) в mysql для организаций тоже отдельная таблица.
3) Invoice (счета) (методы: создание, обновление, удаление) в mysql для счетов отдельная таблица, но содержит id_user и id_org.
Получается, что у меня третий класс Invoice грохнется, если я переименую какой-то столбец в таблицах пользователи или организации.
Я неправильно выделил сущности, или в чем причина?
А зачем Инвоису айди организации?
Юзер привязан к организации, счет привязан к юзеру. айди организации как foreign key должен быть у юзера, который пренадлежит какой-либо организации.
Конечно если ты взял счет как "association class", даже в этом случае почему должно что-то грохнуться? если ты сделаешь связь (забыл название, вроде каскад), то к примеру при переименовании организации, эти же операции должны апдейтнутся и в связующих операциях. Т.е. организация А, станет организаций Б как в столбце, где ты это переименовал, так же и в счетах и пользователях. упд, а нет, все же каскад (on update cascade), значит еще что-то помню хД
Макс Васильев, ну что я могу тут сказать... Конечно может быть и придумали уже методики, как такого избежать. Но я на своей памяти такого не припомню.
Пэтому и надо относится к проэктировке проекта очень тчательно. Не просто так же говорят, что кодинг - это всего-лишь 10-30% от всего времени проекта. А если бы было так просто раааз и поменял архитектуру, то конечно все было бы легко))
Могу разве что посоветовать делать качественную документацию, чтобы при каких-либо изменениях можно было почитать, что надо изменить с этими изменениями. И я молчу уже о помощи "новым" разрабам. Эта касается так же и тебя, ибо ты через пол года- год забудешь об этом в первую очередь))
Макс Васильев, вообще, все верно. Опять же если ты хочешь, чтобы счет был так же привязан к организации, а не исключительно к юзеру. Юзер айди и айди организации служат форейн ключами. И в случае апдейта какого либо из этих параметров должен стоять каскад, который обновил бы всю цепочку корреляций, дабы избежать в будущем всяких аномалий.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.