Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确设计这个SQLite数据库?_Sqlite - Fatal编程技术网

如何正确设计这个SQLite数据库?

如何正确设计这个SQLite数据库?,sqlite,Sqlite,我想在SQLite中创建一个包含两个表的数据库:Customer和Orders。每个客户可以有很多订单;(我知道这是一对多的关系)。除了信用卡信息、条款和装运信息(非地址类型信息)之外,每个订单可以有许多“行项目”(行项目是“项目”的特定订单)。我需要能够找到任何特定客户的所有订单,但不必根据订单找到客户 这是我到目前为止为Customer表所做的: [db executeUpdate:@"CREATE TABLE IF NOT EXISTS CustData (" "BUS_NAME TEX

我想在SQLite中创建一个包含两个表的数据库:Customer和Orders。每个客户可以有很多订单;(我知道这是一对多的关系)。除了信用卡信息、条款和装运信息(非地址类型信息)之外,每个订单可以有许多“行项目”(行项目是“项目”的特定订单)。我需要能够找到任何特定客户的所有订单,但不必根据订单找到客户

这是我到目前为止为Customer表所做的:

[db executeUpdate:@"CREATE TABLE IF NOT EXISTS CustData ("
 "BUS_NAME TEXT PRIMARY KEY NOT NULL, "
 "EMAIL TEXT, "
 "PHONE TEXT, "
 "SHOP_NAME TEXT, "
 "SHOP_ADDR1 TEXT, "
 "SHOP_ADDR2 TEXT, "
 "SHOP_CITY_STATE TEXT, "
 "SHOP_ZIP TEXT, "
 "SHIP_NAME TEXT, "
 "SHIP_ADDR1 TEXT, "
 "SHIP_ADDR2 TEXT, "
 "SHIP_CITY_STATE TEXT, "
 "SHIP_ZIP TEXT, "
 "NOTES TEXT)"];
这是我为订单表准备的:

[db executeUpdate:@"CREATE TABLE Orders ("
 "CUST_ID TEXT REFERENCES CustData, "
 "ORDER_NBR TEXT, "
 "SALES_NAME TEXT, "
 "CREDIT_CARD TEXT, "
 "EXP_DATE TEXT, "
 "CID TEXT, "
 "NOTES TEXT, "
 "PCS INTEGER, "
 "PATTERN TEXT, "
 "STYLE_NAME TEXT, "
 "PRICE DECIMAL)" ];
PC、图案、款式、名称和价格被视为“行项目”


我的问题是:关于“行项目”定义这些表格的正确方法是,还是有更好的方法?

您对行项目的设计不正确

考虑一下,就像一个客户有一个或多个订单一样,每个订单都有一个或多个行项目。因此,订单本身应该有一个表,行项目应该有一个单独的表。这两个表之间唯一重复的列应该是唯一标识订单的列

在您展示的设计中,这意味着将PC、图案、样式名称和价格与订单编号(如果仅此一项就足以识别订单)或客户ID和订单编号一起拆分到行项目表中

还考虑一个客户可能有不同的发货地址的订单,发货地址或计费地址可能随时间而改变,并且发货地址和计费地址实际上只是同一实体(种类)的实例。您可以看到,您可能需要一个单独的表来保存链接到客户的地址


还有一些其他的问题你可能需要考虑(比如存储信用卡信息的可取性),但这应该让你开始。

这完全取决于你的需求是什么。罗伯特:我完全不同意你说这不是一个真正的问题!我在这里看到过类似的问题,我觉得当其他人与我处于同一条船上时,他们对“行项目”是有价值的。请重新打开它。谢谢你。。。现在这很有道理…:罗伯特·哈维:也谢谢你。。我很感激。