如何建立关系

我对数据库不够了解。我想使用SQLite3存储Lua脚本的对象,并将2个表交错存储。

假设Lua对象如下所示:

class_A.name           = ""
class_A.currency       = 0
class_A.salary         = 0
class_A.misc           = {}
class_A.customers      = {}  -- this stores related objects of class_B
class_A:function1() something is something end
class_A:function2() something is something else end

class_B.name           = ""
class_B.id             = ""
class_B.value          = 0
class_B.consultant     = {} -- this stores related objects of class_B
class_B:function1() something is different end

现在我将它们存储在SQLite表中。"relatedObjects"应该存储在第3个表中,这应该类似于:

-- class_A表:
| Idx | Name | currency | salary | misc |
| - | - | - | - | - |
| 1 | john | 1,233.00 | 2,300 | null |
| 2 | eva | 4,100.00 | 1,970 | null |

-- class_B表:
| Idx | Name | currency | salary | misc |
| - | - | - | - | - |
| 1 | peterson | 1,233.00 | 2,300 | null |
| 2 | griffin | 4,100.00 | 1,970 | null |
| 3 | simpson | 2,738.00 | 2,100 | null |

--交错
--分别是表的指数
| 顾问 | 客户 |
| - | - |
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
| 3 | 2 |

我希望你理解我的意思,我认为这不是非常困难,所以现在我感到很愚蠢。

Idx值是AUTOINCREMENT,因此不应出现任何混淆。

问题是如何设置此交错表。

我尝试了这个:

CREATE TABLE Interleave( _A INTEGER FOREIGN KEY Class_A.Idx, _B INTEGER FOREIGN KREY Class_B.Idx)

INSERT INTO Interleave (_A, _B) VALUES ( Class_A.Idx WHERE name = 'john', Class_B.Idx WHERE name = 'griffin')

但它告诉我“附近的“WHERE”:语法错误:“(无错误代码)

点赞
用户1622487
用户1622487

希望这可以帮到你(我会假设你对数据库非常新手):

  1. 首先,给列命名可读的名称,这样你以后会感谢自己。
  2. 其次,更改插入语句为:
INSERT INTO Interleave (_A, _B) VALUES ( (SELECT Idx FROM Class_A WHERE name = 'john'), (SELECT Idx FROM Class_B WHERE name = 'griffin'))
2015-01-08 16:04:15