2012-04-06 2 views
0

я определил мои таблицы так:Postgres объект-отношение базы данных, кажется, не работает должным образом

create table device (
id serial primary key, 
manufacturerid integer references manufacturer(id) on delete restrict, 
model text, 
price real, 
usagepros text, 
usagecons text 
); 

create table robot (
numaxes integer, 
capacity real, 
reach real, 
accuracy real, 
installmethodid integer references installmethod(id) on delete restrict, 
mass real 
) inherits (device); 

create table robotComplex(
id serial primary key, 
name text 
); 

create table robotComplexDevice(
id serial primary key, 
deviceId integer references device(id) on delete restrict, 
robotcomplexid integer references robotcomplex(id) on delete cascade 
); 

etc... 

я получаю следующее при запуске SQL команды:

id | manufacturerid | model | price | usagepros | usagecons | numaxes | capacity | reach | accuracy | installmethodid | mass 
-----+----------------+-------+-------+-----------+-----------+---------+----------+-------+----------+-----------------+------- 
159 |   117 | Robot | 100.3 | OK  | NoOK  |  6 |  15.3 | 15.4 | 76.1234 |    45 | 100.1 

> select * from device; 
id | manufacturerid | model | price | usagepros | usagecons 
-----+----------------+-------+-------+-----------+----------- 
159 |   117 | Robot | 100.3 | OK  | NoOK 

> select * from robotcomplex; 
id |  name  
----+-------------- 
27 | Complex 


> insert into robotcomplexdevice (deviceid, robotcomplexid) values (159, 27); 
ERROR: insert or update on table "robotcomplexdevice" violates foreign key constraint  "robotcomplexdevice_deviceid_fkey" 
DETAIL: Key (deviceid)=(159) is not present in table "device". 

По какой-то причине, даже если я определил таблицу «robot» для наследования таблицы «deivice», я не могу ссылаться на нее. Возможно, я не получаю объектно-реляционную модель базы данных правильно. Но если вы не можете ссылаться на таблицы, то какова точка объектно-реляционной модели?

ответ