gpt4 book ai didi

sql - 使用同一个 SQL 表的一对多关系

转载 作者:行者123 更新时间:2023-12-02 06:25:03 28 4
gpt4 key购买 nike

我正在设计我的数据库和其中一个表(任务),需要能够与其自身建立一对多的关系。这是因为一个任务可以有多个具有相同数据的子任务(很像 SO 上的问答)。

由于我的SQL不是很强大,我只是有点困惑,关于如何在同一张表上进行一对多。

目前我有这些行:

TaskId (uniqueidentifier)
aspnet_OwnerUserId (uniqueidentifier)
Title (nvarchar(50)) Description (nvarchar(MAX))
StartDate (smalldatetime)
DueDate (smalldatetime)

最佳答案

虽然我不太确定您将要实现什么,但根据您作为表格字段提供的内容,我认为与表格本身的一对多关系更合适。

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)

如果你想让一个子任务有多个父任务,那么请忘记我所说的。也就是说,可以对某个问题做出一个或多个答案,但不能反过来。

编辑:我想您将有另一个表“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
);

附言以上 SQL 是为 PostgreSQL 编写的,对于其他 DBMS,请随意更改。

关于sql - 使用同一个 SQL 表的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com