初次使用表
做一表,遇到这样的问题,物品单上有很多商品,比如30个以上的,如果用表记录,将是一个物品占用一条记录,但是发货地和其它字段都相同,冗余太多,求教应该怎么样实现才好
发货地 品名 日期
北京 1
北京 2
…… 3
……
北京 30
这是一张单的,有好多单怎么设计表呢。
做一表,遇到这样的问题,物品单上有很多商品,比如30个以上的,如果用表记录,将是一个物品占用一条记录,但是发货地和其它字段都相同,冗余太多,求教应该怎么样实现才好
发货地 品名 日期
北京 1
北京 2
…… 3
……
北京 30
这是一张单的,有好多单怎么设计表呢。
发货地table的字段 : id name ……
物品单table的字段 : id 发货地table_id 商品table_id 日期……
商品table的字段: id name ……
就是说在实现上,一个表记录货单(号),另一个表记录每张单的物品,然后在前表中设货单号为主键,在后表中引此列做为外键,如此可以降低冗余,结构清晰。MYSQL,
我想使用自编的单号为主键,可以自动加1的,请教在MYSQL中要怎样的语句实现(以前用视窗只点点就行,现在都要语法语句,真不会)
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
有一点不明白,ID字段后的那个 MEDIUMINT 和 INT 有什么不同,我用的时候直接用的 INT ,那个 AUTO_INCREMENT=10000 可以可以设一个初值,比如说从10000开始?谢谢了
11.2. 数值类型
MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
13.1.5. CREATE TABLE语法AUTO_INCREMENT 表的初始AUTO_INCREMENT值。在MySQL 5.1中,本选项只适用于MyISAM和MEMORY表。InnoDB也支持本选项。如果引擎不支持AUTO_INCREMENT表选项,则要设置引擎的第一个auto-increment值,需插入一个“假”行。该行的值比创建表后的值小一,然后删除该假行。对于在CREATE TABLE语句中支持AUTO_INCREMENT表选项的引擎,您也可以使用ALTER TABLE tbl_name AUTO_INCREMENT = n来重新设置AUTO_INCREMENT值。
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html