Re: hiding normalization with views

Поиск
Список
Период
Сортировка
От Josh Berkus
Тема Re: hiding normalization with views
Дата
Msg-id 200210081155.32410.josh@agliodbs.com
обсуждение исходный текст
Ответ на Re: hiding normalization with views  ("Devinder K Rajput" <Devinder.Rajput@ipaper.com>)
Список pgsql-novice
Devinder, Josh,

> I am assuming that data gets entered into the customers table and then
> should automagically update the cities, states, and zip_codes tables.  For
> example, if a new record or update contains the city "Chicago" and Chicago
> doesn't exist in cities, it should be added/inserted.  There might be a way
> to do this by setting up integrity constraints ( i don't know how), but you
> could also do it in code.  When a record is inserted/updated in the
> customers table, do a select with the city value in the cities table to see
> if the city exists.  if the city doesn't exist, insert it.  Do the same
> with states and zip codes.  This is some work and like I said, you might
> able to do it integrity constraints, but we need some help from the
> postgres gurus to see if that's possible.

Devinder is correct.  In fact, this is largely what the PostgreSQL RULES
system is for.  One can define a "FOR INSERT" RULE on a view, and then
program it in a procedural language on what to do with all of the data that
belongs in sub-tables.  See:
http://www.us.postgresql.org/users-lounge/docs/7.2/postgres/rules.html

ALternately, you can do what I do in most of my applications, which is to
update data through functions or middleware rather than calling direct
INSERT/UPDATE statements.  This allows me to implement and maintain a large
array of complex business rules that would be difficult, or at least not
centrally managed, if I used RULES.
For example, instead of having the database client call:
INSERT INTO users ( first_name, last_name, logon, password )
VALUES ( $fname, $lname, $logon, $pwd );
it calls
SELECT fn_add_user ( $fname, $lname, $logon, $pwd );

Which approach you take (RULES, Functions, or 3rd-party middleware) depends
largely on your applicaiton specification; none is intrinsically superior.


--
Josh Berkus
josh@agliodbs.com
Aglio Database Solutions
San Francisco

В списке pgsql-novice по дате отправления:

Предыдущее
От: Joshua Daniel Franklin
Дата:
Сообщение: Re: hiding normalization with views
Следующее
От: Ron Johnson
Дата:
Сообщение: Re: hiding normalization with views