Diga ao desenvolvedor que é possível adicionar essa lógica ao código do aplicativo para impedir essas atualizações. Mas também você não removerá o DENY
. Se / quando chegar o dia (epode nãoprovavelmente não vai) que alguém receba um erro ao tentar atualizar uma dessas colunas, então você pode discutir se deseja remover ou não o DENY
, o que exigirá uma justificação sólida e real do motivo pelo qual alguém estaria atualizando esse valor no diretório primeiro lugar.
A questão é: deve haver um caso de negócios real direcionando o que as pessoas gastam seu tempo. O tempo está em alta demanda e escasso fornecimento, para que você (e todos os demais) tenham coisas mais importantes a fazer do que mudar o sistema com base na opinião de alguém. Sempre haverá uma variedade de opiniões (espaços versus guias, alguém?) E você pode passar anos mudando isso de um lado para o outro se esse desenvolvedor sair e for substituído por alguém que se oponha fortemente àqueles campos que são atualizáveis. Se nenhum cliente estiver solicitando isso (ou algo que exija isso) e não houver benefício tangível (mesmo benefício atrasado, como a limpeza de dívidas técnicas, que é difícil de mostrar o ROI, mas vale muito a pena, pois o as chances de o tempo gasto não resultar em economia de custo real a longo prazo são reduzidas a zero), então feche a solicitação ou coloque-a no backlog com baixa prioridade, mesmo nos casos em que o idealismo diga que deve ser alterado (esse não é um desses casos, mas mencionado para os que pensam que é). O idealismo é ótimo para conversas, mas as empresas não podem pagar aluguel, serviços públicos, funcionários, impostos etc. com ideais.
@ jpmc26 está correto sobre a necessidade de comunicação, mas não exatamente sobre o que precisa ser comunicado. Sim, você deve ouvir o que os outros estão solicitando e procurar entender seu raciocínio, o que inclui fazer perguntas se você não tiver certeza sobre algo.
NO ENTANTO, o banco de dados não é subserviente ao aplicativo e os profissionais de banco de dados (administradores, engenheiros, qualquer que seja o nome que sua empresa use) não são subservientes aos desenvolvedores (como parece estar implícito nessa resposta). Você não trabalha para os desenvolvedores, trabalha para a empresa, da mesma forma que eles. Este é um esforço de equipe e você não deve pedir perdão por fazer seu trabalho. Dito isto, nós Computery tipos não são (em geral) conhecido por nossas habilidades de comunicação inter-humanos, por isso, você realmente precisa ter certeza de que os outros a entender que você , o que seu raciocínio é, quais são as suas responsabilidades, e como essas coisas realmente funciona .
Coloquei essa última parte porque há um alto grau de incompreensão, desinformação e falta de conhecimento por aí (mesmo alguns aqui nesta página). Por exemplo, parece haver essa noção de que todas as regras são regras de negócios. Precisamos explicar que há uma distinção entre regras de dados e regras de negócios (a @Aaron se refere a isso como "restrição de fluxo de trabalho versus restrição de dados" em um comentário sobre a pergunta) e que, embora a maioria dos dados pertençam naturalmente ao aplicativo, alguns dados realmente pertence ao modelo de dados. Um DBA deve ditar aos desenvolvedores como os dados do aplicativo serão restringidos? Claro que não. É nosso trabalho oferecer como os dados do aplicativo podemser constrangido. Se uma violação de uma regra comercial relacionada aos dados do aplicativo puder causar danos, e o aplicativo não for a única maneira 100% de manipular os dados, talvez uma restrição de verificação possa realmente ajudar (e não é difícil alterar ou remover )
MAS, vindo de outra direção, os desenvolvedores não devem ditar como os dados do modelo de dados (ou seja, metadados) são tratados. Isso inclui campos de auditoria (como as colunas created_on
/ created_by
) e as colunas PK / FK (esses valores devem ser conhecidos internamente e não fornecidos aos clientes). Esses dados não são o que o aplicativo armazena sobre os clientes (mesmo que o aplicativo possa ver os valores e até mesmo usá-los, como com IDs), é o que o modelo de dados armazena sobre os dados do aplicativo.
Portanto, faz sentido usar regras de dados para proteger os dados do modelo de dados. E isso não implica que você esteja prestes a começar a adicionar restrições ou restrições nos dados do aplicativo. MAS, será difícil avançar a conversa de uma maneira verdadeiramente produtiva se essa distinção não for entendida.