如何正确设计这个SQLite数据库?
我想在SQLite中创建一个包含两个表的数据库:Customer和Orders。每个客户可以有很多订单;(我知道这是一对多的关系)。除了信用卡信息、条款和装运信息(非地址类型信息)之外,每个订单可以有许多“行项目”(行项目是“项目”的特定订单)。我需要能够找到任何特定客户的所有订单,但不必根据订单找到客户 这是我到目前为止为Customer表所做的:如何正确设计这个SQLite数据库?,sqlite,Sqlite,我想在SQLite中创建一个包含两个表的数据库:Customer和Orders。每个客户可以有很多订单;(我知道这是一对多的关系)。除了信用卡信息、条款和装运信息(非地址类型信息)之外,每个订单可以有许多“行项目”(行项目是“项目”的特定订单)。我需要能够找到任何特定客户的所有订单,但不必根据订单找到客户 这是我到目前为止为Customer表所做的: [db executeUpdate:@"CREATE TABLE IF NOT EXISTS CustData (" "BUS_NAME TEX
[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和订单编号一起拆分到行项目表中
还考虑一个客户可能有不同的发货地址的订单,发货地址或计费地址可能随时间而改变,并且发货地址和计费地址实际上只是同一实体(种类)的实例。您可以看到,您可能需要一个单独的表来保存链接到客户的地址
还有一些其他的问题你可能需要考虑(比如存储信用卡信息的可取性),但这应该让你开始。这完全取决于你的需求是什么。罗伯特:我完全不同意你说这不是一个真正的问题!我在这里看到过类似的问题,我觉得当其他人与我处于同一条船上时,他们对“行项目”是有价值的。请重新打开它。谢谢你。。。现在这很有道理…:罗伯特·哈维:也谢谢你。。我很感激。