2013-12-02 3 views
0

Я пытаюсь перевести наши таблицы Excel (используемые в качестве хранилища данных переноса) в решение базы данных. У меня проблемы с пониманием того, что я на правильном пути со своими столами. Я включил SQL для создания таблицы того, что у меня есть для ссылки.SQLite3 Database Design

Ежемесячные данные будут поступать из нескольких источников. Мы также хотим хранить исторические данные по определенным показателям. Таким образом, мне нужно будет создавать элементы истории элементов истории деталей 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

Я сторонник иначе бессмысленных первичных ключей (хотя другие столбцы в таблице также могут быть по существу уникальными). Я бы посоветовал против столбцов, имеющих другое значение в качестве ваших основных ключей. Это незначительно, но я обычно также использую единственные (не множественные) имена для моих таблиц.