Sql 定义子表并从中获取记录
我是SQL新手。我正在考虑创建一个数据库,其中一个表中的值是指向另一个“完整”表的指针(不仅仅是另一个表中的值……还有表本身)。如何实现这一点,如何编写SQL语句来访问子表中的数据?我将用下表来说明 项目:Sql 定义子表并从中获取记录,sql,sqlite,Sql,Sqlite,我是SQL新手。我正在考虑创建一个数据库,其中一个表中的值是指向另一个“完整”表的指针(不仅仅是另一个表中的值……还有表本身)。如何实现这一点,如何编写SQL语句来访问子表中的数据?我将用下表来说明 项目: ID Name Site Client Progress ------------------------------------------------------ 1 Bronx 99-Beans Street Mr.Smi
ID Name Site Client Progress
------------------------------------------------------
1 Bronx 99-Beans Street Mr.Smith **1
2 Mandy 4-Apt Clinton Mrs. Cross **2
3 Ani 7-Magbo,Jos, NG FRN, 9ja **3
Task Description Start Finished Handler
-------------------------------------------------------------
1 Remove Top-Soil 07:50:33 12:10:05 Jack
2 Break Ground 13:00:20 15:33:52 Grader
3 Spray Fertilizer 15:55:30 17:15:23 Suzie
布朗克斯区:
ID Name Site Client Progress
------------------------------------------------------
1 Bronx 99-Beans Street Mr.Smith **1
2 Mandy 4-Apt Clinton Mrs. Cross **2
3 Ani 7-Magbo,Jos, NG FRN, 9ja **3
Task Description Start Finished Handler
-------------------------------------------------------------
1 Remove Top-Soil 07:50:33 12:10:05 Jack
2 Break Ground 13:00:20 15:33:52 Grader
3 Spray Fertilizer 15:55:30 17:15:23 Suzie
注意,第二个表的名称取自Project@id=1的name值。Id仍然可以用于此目的,在这种情况下,表的标题将为'1'。。。这很奇怪,但至少这解释了表应该具有的关系类型。删除'Project'表中的记录也应删除相关的进度表(带有记录名称)*。如何在SQL中创建和查询具有这种关系的表?在项目表中,您必须确保不仅ID字段是唯一的,而且名称字段也是唯一的。由于您希望使用name字段在数据库中创建表,因此如果存在重复项,则会产生问题。接下来,我将从程序中调用projects表,读取表名,然后将该名称传递给特定项目的另一个查询。例如,在从项目表中删除特定表Bronx的情况下,可以在项目表中写入触发器,即删除行列中列出的项目特定表。底线只是您需要完成的工作的一部分,可以在SQL中完成,而其余的工作应该在您的程序中进行管理。为什么您需要为“项目”中的每一行创建一个全新的表?这是可以做到的,但在我看来,这不是关系数据库应该如何使用。也许你应该考虑使用KEY->值或对象数据库?@ PabLoChan:你能把更多的光放在“键值或对象数据库”上吗?@ TWOHOT关键字值数据库工作类似哈希表(或者如果你喜欢字典的话)。没有模式。存储由任意属性(名称/键->值对)组成的对象(文档)。看看CouchDB或MongoDB(还有很多,但它们相当流行)。@pablochan:谢谢你提供的信息。MongoDB很接近,但记录行标题和每个值听起来并不酷。@twohot:然后修改您的设计并使用sqlite。不要对任务使用单独的表。制作一个“任务”表,并通过外键(任务表中具有项目id的列)将其连接到“项目”表。实际上,我是从Python3脚本访问这些表的。我明白你的意思。谢谢