我必须创建一个计数表,通过获取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)
);
答案 0 :(得分:0)
我相信如果你正在做一些编程,即。 PHP,您可以将MySql设计更改为更简单的设计。特别是,计算库存和利润是一项非常简单的任务。你也可以为出版商使用联合表,为什么?因为,根据当前的设计,您最终会为发布者提供冗余数据。由于一个发布者可以拥有多本图书,因此无需在每本图书的每个发布商字段中存储发布商名称,地址。我建议在booksavailable中添加一个日期列,这样您就可以简单地将新对象与可用书籍区分开来。这将删除newARrivals表,该表与booksavailable非常相同且非常冗余。
此外,您可以添加一个名为ORDER的表格来购买,购买从您可能计算的损失/利润的实际账面价格减去您销售图书的金额。此外,如果您在mysql中使用InnoDB引擎,这使您能够定义外键,则无需使用不同的名称调用每个表主键,它们都可以命名为ID。我推荐以下设计:
答案 1 :(得分: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 ..