我有一个大型数据集可用于创建一个存储系统来监视商店中的移动。那家商店有大约300多种产品,所有表的主要结构都相同。唯一的区别是里面的数据。有一个更大的数据库,称为StorageTF,我想创建许多名为Product_1,Product_2,Product_3等的表。 表格结构应该像
主要的大数据集(表)如下:
CREATE TABLE StoringTF (
Store_code INTEGER,
Store TEXT,
Product_Date TEXT,
Permission INTEGER,
Product_Code INTEGER,
Product_Name TEXT,
Incoming INTEGER,
Unit_Buying_Price INTEGER,
Total_Buying_Price INTEGER,
Outgoing INTEGER,
Unit_Sell_Price INTEGER,
Total_Sell_Price INTEGER,
Description TEXT)
我希望用户在称为PCode的条目中输入代码 看起来像这样
PCode = Entry(root, width=40)
PCode.grid(row=0,column=0)
然后,一个函数将输入与主表中的所有代码进行比较,然后取其中一个并获得具有相同product_code的表。 顺序是这样。将创建主表中所有product_Codes的所有产品表,并将包含来自主表中具有相同product_code的所有数据。 然后,当程序打开时,用户输入product_code 程序将选择具有相同代码的表并将其显示给用户。 非常感谢,我知道这很难,但我确实需要您的帮助,并且我确定您可以帮助我。谢谢。
产品表应类似于
CREATE TABLE Product_x (Product_Code INTEGER,
Product_Name TEXT, --taken from main table from lines that has same product code
Entry_Date, TEXT,
Permission_Number INTEGER,
Incoming INTEGER,
Outgoing INTEGER,
Description TEXT,
Total_Quantity_In_Store INTEGER, --which is main table's incoming - outgoing
Total_Value_In_Store INTEGER --main table's total_buying_price - total_sell_price
)
谢谢您的帮助,希望您能解决这个问题,因为我真的很努力。
答案 0 :(得分:0)
根据您的评论:
我想我会从主表中选择一些列,但我不知道如何用主表中的选择列(产品代码= PCode.get()“)更新仅有的一些列”。那可能吗。
是的,绝对有可能只向用户显示某些数据行和列。
但是,可以采用多种模式(即编程技术)将数据呈现给用户,但是每种常见的最佳实践技术总是将后端数据(即数据库)与用户界面分开。不必一次将数据显示限制在一个完整的表中。在大多数情况下,永远不应完全按照表中显示的方式向用户展示和/或公开数据。当然,有时数据足够简单,直接,可以做到这一点,但是大多数应用程序会重新格式化和分组数据,以不同 视图进行正确显示。 (这里的 view 是一个非常通用的抽象术语,用于以其他方式表示数据的存储方式。我在下面提到了特定的sqlite视图。)
现代数据库背后的全部理念是高效,精心设计的存储,可以对其进行查询,以返回适合每个应用程序的数据。此功能大部分基于主机语言数据模型,但sqlite直接支持功能来帮助实现此目的。例如,可以定义 view 一次仅选择某些列和行(即选择某些Produce_Code值)。 sqlite视图只是一个保存的SQL查询,可以为其定义某些属性和操作。默认情况下,sqlite view是只读的,但是可以定义触发器以允许通过视图更新基础表。
根据我先前的评论:您应该研究数据标准化。这是设计关系数据库的关键原则。例如,您应该避免重复的数据列,例如Product_Name
。该列应仅在StoringTF中。计算列通常也是多余和不必要的-不要存储Total_Value_In_Store
列,而是在查询和/或 view 需要时进行计算。重复的列会导致数据不匹配,或者至少会引起不必要的注意,以确保更新一列时所有列均已同步。相反,您可以只查询联接的表以获取相关值。
老实说,在正确实施这些概念之前,需要进行大量研究。一定要继续开发适合您需求的解决方案,但是对于我认为您可能需要的完整教程,Stack Overflow答案是没有地方的。确实,您的问题似乎更多地是关于总体设计的,我认为我的回答可以使您入门正确。任何更具体的内容,以后都需要问其他问题。