我正在尝试将我们的Excel电子表格(用作生成班次数据存储)转换为数据库解决方案。不过,我很难知道自己是否在使用我的桌子的正确道路上。我已经包含了用于创建表的SQL,以供参考。
每月数据来自多个来源。我们希望在某些指标上保留历史数据。所以我需要创建一个零件历史记录类型的东西跟踪Onhand,Onorder等每个月。看起来我似乎错过了关系数据库的...关系部分。这些主要是需要查询和汇总/分析的事实。例如,我需要一个Customer表来将我的POS内容联系起来。我只需要分析那里的POS数据。
CREATE TABLE "Vendors" (
"VID" INTEGER PRIMARY KEY NOT NULL,
"Vendor_Group" INTEGER NOT NULL
);
CREATE TABLE "VendorInfo" (
"Vendor_Group" INTEGER PRIMARY KEY NOT NULL,
"Vendor_Display_Name" TEXT NOT NULL,
"Vendor_Name" TEXT NOT NULL,
"Vendor_Active" INTEGER NOT NULL,
"Vendor_Last_Update" TEXT
);
CREATE TABLE "Parts" (
"Vendor_Group" INTEGER NOT NULL,
"Vendor_Part" TEXT NOT NULL,
"OnHand" INTEGER NOT NULL DEFAULT (0),
"OnOrder" INTEGER NOT NULL DEFAULT (0),
"Date_Sales_Enabled" TEXT NOT NULL,
"Dropship_Only" INTEGER NOT NULL,
"Obsolete_Date" TEXT,
"Obsolete" INTEGER NOT NULL DEFAULT (0),
"Discontinued_Date" TEXT,
"Discontinued" INTEGER NOT NULL DEFAULT (0),
"Conversion_Date" TEXT,
"Converted" INTEGER NOT NULL DEFAULT (0),
"Conversion_Type" TEXT,
"Sample_Level" INTEGER NOT NULL DEFAULT (0),
PRIMARY KEY (Vendor_Group, Vendor_Part)
);
CREATE TABLE "Consigned_POS" (
"ID" INTEGER PRIMARY KEY AUTOINCREMENT,
"Vendor_Group" INTEGER PRIMARY KEY NOT NULL,
"Batch_ID" INTEGER NOT NULL,
"Transaction_Type" TEXT,
"Vendor_Part" TEXT NOT NULL,
"Report_Part" TEXT NOT NULL,
"Quantity_Sold" INTEGER NOT NULL,
"Cost" REAL NOT NULL,
"Resale" REAL NOT NULL,
"Extended_Cost" REAL NOT NULL,
"Extended_Resale" REAL NOT NULL,
"Invoice_ID" TEXT NOT NULL,
"Salesorder_ID" TEXT NOT NULL,
"Customer_ID" TEXT NOT NULL,
"Company_Name" TEXT NOT NULL,
"Invoice_Date" TEXT NOT NULL
);
非常感谢任何建议!
答案 0 :(得分:0)
我赞成其他无意义的主键(尽管表中的其他列也可能基本上是唯一的)。我建议不要将具有其他含义的列作为主键。它很小,但我通常也会在表格中使用单数(而非复数)名称。