Да, в этом вся идея базы данных, а не неконтролируемого места хранения данных.
Они не определены пользователем, они определены как Data Modeller или Администратор базы данных или Владелец базы данных (все конкретные термины). Если вы оставите это на усмотрение пользователей или разработчиков, они будут читать мусор, доступный бесплатно или в Интернете, и реализовывать монстра.
Идея базы данных на протяжении более 30 лет состоит в том, что полное ее определение внутри базы данных. За этот период появилось много стандартов (от международных органов по стандартизации, а не от отдельных поставщиков или продавцов программного обеспечения), которые постепенно идентифицировали различные стандарты для повышения целостности баз данных. Вендоры SQL внедрили их (хорошо, это не бесплатная моб, но они не предоставляют SQL ISO / IEC / ANSI; они мошеннически используют стандартный термин «SQL» в этих продуктах).
В стандартном SQL мы имеем следующие декларации (т. Е. не код вне базы данных, не триггеры):
Ссылочная целостность. Родительская строка, на которую ссылается дочерний элемент, должна существовать до того, как дочерняя строка может быть вставлена. Это и есть определение отношения, так что нет никакого удвоения.
Целостность данных. Различные формы:
- Сначала убедитесь, что используется правильный тип данных. Последовательно. Это исключает помещение значений символов в целочисленные столбцы; 10-значные значения в 4-значных столбцах и т. Д.
- ПРАВИЛА. Это гарантирует соблюдение всех правил для столбца (например, вашего примера).
- ПРОВЕРЬТЕ Ограничения. Это позволяет сравнивать значения столбцов с другими столбцами, прежде чем разрешить вставку. Они могут быть простыми или сложными.
- (с помощью триггеров вы можете реализовать любые дополнительные ограничения, которые вышеупомянутые объявления не предоставляют)
,
- Транзакционная целостность. Это гарантирует, что целостность между строками в разных таблицах поддерживается, и на данные можно положиться.
Я повторяю, если в нем не реализованы эти основы (в каждом столбце), это не база данных, а просто место хранения данных, которые не имеют целостности.
Вы можете легко это подтвердить, проверив некоторые руководства по стандартному SQL или сам стандарт SQL (оба доступны бесплатно в Интернете).
Любая информация, противоречащая вышесказанному, найденная в Интернете, не заслуживает ответа.
- В наши дни любой псих с клавиатурой и подключением может публиковать что угодно. Вики написана неквалифицированными любителями, и «определения» меняются каждую неделю, поскольку их редактируют чуть менее неквалифицированные любители.
- Большинство из них пишут о том, во что они верят, без какого-либо реального опыта, проверки или подтверждения своих убеждений.
Спорить со стандартами - пустая трата времени; у них есть цель; они были созданы умами, превосходящими наши; и они давно (30 лет!) были приняты (востребованы) более крупными организациями и правительствами. Небольшие организации могут сэкономить время, следуя этим стандартам, вместо того чтобы полагать, что они каким-то образом «отличаются». Мы имеем дело с физической наукой и техникой в этой отрасли, а не с магическим мышлением.
Бизнес-правила на уровне приложений
Ну, если вы разместите правила на сервере, они гарантированы сервером. Я бы поверил, что в любой день из-за безошибочного выполнения любого прикладного уровня, особенно написанного людьми, которые не разбираются в базах данных или их назначении.
Предполагается, что базы данных полностью независимы от приложений (обратите внимание на множественное число), которые их используют. Было бы глупо размещать эти правила в пяти приложениях, а не в одном месте, в базе данных. Что происходит при изменении правил, может ли кто-нибудь гарантировать, что все приложения будут обновлены правильно и в унисон?
Помните также, что данные являются корпоративным, а не ведомственным активом.Корпорация внедряет стандарты, так что они могут избежать потери времени администраторами департаментов, у которых есть глупые аргументы, которые были разрешены 30 лет назад за пределами их департамента.
Опять же, люди публикуют то, что они думают,как будто они были первыми, кто прошел этот мыслительный процесс, без каких-либо квалификаций (что означало бы, что они знают о стандартах) или понимания или реального опыта (который мог бы изменить их убеждения очень быстро).
Поэтому:все бизнес-правила, которые относятся к данным, в любой форме или форме, должны быть помещены вместе с данными в стандартный каталог МЭК / ИСО / ANSI, в базе данных.
Любая бизнес-логика (зависит от приложения и использования)) может быть успешно размещен в любом месте, где решает бизнес.Таким образом, целостность корпоративного актива сохраняется, а ущерб ограничивается отделом, занимающимся магическим мышлением.