![]() | |
![]() |
| | Thread Tools | Display Modes |
#21
| ||||||||
| ||||||||
|
|
On Tue, 20 Nov 2007 09:51:49 -0800, DA Morgan <damor... (AT) psoug (DOT) org wrote: Brian Tkatch wrote: On Mon, 19 Nov 2007 09:48:12 -0800 (PST), Vijai Kalyan vijai.kal... (AT) gmail (DOT) com> wrote: Hi All, I have a question about data validation. I have been reading some articles that indicate that data validation should be done at the application level (while also having integrity constraints in the database) whereas other articles mention that data validation should be done only at the database level because that's what integrity constraints are for. Any for or against on these two viewpoints? Thanks, Vijai. If the database is just a convenient oplace to store data, and the program is what matters, put the validation in the program. If the program is just a convenient way to work with the data, and the database is what matters, put the validation in the database. B. Your first paragraph is frighteningly bad advice. First what is the purpose of validation? There are two possible answers: 1. To protect the integrity of the data 2. To improve the efficiency of other error handling mechanisms by putting the validation closer to the source of the error ... for example into the front-end user interface. Had i been in your class, i would have added a third option to this test: 3. To define the data model, to make the db the authority on the data. In no case can a validation in a front-end or tool protect data in a database from corruption ... EVER ... unless the quality of the data is guaranteed by the database itself. Although, i would promote that statement as encouragement, it is not correct. In a controlled environment, the UI can be made to be the only path of data entry, as such, it can do the data integrity checking. |
|
In many cases, and sadly most cases i have seen, the DB is merely a convenient place to store data, and basically all checking was done in the UI code. |
|
And that was what the programmers wanted. |
|
Mostly because it was easy to understand, and could be changed without a change request to the DBAs which is usually more pain than it is worth. |
|
To that end, COLUMNs are added and reused, and rarely DROPped, just to not have to bother with the DBA group. |
|
Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. |
|
While i understand your sentiment--indeed, they are my feelings as well--it just is not that way in the "real world" when the programmer considers the DB just a convenient place to store data. |
|
B. Reconsider.- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - |
#22
| |||||||||
| |||||||||
|
|
Brian Tkatch wrote: Your first paragraph is frighteningly bad advice. First what is the purpose of validation? There are two possible answers: 1. To protect the integrity of the data 2. To improve the efficiency of other error handling mechanisms by putting the validation closer to the source of the error ... for example into the front-end user interface. Had i been in your class, i would have added a third option to this test: 3. To define the data model, to make the db the authority on the data. This is fluff and you know it. Data is data is data. The fact that some may be metadata for another system is irrelevant and an attempt to change the subject. |
|
Databases hold data in logical structures called tables. The data they hold can either have meaning or not have meaning. If the intent is for it to have meaning that meaning must be defined and constrained within the structure of the database. An external application can never guarantee the integrity of data whether or not it may be metadata to another system. |
|
You get a 68 for your effort. |
And here i thought i would get a 68 overall, but *at least* a 90 on effort.|
In no case can a validation in a front-end or tool protect data in a database from corruption ... EVER ... unless the quality of the data is guaranteed by the database itself. Although, i would promote that statement as encouragement, it is not correct. In a controlled environment, the UI can be made to be the only path of data entry, as such, it can do the data integrity checking. Nonsense: Total and complete nonsense. All Oracle databases have SQL*Plus and thus a means of accessing the data without the UI. |
|
In many cases, and sadly most cases i have seen, the DB is merely a convenient place to store data, and basically all checking was done in the UI code. Sadly is not the word I would use. What you are saying is that because bad practices exist in some organizations they should be accepted. Some of us aim a bit higher. |
|
And that was what the programmers wanted. And programmers make these decisions? Programmers? You've got to be kidding. |
|
Mostly because it was easy to understand, and could be changed without a change request to the DBAs which is usually more pain than it is worth. To that end, COLUMNs are added and reused, and rarely DROPped, just to not have to bother with the DBA group. Which is fascinating but irrelevant to anything else in this thread. |
|
Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. There is no such thing and, in fact, is impossible to build. If you can find a single computer system, running Oracle, that does not have administrative access I'd like to hear about it. |
|
While i understand your sentiment--indeed, they are my feelings as well--it just is not that way in the "real world" when the programmer considers the DB just a convenient place to store data. You have put up the impossible ... an Oracle database on a system with no operating system admin, no storage admin, no network admin, no DBA, and no passwords as a straw horse. As the system does not exist neither does your argument. |
#23
| |||||||||
| |||||||||
|
|
In no case can a validation in a front-end or tool protect data in a database from corruption ... EVER ... unless the quality of the data is guaranteed by the database itself. Although, i would promote that statement as encouragement, it is not correct. In a controlled environment, the UI can be made to be the only path of data entry, as such, it can do the data integrity checking. Define 'controlled environment'. |
|
Now, implement that and still give users access. Then try to restrict what they use to access the database. It's surprisingly easy to defeat such tactics as logon triggers can easily be fooled by simply renaming the undesirable application. sqlplus.exe can be renamed to anything one would want to call it and, thus, can be used to directly access the data circumventing exclusive use of your UI. And, as a result your data is vulnerable to attack. So much for your 'controlled environment'. |
|
In many cases, and sadly most cases i have seen, the DB is merely a convenient place to store data, and basically all checking was done in the UI code. And that's just peachy until you have simultaneous inserts into a table and attempt to enforce a pseudo primary key or pseudo foreign key constraint through the UI. And end up with duplicate key values or dependent inserts failing because the newly inserted parent record hasn't yet been committed. And that was what the programmers wanted. And programmers run the show where you are? I can now understand why data validation is so low in priority on your list. |
|
Mostly because it was easy to understand, and could be changed without a change request to the DBAs which is usually more pain than it is worth. Ensuring data integrity is more of a pain than having a continuingly running application? This sounds more like a paint and body shop than an IT shop. |
|
To that end, COLUMNs are added and reused, and rarely DROPped, just to not have to bother with the DBA group. Interesting that in the quest for 'efficiency' you place data in misnamed columns simply to circumvent proper change control and a logical table design/implementation. |
|
And, possibly, the DBA group is tired of you and your antics. |
|
Is there no development or test environment configured to facilitate such changes? |
|
Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. Define that and implement it in a foolproof (and user-proof) manner. Then see how much work you actually can get done. While i understand your sentiment--indeed, they are my feelings as well--it just is not that way in the "real world" when the programmer considers the DB just a convenient place to store data. If the inmates are running the asylum you have more to worry about than data integrity. |
|
B. Reconsider.- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - David Fitzjarrell |
#24
| |||||||||
| |||||||||
|
|
On Tue, 20 Nov 2007 13:33:52 -0800 (PST), "fitzjarr... (AT) cox (DOT) net" fitzjarr... (AT) cox (DOT) net> wrote: SNIP In no case can a validation in a front-end or tool protect data in a database from corruption ... EVER ... unless the quality of the data is guaranteed by the database itself. Although, i would promote that statement as encouragement, it is not correct. In a controlled environment, the UI can be made to be the only path of data entry, as such, it can do the data integrity checking. Define 'controlled environment'. One implementation i have seen (in many groups in the same organization) is one username which the program uses to connect, but is not given to the users. |
|
Now, implement that and still give users access. Then try to restrict what they use to access the database. It's surprisingly easy to defeat such tactics as logon triggers can easily be fooled by simply renaming the undesirable application. sqlplus.exe can be renamed to anything one would want to call it and, thus, can be used to directly access the data circumventing exclusive use of your UI. And, as a result your data is vulnerable to attack. So much for your 'controlled environment'. I'd like to see you do that. |
|
In many cases, and sadly most cases i have seen, the DB is merely a convenient place to store data, and basically all checking was done in the UI code. And that's just peachy until you have simultaneous inserts into a table and attempt to enforce a pseudo primary key or pseudo foreign key constraint through the UI. And end up with duplicate key values or dependent inserts failing because the newly inserted parent record hasn't yet been committed. And that was what the programmers wanted. And programmers run the show where you are? I can now understand why data validation is so low in priority on your list. They do in most cases. The data modelers rarely understand what the program is doing, and the DBAs usually don't care. |
| Mostly because it was easy to understand, and could be changed without a change request to the DBAs which is usually more pain than it is worth. Ensuring data integrity is more of a pain than having a continuingly running application? This sounds more like a paint and body shop than an IT shop. Actually, it was a large IT operation. When there are tens of thousands of workers, groups separate, and people stop caring. |
| To that end, COLUMNs are added and reused, and rarely DROPped, just to not have to bother with the DBA group. Interesting that in the quest for 'efficiency' you place data in misnamed columns simply to circumvent proper change control and a logical table design/implementation. I never did that. Indeed, i was called in for cleanup. |
|
And, possibly, the DBA group is tired of you and your antics. Nope. Is there no development or test environment configured to facilitate such changes? Even test is a restricted environment. Someting i complained about on many an occasion. |
| Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. Define that and implement it in a foolproof (and user-proof) manner. Then see how much work you actually can get done. |
|
While i understand your sentiment--indeed, they are my feelings as well--it just is not that way in the "real world" when the programmer considers the DB just a convenient place to store data. If the inmates are running the asylum you have more to worry about than data integrity. Be veeeery afraid. They run more than you are willing to admit. |
|
B. B. Reconsider.- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - David Fitzjarrell- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - |
#25
| |||||
| |||||
|
|
And, as a result your data is vulnerable to attack. So much for your 'controlled environment'. |
|
And that was what the programmers wanted. And programmers run the show where you are? I can now understand why data validation is so low in priority on your list. |
|
Mostly because it was easy to understand, and could be changed without a change request to the DBAs which is usually more pain than it is worth. Ensuring data integrity is more of a pain than having a continuingly running application? This sounds more like a paint and body shop than an IT shop. |
|
Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. Define that and implement it in a foolproof (and user-proof) manner. Then see how much work you actually can get done. |
|
While i understand your sentiment--indeed, they are my feelings as well--it just is not that way in the "real world" when the programmer considers the DB just a convenient place to store data. If the inmates are running the asylum you have more to worry about than data integrity. |
#26
| ||||||
| ||||||
|
|
Other then the redundant "Data is data is data.", i disagree with everything you just wrote. |
|
Databases hold data in logical structures called tables. The data they hold can either have meaning or not have meaning. If the intent is for it to have meaning that meaning must be defined and constrained within the structure of the database. An external application can never guarantee the integrity of data whether or not it may be metadata to another system. As a component of a controlled environment, however, it can. |
|
In no case can a validation in a front-end or tool protect data in a database from corruption ... EVER ... unless the quality of the data is guaranteed by the database itself. Although, i would promote that statement as encouragement, it is not correct. In a controlled environment, the UI can be made to be the only path of data entry, as such, it can do the data integrity checking. Nonsense: Total and complete nonsense. All Oracle databases have SQL*Plus and thus a means of accessing the data without the UI. And without a username this does what? |
|
In many cases, and sadly most cases i have seen, the DB is merely a convenient place to store data, and basically all checking was done in the UI code. Sadly is not the word I would use. What you are saying is that because bad practices exist in some organizations they should be accepted. Some of us aim a bit higher. And what you are saying is that because bad practices exist in some organizations they should pretend they do not exist. Some of us aim a bit more realistically. |
|
And that was what the programmers wanted. And programmers make these decisions? Programmers? You've got to be kidding. Umm, perhaps you need to leave you ivory tower and see the real world. I'm not saying it should be like this, i'm saying it is like this. |
|
Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. There is no such thing and, in fact, is impossible to build. If you can find a single computer system, running Oracle, that does not have administrative access I'd like to hear about it. And i would just as well keep you ignorant of it. Who knows what you would do! |
#27
| |||
| |||
|
|
Define 'controlled environment'. One implementation i have seen (in many groups in the same organization) is one username which the program uses to connect, but is not given to the users. |
#28
| |||
| |||
|
|
Brian Tkatch wrote: SNIP Nonsense. Absolute nonsense. If that is what it is like where you work I would guess that is probably true given that they hired you and no doubt have hired others like you. |
|
But if you think that is what it is like at Amazon.com, AT&T, Boeing, T-Mobile, Washington Mutual Bank, Matsushita, etc. etc. etc. you are in need of a 12 step program. |
|
Putting validation into the application will never, EVER, keep someone with SQL*Plus from destroying it. Unless it is a controlled environment. There is no such thing and, in fact, is impossible to build. If you can find a single computer system, running Oracle, that does not have administrative access I'd like to hear about it. And i would just as well keep you ignorant of it. Who knows what you would do! ALTER USER tkatch ACCOUNT LOCK; would be a good first step. |
#29
| |||
| |||
|
#30
| |||
| |||
|
|
Brian Tkatch wrote: Define 'controlled environment'. One implementation i have seen (in many groups in the same organization) is one username which the program uses to connect, but is not given to the users. One does not need a username to connect to Oracle. You might want to sit back and ask yourself what is going on when two very senior Oracle professionals are both saying the same thing to you and not one person is saying you are correct. The message should be extraordinarily clear. |
|
You are wrong and, apparently, too ignorant about Oracle to know what you don't know. Consider using this opportunity to learn something rather than just digging a deeper and deeper hole. |
|
David ... I think we've made our point to any lurkers. Brian has distinguished himself from most serious professional by his logon to this group (Brian Tkatch <N/A>). Obviously this just a troll and his only point in posting is to create havoc. Kill File! He's all yours if you wish to respond. I'm through feeding the troll. |
![]() |
| Thread Tools | |
| Display Modes | |
| |