Dites au développeur qu'il est bienvenu d'ajouter une telle logique au code de l'application pour empêcher ces mises à jour. Mais, aussi que vous n'allez pas supprimer le DENY
. Si / quand le jour vient un jour (etpourrait ne pasprobablement pas) que quelqu'un obtient une erreur en essayant de mettre à jour l'une de ces colonnes, alors vous pouvez avoir une discussion pour savoir si vous supprimerez ou non DENY
, ce qui nécessitera une justification réelle et solide pour laquelle quelqu'un mettrait à jour cette valeur dans le première place.
Le point étant: il devrait y avoir une véritable analyse de rentabilisation sur laquelle les gens passent leur temps. Le temps est en forte demande mais en pénurie, donc vous (et tout le monde) avez des choses plus importantes à faire que de changer le système en fonction de l'opinion de quelqu'un. Il y aura toujours une variété d'opinions (espaces vs tabulations, n'importe qui?) Et vous pourriez passer des années à changer cela d'avant en arrière si ce développeur quitte et est remplacé par quelqu'un qui s'oppose fortement à ce que ces champs puissent être mis à jour. Si aucun client ne le demande (ou quelque chose qui l'exige), et qu'il n'y a aucun avantage tangible (même un avantage retardé tel que le nettoyage de la dette technique, qui est difficile à afficher le retour sur investissement, mais qui en vaut la peine étant donné que le les chances que ce temps passé n'entraîne pas d'économies réelles à long terme sont minimes, voire nulles), puis fermez la demande ou placez-la dans l'arriéré avec une faible priorité, même dans les cas où l'idéalisme dit qu'elle devrait être modifiée (ce n'est pas un de ces cas, mais mentionné pour ceux qui pensent que c'est le cas). L'idéalisme est idéal pour les conversations, mais les entreprises ne peuvent pas payer le loyer, les services publics, les employés, les taxes, etc. avec des idéaux.
@ jpmc26 a raison sur le besoin de communication, mais pas exactement sur ce qui doit être communiqué. Oui, vous devez écouter ce que les autres demandent et chercher à comprendre leur raisonnement, ce qui inclut de poser des questions si vous n'êtes pas clair sur quoi que ce soit.
TOUTEFOIS, la base de données n'est pas subordonnée à l'application, et les professionnels de la base de données (administrateurs, ingénieurs, quel que soit le nom utilisé par votre entreprise) ne sont pas subordonnés aux développeurs (comme cela semble être impliqué dans cette réponse). Vous ne travaillez pas pour les développeurs, vous travaillez pour l'entreprise, tout comme eux. Il s'agit d'un effort d'équipe et vous ne devriez pas demander pardon pour avoir fait votre travail. Cela dit, nous, les types de calcul, ne sommes pas (généralement) connus pour nos compétences en communication interhumaine, donc, vous devez vraiment vous assurer que les autres vous comprennent , quel est votre raisonnement, quelles sont vos responsabilités ET comment ces choses fonctionnent réellement .
J'ai mis cette dernière partie parce qu'il y a un haut degré de malentendu, de désinformation et de manque de connaissances (même certains ici sur cette même page). Par exemple, il semble y avoir cette notion que toutes les règles sont des règles commerciales. Nous devons expliquer qu'il existe une distinction entre les règles de données et les règles métier (@Aaron a appelé cela "contrainte de workflow vs contrainte de données" dans un commentaire sur la question), et que si la plupart des données appartiennent naturellement à l'application, certaines données appartient en fait au modèle de données. Un DBA doit-il dicter aux développeurs comment les données d'application seront contraintes? Bien sûr que non. Il est de notre devoir de montrer comment les données d'application peuventêtre contraint. Si une violation d'une règle métier liée aux données d'application peut causer des dommages et que l'application n'est pas le seul moyen à 100% de manipuler les données, alors peut-être qu'une contrainte de vérification pourrait vraiment aider (et qu'elles ne sont pas difficiles à modifier ou à supprimer) ).
MAIS, venant de l'autre côté, les développeurs ne devraient pas dicter comment les données du modèle de données (c'est-à-dire les métadonnées) sont traitées. Cela inclut les champs d'audit (tels que les colonnes created_on
/ created_by
) et les colonnes PK / FK (ces valeurs ne sont censées être connues qu'en interne et ne sont pas transmises aux clients). Ces données ne sont pas ce que l'application stocke sur les clients (même si l'application peut voir les valeurs et même les utiliser, comme avec les ID), c'est ce que le modèle de données stocke sur les données de l'application.
Il est donc logique d'utiliser des règles de données pour protéger les données du modèle de données. Et cela n'implique pas que vous êtes sur le point de commencer à ajouter des contraintes ou des restrictions sur les données d'application. MAIS, il sera difficile de faire avancer la conversation d'une manière vraiment productive si cette distinction n'est pas comprise.