![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
#3
| |||
| |||
|
|
id | real_id | last_name | first_name ----+---------+------------+------------ 4 | 4 | Jones | David 5 | 4 | Bowie | David David Jones is a "real" name, because id = real_id. I do not want to allow Arnold Corns to be added with real_id = 5 (since David Bowie is not a "real" name), so I've done this: [CREATE FUNCTION + ADD CHECK] I can't help feeling, however, that this is a bit kludgy. Can anyone suggest a better way? |
|
Can the denizens of this group enlighten me about what the advantages of Python are, versus Perl ? "python" is more likely to pass unharmed through your spelling |
#4
| |||
| |||
|
|
Create two tables, one for the real names, and one for the alias names. The real_persons table would look like this: real_id | last_name | first_name ---------+------------+------------ 4 | Jones | David And the aliases table would look like this: alias_id | real_id | last_name | first_name ----------+---------+------------+------------ 5 | 4 | Bowie | David Of course, aliases.real_id should be made a foreign key to real_persons.real_id, so you cannot enter an alias for a real person which doesn't exist. Note that alias_id and real_id are completely separate -- if you want to make them disjunct (for safety, so you can't mix them up), modify the sequences so that one produces only odd numbers and the other one only even numbers. Or make one start at 10000000 or whatever. You can conveniently create a view in order to merge real persons and aliases together. |
![]() |
| Thread Tools | |
| Display Modes | |
| |