3

我必须创建一个理货表,其中理货是通过从 booksavailable 和 newarrivals 获取售价、出版商的成本价格生成的,然后将两者相减以获得损益表。

如何使用引用上述键的语法声明计数表?该表的主键应该是什么?该表需要显示相应的 bookid 即买价和从该账簿带来的损益。

使用的代码:

CREATE TABLE BOOKSAVAILABLE( 
BID VARCHAR(5) PRIMARY KEY, 
        TITLE    VARCHAR(50),
        AUTHOR    VARCHAR(40), 
        CATEGORY VARCHAR(40), 
        PRICE VARCHAR(10),
        AVAILABLE VARCHAR(5)
);

CREATE TABLE NEWARRIVALS(
        BID VARCHAR(5) PRIMARY KEY, 
        TITLE VARCHAR(50), 
        AUTHOR VARCHAR(40), 
        CATEGORY VARCHAR(40),
        PRICE VARCHAR(10), 
        AVAILABLE VARCHAR(10)
);

CREATE TABLE PUBLISHER( 
        PID VARCHAR(5), 
        BID VARCHAR(5),
        PRIMARY KEY(PID,BID), 
        NAME VARCHAR(40), 
        CONTACT VARCHAR(10),
        UNITS VARCHAR(40), 
        SOLDAT VARCHAR(10)
);
4

2 回答 2

0
CREATE TABLE TALLY( 
ID int PRIMARY KEY,
BID VARCHAR(5) , 
PRICE_PROFIT_LOSS INT)

无论如何,在你的所有表中,价格的所有属性都是 varchar() 而它们应该是 int 或 bigint ..

也很高兴将 BID , PID 声明为 int 而不是 varchar() 并且实际上不需要计数表,因为它基本上是一个计算..但是如果你需要一个,那么结构 cud 就像上面一样.. PK因为计数表实际上只是一个自动生成的 ID..

于 2013-01-26T16:22:47.163 回答
0

我相信如果你正在做一些编程,比如 PHP,你可能会将你的 MySql 设计更改为更简单的设计。特别是,计算库存和利润是一项非常简单的任务。您也可以为发布者使用联合表,为什么?因为,在当前设计下,您最终将获得发布者的冗余数据。由于一个出版商可以拥有多本书,因此无需在每本书的每个出版商字段中存储出版商名称、地址。我建议在 bookavailable 中添加一个日期列,这使您有机会简单地将 newarivals 与可用书籍区分开来。这将删除 newarrivals 表,该表与 bookavailable 非常相同,因此是多余的。

您也可以添加一个名为 ORDER 的表来将您的购买放入其中,购买从您可以计算您的损失/利润的实际书籍价格中减去您出售书籍的金额。此外,如果您在 mysql 中使用 InnoDB 引擎,它使您能够定义外键,则无需使用不同的名称调用每个表的主键,它们都可以命名为 ID。我推荐以下设计:

mysql工作台图

于 2013-01-26T16:12:47.893 回答