社区
疑难问题
帖子详情
一张主表 多张不同结构从表?
dryZeng
2010-08-16 11:04:24
如今设计一订购系统,有一张订单主表和多张不同结构的从表,结构如下:
订单主表
订单Id 订购总金额 发票Id 订购时间 .......
从表1
标识 单价 数量 金额 其它字段11 字段12 字段13
从表2
标识 单价 数量 金额 其它字段21 字段22 字段23 字段24
发票表
发票Id 发票号
请问这样设计表合理吗?
还有,如果订购金额为0,不用打印发票,订单表的发票Id为空正常吗?
谢谢各位有心人。
...全文
128
18
打赏
收藏
一张主表 多张不同结构从表?
如今设计一订购系统,有一张订单主表和多张不同结构的从表,结构如下: 订单主表 订单Id 订购总金额 发票Id 订购时间 ....... 从表1 标识 单价 数量 金额 其它字段11 字段12 字段13 从表2 标识 单价 数量 金额 其它字段21 字段22 字段23 字段24 发票表 发票Id 发票号 请问这样设计表合理吗? 还有,如果订购金额为0,不用打印发票,订单表的发票Id为空正常吗? 谢谢各位有心人。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 15 楼 hao1hao2hao3 的回复:]
其他字段有涉及连接其他表的外键和收费类型不大一样,这也没关系啊!加个case when判断一下就可以了,为空不连接,否则连接
我们的CRM里面都是这样设置的,比如两个外键,分别连接A表,B表,如果数据与A关联则A有值,B为空,否则,反过来就行了,这样没影响的,不过你要分开两个表也行,你自己定吧!
[/Quote]
嗯 ,谢谢你的建议。但如果用你这样和我建两张表这样,查询的时候哪种效率更高呢?
hao1hao2hao3
2010-08-16
打赏
举报
回复
[Quote=引用 12 楼 dryzeng 的回复:]
引用 6 楼 hao1hao2hao3 的回复:
如果订购金额为0,不用打印发票
--那可以让订单主表的发票id为空。
从表1和从表2的字段合并,有部分是相同的,其他没有的留空就可以了。
谢谢回复
看来,发票ID还是让其为空了,的确不影响什么。
但两从表,因为其它字段有涉及连接其它表的外键。所以按我现在的思路是不能合到一起的。因为两张从表的收费类型大不一样。
[/Quote]
其他字段有涉及连接其他表的外键和收费类型不大一样,这也没关系啊!加个case when判断一下就可以了,为空不连接,否则连接
我们的CRM里面都是这样设置的,比如两个外键,分别连接A表,B表,如果数据与A关联则A有值,B为空,否则,反过来就行了,这样没影响的,不过你要分开两个表也行,你自己定吧!
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 10 楼 orchidcat 的回复:]
可见打或不打发票是通过金额来限定的。可添加计算列来判断
冗余就是空间换时间的问题。想象下如果要联合查询。100W级别的会是什么效果。1000W级别的又是什么效果....
[/Quote]
这的确是个问题。
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 11 楼 csharpvb 的回复:]
那如果金额为0,不用打发票怎么办呢?一般会怎么处理呢?
我认为金额为0的话,应该就不用插入到数据库里面吧?
[/Quote]
但是要订购记录吧,不然客户要查询订购记录都没有。
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 6 楼 hao1hao2hao3 的回复:]
如果订购金额为0,不用打印发票
--那可以让订单主表的发票id为空。
从表1和从表2的字段合并,有部分是相同的,其他没有的留空就可以了。
[/Quote]
谢谢回复
看来,发票ID还是让其为空了,的确不影响什么。
但两从表,因为其它字段有涉及连接其它表的外键。所以按我现在的思路是不能合到一起的。因为两张从表的收费类型大不一样。
win7cc
2010-08-16
打赏
举报
回复
那如果金额为0,不用打发票怎么办呢?一般会怎么处理呢?
我认为金额为0的话,应该就不用插入到数据库里面吧?
Mr_Nice
2010-08-16
打赏
举报
回复
[Quote=引用 3 楼 dryzeng 的回复:]
引用 2 楼 js_szy 的回复:
订单表的发票Id为空正常吗?
这肯定不行,这样以后在与主表连接的时候,没法连接
从表1
,从表2 完全可以放到一块
那如果金额为0,不用打发票怎么办呢?一般会怎么处理呢?
两张从表结构不一样,放一起会有很多冗余呢?
[/Quote]
可见打或不打发票是通过金额来限定的。可添加计算列来判断
冗余就是空间换时间的问题。想象下如果要联合查询。100W级别的会是什么效果。1000W级别的又是什么效果....
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 4 楼 sqlcenter 的回复:]
订单表的发票Id为空正常吗
-------
问题不大
从表1,从表2不知道你是否重复了
[/Quote]
谢谢回复,不知道关于发票Id有没有更好的解决方法。如果为空总感觉有点不合理。
两从表结构不一致,所有才用了两从表,我现在只有在程序里面处理,所以现在感觉不合理。希望大家有更好的办法。
win7cc
2010-08-16
打赏
举报
回复
你可以去下载一个订餐系统的数据库,ACCESS的,看看里面的表结构是怎么定义,是否还需要加强的。
hao1hao2hao3
2010-08-16
打赏
举报
回复
你没要求订单和发票一定要关联的,其他地方有没有这样的要求。如果没有,那可以为空。
hao1hao2hao3
2010-08-16
打赏
举报
回复
如果订购金额为0,不用打印发票
--那可以让订单主表的发票id为空。
从表1和从表2的字段合并,有部分是相同的,其他没有的留空就可以了。
SQLCenter
2010-08-16
打赏
举报
回复
起码:标识 单价 数量 金额
这几项是重复了
实在有必要分开两表,其中一表将这些共同的字段拿掉。
SQLCenter
2010-08-16
打赏
举报
回复
订单表的发票Id为空正常吗
-------
问题不大
从表1,从表2不知道你是否重复了
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 2 楼 js_szy 的回复:]
订单表的发票Id为空正常吗?
这肯定不行,这样以后在与主表连接的时候,没法连接
从表1
,从表2 完全可以放到一块
[/Quote]
那如果金额为0,不用打发票怎么办呢?一般会怎么处理呢?
两张从表结构不一样,放一起会有很多冗余呢?
华夏小卒
2010-08-16
打赏
举报
回复
订单表的发票Id为空正常吗?
这肯定不行,这样以后在与主表连接的时候,没法连接
从表1
,从表2 完全可以放到一块
dryZeng
2010-08-16
打赏
举报
回复
从表里忘了加外键。
dryZeng
2010-08-16
打赏
举报
回复
[Quote=引用 17 楼 hao1hao2hao3 的回复:]
看你分开后是只查一张表还是两个表都要查了,如果业务情况决定了可以一次只查分开后的一张表,那当然是分开好了,这样每个表中的数据量明显比和在一起的要少,当然还要考虑实际情况建索引等。如果分开后还是两张表都要查,那么还不如直接放在一个表里面,更方便操作。
[/Quote]
实际情况是会单独查询订单主表,再根据记录ID查询从表。也会单独查询从表记录,而且频率还很高。所以还是考虑分开表存储。
感谢持续关注,回头结贴。
hao1hao2hao3
2010-08-16
打赏
举报
回复
看你分开后是只查一张表还是两个表都要查了,如果业务情况决定了可以一次只查分开后的一张表,那当然是分开好了,这样每个表中的数据量明显比和在一起的要少,当然还要考虑实际情况建索引等。如果分开后还是两张表都要查,那么还不如直接放在一个表里面,更方便操作。
大数据之Hive详解
Hive是基于Hadoop的一个数据仓库工具,可以将
结构
化的数据文件映射为
一张
表,并提供类SQL查询功能。是hadoop的一个数据仓库工具,可以将
结构
化的数据文件映射为
一张
表,并提供类SQL查询功能。本质是将HQL转化成...
sqlserver如何把两张表的数据合并为
一张
表
今天在公司做项目的时候遇到一个情况,有两张临时表A(inco varchar(50))、表B(qty varchar(50)) 需要将这个两个表的数据插入到
一张
临时表中C(inco varchar(50),qty varchar(50),biid varchar(50)) 仔细想了...
mysql 多表数据同步到
一张
表中
现有3张表,2张同步表,
一张
本地表,现在需要将同步表中的数据更新到本地表中。mysql 因为不支持 全关联,所以只能使用左、右分别关联两张表的方式获取全量信息。 通过insert select from 的方式,合并表数据。 ...
C#中Merge方法实现把
不同
表
结构
的表合并成
一张
表,同时合并数据
以前做评教系统时记得想把2张表
结构
不同
的表合成
一张
表,当时没找到使用代码如何实现,最后采用了建立视图的方式方法实现.今天解决某个问题时突然看到了Merge方法可以不建立视图就解决我当时的问题,记录下来: 使用...
如何用sqlserver语句复制
一张
表 包括跨库
如何用sql语句复制
一张
表 1、复制表
结构
及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。 不过这种方法的一个最不好...
疑难问题
22,206
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章