Ich stimme @Aaron in Bezug auf den technischen Aspekt voll und ganz zu.
Da es die Aufgabe / Verantwortung des DBA ist, die Daten zu schützen, sollte der Standardansatz darin bestehen, genau das zu tun, wie es der DBA für richtig hält, und ein solides Geschäftsmodell für die Durchführung einer Änderung zu fordern. Ein hypothetisches Zukunftspotential, das unter bestimmten Bedingungen einigermaßen möglich ist, das später gedanklich erarbeitet und später bestätigt wird, aber vielleicht später oder vielleicht nie geändert wird -aktuell-geschehen Grund (dh "aus irgendeinem Grund") scheint eine rechtfertigungsschwache Angelegenheit zu sein, insbesondere wenn das Thema eine Unternehmensnorm / -praxis ändert.
Vertraue niemals jemandem, der Änderungen an etwas vornehmen möchte, das sich niemals ändern sollte ;-) (umso mehr, wenn er nicht einmal weiß, warum er dies möchte).
Teilen Sie dem Entwickler mit, dass er dem App-Code eine solche Logik hinzufügen kann, um diese Aktualisierungen zu verhindern. Aber auch, dass Sie das nicht entfernen werden DENY
. Wenn / wann der Tag jemals kommt (und esmöglicherweise nichtWahrscheinlich wird nicht), dass jemand beim Versuch, eine dieser Spalten zu aktualisieren, eine Fehlermeldung erhält. Dann können Sie darüber diskutieren, ob Sie die entfernen DENY
, was eine tatsächliche, solide Begründung erfordert, warum jemand diesen Wert in der aktualisieren würde erster Platz.
Der springende Punkt: Es sollte einen echten Business Case geben, auf den sich die Menschen konzentrieren. Zeit ist gefragt, aber knapp, und Sie (und alle anderen) haben wichtigere Dinge zu tun, als das System auf der Grundlage der Meinung anderer zu ändern. Es wird immer eine Vielzahl von Meinungen geben (Leerzeichen oder Tabulatoren?), Und Sie könnten Jahre damit verbringen, dies hin und her zu ändern, wenn dieser Entwickler die Liste verlässt und durch einen ersetzt wird, der entschieden dagegen ist, dass diese Felder aktualisierbar sind. Wenn keine Kunden danach fragen (oder etwas, das dies erfordert) und es keinen greifbaren Vorteil gibt (sogar einen verspäteten Vorteil wie die Beseitigung von technischen Schulden, bei dem sich der ROI nur schwer belegen lässt, der sich jedoch angesichts der Tatsache lohnt, dass Die Chancen, dass diese Zeit nicht zu tatsächlichen Kosteneinsparungen auf lange Sicht führt, sind gering (oder gar nicht). Schließen Sie dann die Anforderung, oder stellen Sie sie mit einer niedrigen Priorität in den Rückstand, auch in Fällen, in denen der Idealismus eine Änderung vorsieht (dies ist nicht einer dieser Fälle, wird jedoch für diejenigen erwähnt, die dies für erforderlich halten). Idealismus ist ideal für Gespräche, aber Unternehmen können Miete, Nebenkosten, Angestellte, Steuern usw. nicht mit Idealen bezahlen.
@ jpmc26 ist in Bezug auf die Notwendigkeit der Kommunikation korrekt, aber nicht genau in Bezug auf die zu kommunizierenden Elemente. Ja, Sie sollten zuhören, was andere verlangen, und versuchen, ihre Argumentation zu verstehen, einschließlich Fragen zu stellen, wenn Sie sich über irgendetwas nicht sicher sind.
JEDOCH ist die Datenbank der Anwendung nicht untergeordnet, und Datenbankprofis (Administratoren, Ingenieure, unabhängig vom Namen Ihres Unternehmens) sind den Entwicklern nicht untergeordnet (wie in dieser Antwort impliziert). Sie arbeiten nicht für die Entwickler, Sie arbeiten für das Unternehmen, genauso wie sie. Dies ist eine Teamleistung, und Sie sollten nicht um Vergebung bitten, wenn Sie Ihren Job machen. Das heißt, wir Computertypen sind (im Allgemeinen) nicht für unsere zwischenmenschlichen Kommunikationsfähigkeiten bekannt. Deshalb müssen Sie wirklich sicherstellen, dass andere Sie verstehen , wie Sie argumentieren, welche Verantwortlichkeiten Sie haben und wie diese Dinge tatsächlich funktionieren .
Ich habe diesen letzten Teil eingefügt, weil es ein hohes Maß an Missverständnissen, Fehlinformationen und mangelndem Wissen gibt (sogar einige hier auf dieser Seite). Zum Beispiel scheint es diesen Gedanken zu geben, dass alle Regeln Geschäftsregeln sind. Wir müssen erklären, dass es einen Unterschied zwischen Datenregeln und Geschäftsregeln gibt (@Aaron bezeichnet dies in einem Kommentar zu der Frage als "Workflow-Einschränkung gegen Datenbeschränkung"), und dass die meisten Daten natürlich zur Anwendung gehören, einige Daten jedoch gehört eigentlich zum Datenmodell. Sollte ein DBA den Entwicklern vorschreiben, wie die Anwendungsdaten eingeschränkt werden sollen? Natürlich nicht. Es ist unsere Aufgabe zu opfern , wie die Anwendungsdaten könneneingeschränkt werden. Wenn ein Verstoß gegen eine Geschäftsregel in Bezug auf Anwendungsdaten Schaden anrichten kann und die App nicht die einzige Möglichkeit ist , die Daten zu manipulieren, hilft möglicherweise eine Einschränkung bei der Überprüfung (und es ist nicht schwierig, sie zu ändern oder zu entfernen) ).
ABER aus der anderen Richtung kommend, sollten Entwickler nicht vorschreiben, wie Datenmodelldaten (dh Metadaten) behandelt werden. Dies schließt Prüffelder (wie die created_on
/ created_by
Spalten) und die PK / FK-Spalten ein (diese Werte sollten nur intern bekannt sein und nicht an Kunden weitergegeben werden). Diese Daten werden in der App nicht über Kunden gespeichert (auch wenn die App die Werte sehen und sogar verwenden kann, z. B. mit IDs), werden sie im Datenmodell über die Daten der App gespeichert.
Daher ist es sinnvoll, Datenregeln zum Schutz von Datenmodelldaten zu verwenden. Dies bedeutet jedoch nicht, dass Sie mit dem Hinzufügen von Einschränkungen oder Restriktionen für die Anwendungsdaten beginnen. ABER es wird schwierig sein, das Gespräch wirklich produktiv voranzutreiben, wenn diese Unterscheidung nicht verstanden wird.