Хотя я не совсем уверен, что вы собираетесь достичь, но в зависимости от того, что вы указали в качестве полей таблицы, я думаю, что отношение один ко многим с самой таблицей более уместно.
TaskId (integer *Primary Key)
Ref_Id (integer *Foreign Key references to TaskId above)
ASPNet_OwnerUserId (integer)
Title (varchar/text)
StartDate (Date/Timestamp)
DueDate (Date/Timestamp)
Если вы хотите, чтобы подзадача имела несколько родительских задач, тогда, пожалуйста, забудьте о том, что я сказал. Тем не менее, один или несколько ответов могут быть даны на определенный вопрос, но не наоборот.
EDIT:
Я бы предположил, что у вас будет другая таблица «aspnet_OwnerUser», которая содержит некоторую информацию о пользователе. Пожалуйста, посмотрите следующий SQL, если это так. В противном случае забудь об этом. ;)
CREATE TABLE `aspnet_OwnerUser`
(
`id` SERIAL PRIMARY KEY
, `name` VARCHAR(128)
-- further detail follows
);
CREATE TABLE `task`
(
`id` SERIAL PRIMARY KEY
, `ref_id` INTEGER
CONSTRAINT REFERENCES `task`(`id`)
, `aspnet_OwnerUserId` INTEGER
CONSTRAINT REFERENCES `aspnet_OwnerUser`(`id`)
, `title` VARCHAR(128) NOT NULL
, `startdate` TIMESTAMP
, `duedate` TIMESTAMP
);
p.s. вышеприведенный SQL написан для PostgreSQL, для других СУБД, пожалуйста, не стесняйтесь изменять его.