Re: Almost relational PostgreSQL (was: one-to-one)
От | Josh Berkus |
---|---|
Тема | Re: Almost relational PostgreSQL (was: one-to-one) |
Дата | |
Msg-id | 200311041346.25786.josh@agliodbs.com обсуждение исходный текст |
Ответ на | Re: Almost relational PostgreSQL (was: one-to-one) (Antonios Christofides <anthony@itia.ntua.gr>) |
Список | pgsql-novice |
Antonios, > Pascal says: use NULL only for missing, not for inapplicable. Here the > state is inapplicable unless the country is US. > > What should I do instead? Create another table, "gstates"? > > id (PK and FK to gaddresses) > state (FK) > > Is this overkill? Yes. I'd say that null is an example of "acceptable denormalization". Alternately, instead of using NULLs, I would suggest using a zero-length string or "XX" to indicate non-applicability -- this would give you a clearer indication, and allow you to avoid messy CASE WHEN IS NULL and COALESCE queires. The zero-length string is particularly attractive as it lends itself to easy concatination of addresses. Regardless of which approach you take, you want to make sure that it is *only* used for non-US addresses. So you will want to add a table constraint enforcing the state code for US addresses. Also, IME, many foriegn addresses have a region or province attached to them. For databases including international addresses, I frequently have a generic "province" field which covers both US states and foriegn regions, and enforce consistency by using a reference list which includes both countries and provinces/states. -- -Josh Berkus Aglio Database Solutions San Francisco
В списке pgsql-novice по дате отправления: