Sql 定义子表并从中获取记录

Sql 定义子表并从中获取记录,sql,sqlite,Sql,Sqlite,我是SQL新手。我正在考虑创建一个数据库,其中一个表中的值是指向另一个“完整”表的指针(不仅仅是另一个表中的值……还有表本身)。如何实现这一点,如何编写SQL语句来访问子表中的数据?我将用下表来说明 项目: ID Name Site Client Progress ------------------------------------------------------ 1 Bronx 99-Beans Street Mr.Smi

我是SQL新手。我正在考虑创建一个数据库,其中一个表中的值是指向另一个“完整”表的指针(不仅仅是另一个表中的值……还有表本身)。如何实现这一点,如何编写SQL语句来访问子表中的数据?我将用下表来说明

项目:

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脚本访问这些表的。我明白你的意思。谢谢