请懂的朋友教一个表设计方案

mirrorspace 2009-05-19 02:37:01
初次使用表
做一表,遇到这样的问题,物品单上有很多商品,比如30个以上的,如果用表记录,将是一个物品占用一条记录,但是发货地和其它字段都相同,冗余太多,求教应该怎么样实现才好
发货地 品名 日期
北京 1
北京 2
…… 3
……
北京 30
这是一张单的,有好多单怎么设计表呢。
...全文
113 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sciland 2009-05-25
  • 打赏
  • 举报
回复
把重复多的字段独立出来,建立一个表,然后从总表中指过来,可以节省空间
ACMAIN_CHM 2009-05-21
  • 打赏
  • 举报
回复
ACMAIN_CHM 2009-05-21
  • 打赏
  • 举报
回复

那个 AUTO_INCREMENT=10000 可以可以设一个初值,比如说从10000开始?

http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#create-table
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值。



ACMAIN_CHM 2009-05-21
  • 打赏
  • 举报
回复

MEDIUMINT 和 INT 有什么不同

http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types
11.2. 数值类型
MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。





mirrorspace 2009-05-21
  • 打赏
  • 举报
回复
谢谢楼上,我用了这个语句了,成功建表了!
有一点不明白,ID字段后的那个 MEDIUMINT 和 INT 有什么不同,我用的时候直接用的 INT ,那个 AUTO_INCREMENT=10000 可以可以设一个初值,比如说从10000开始?谢谢了
ACMAIN_CHM 2009-05-20
  • 打赏
  • 举报
回复

基本上设计都是按楼上这种思路进行的。

比如发票,一张发票上有多行。一般都是和楼上这种设计一样。把发票分成两张表。

发票头 (发票号,日期,客户,。。。)
发票明细 (发票号,明细号,商品,单价,数量,金额,。。。)



ACMAIN_CHM 2009-05-20
  • 打赏
  • 举报
回复

MySQL中也可以通过命令设置自动编号。AUTO_INCREMENT,

下面是MySQL帮助手册中的一个例子。
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
mirrorspace 2009-05-20
  • 打赏
  • 举报
回复
太谢谢了。
就是说在实现上,一个表记录货单(号),另一个表记录每张单的物品,然后在前表中设货单号为主键,在后表中引此列做为外键,如此可以降低冗余,结构清晰。

MYSQL,
我想使用自编的单号为主键,可以自动加1的,请教在MYSQL中要怎样的语句实现(以前用视窗只点点就行,现在都要语法语句,真不会)
phoenix_pj 2009-05-19
  • 打赏
  • 举报
回复
lz觉得这样可以满足需求吗?
phoenix_pj 2009-05-19
  • 打赏
  • 举报
回复
建3张表 发货地table , 物品单table, 商品table
发货地table的字段 : id name ……
物品单table的字段 : id 发货地table_id 商品table_id 日期……
商品table的字段: id name ……
phoenix_pj 2009-05-19
  • 打赏
  • 举报
回复
sf
课程通过实际项目融入常用开发技术架构,讲授风格独特,提供详细上课日志及答疑,赠送配套的项目架构源码注释详细清晰且达通俗,均能直接在实际项目中应用,正真的物超所值,价格实惠任务作业:综合运用《C#/.Net企业级系统架构设计实战精讲程》课程所学知识技能设计一个学生成绩管理系统的架构。要求:1.系统基于MVC的三层架构,各层单独建不同的解决方案文件夹。2.采用Model First开发方式,设计架构时只需要设计学生(TbStudent)和课程(TbCourse)。学生必须有的字段是ID、stuName、age;课程必须有的字段是ID、courseName、content。3.数据访问层采用Entity Framework或NHibernate来实现,必须封装对上述的增删改查方法。4.必须依赖接口编程,也就是必须要有数据访问层的接口层、业务逻辑层的接口层等接口层。层层之间必须减少依赖,可以通过简单工厂或抽象工厂。5.至少采用简单工厂、抽象工厂、Spring.Net等技术中的2种来减少层与层之间的依赖等。6.封装出DbSession类,让它拥有所有Dal层实例和SaveChanges方法。7.设计出数据访问层及业务逻辑层主要类的T4模板,以便实体增加时自动生成相应的类。8.现层要设计相关的控制器和视图来验证设计的系统架构代码的正确性,必须含有验证增删改查的方法。9.开发平台一定要是Visual Studio平台,采用C#开发语言,数据库为SQL Server。10.提交整个系统架构的源文件及生成的数据库文件。(注意: 作业需写在CSDN博客中,把作业链接贴在评论区,老师会定期逐个批改~~)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧