其实你所说的20X20,应该说只是列数限制在20,行数应该是可以不限的
建议使用这样的数据库CREATE TABLE [dbo].[AT_ShippingBay] (
[ShippingPropertyID] [int] NOT NULL ,
[VoyageID] [int] NOT NULL ,
[BayID] [int] NOT NULL ,
[ID] [int] NOT NULL ,
[BayDetail] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[BayPlaceCode] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
把你需要存储的数据,放在BayDetail中,也就是一个层形成一条记录
口口口 口口口 ----〉层
口口口口口口口口
口口口口口口口口
================
口口口口口口口口
口口口口口口
口口口口口口
口口口口在BayDetail中,你的数据可以如此划分:1:[集装箱号 = ""][尺码 = ""];2:[集装箱号 = ""][尺码 = ""];3:[集装箱号 = ""][尺码 = ""]..................最好后头加一个结束符,如果能够使用整段的XML最好,你制定一个XSD即可
不过我还不知道如何在一个字段中存放XML和读取出来
查询的时候,你使用like就可以找到你需要的记录,然后再把这里头的数据解包即可对了,我认为船舶的甲板面存放的集装箱数最多,因此你的最大的数字需要来源于甲板面
建议使用这样的数据库CREATE TABLE [dbo].[AT_ShippingBay] (
[ShippingPropertyID] [int] NOT NULL ,
[VoyageID] [int] NOT NULL ,
[BayID] [int] NOT NULL ,
[ID] [int] NOT NULL ,
[BayDetail] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[BayPlaceCode] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
把你需要存储的数据,放在BayDetail中,也就是一个层形成一条记录
口口口 口口口 ----〉层
口口口口口口口口
口口口口口口口口
================
口口口口口口口口
口口口口口口
口口口口口口
口口口口在BayDetail中,你的数据可以如此划分:1:[集装箱号 = ""][尺码 = ""];2:[集装箱号 = ""][尺码 = ""];3:[集装箱号 = ""][尺码 = ""]..................最好后头加一个结束符,如果能够使用整段的XML最好,你制定一个XSD即可
不过我还不知道如何在一个字段中存放XML和读取出来
查询的时候,你使用like就可以找到你需要的记录,然后再把这里头的数据解包即可对了,我认为船舶的甲板面存放的集装箱数最多,因此你的最大的数字需要来源于甲板面
解决方案 »
- (急切求助)C++版视频切割修改成C#版。。。
- C#中XML文件数据如何保存在泛型集合中
- OleDb.OleDbDataAdapter.Update() 的问题,老是报出 INSERT INTO 语句的语法错误 ,请大家帮我看看
- 世界第一等,Xenocode Postbuild 2006 Professional
- 哎,百思不得其解,原本自己重画一个窗体,换上皮肤变得漂亮,谁知道重画右边的图像变样了
- 水晶报表系列教程 拿出来与大家分享
- 如何在winform中实现 Tab Control 中的“应用”按钮
- 线程方法不允许带参数,但是我的这个方法必须带几个参数,应该怎么样处理比较好?
- 双CPU运行Visual Studio 有好处吗?
- 各位帮忙看看这段代码,有什么问题?老说字符串输入不正确!
- 100分在线等,汉字符串如何直接存入SqlServer的image类型的字段里?
- ☆☆☆关于打印,问题有点偏激!!!
[ShipID] [int] NOT NULL , //船号
[xID] [int] NOT NULL , //货柜所在行ID
[yID] [int] NOT NULL , //货柜所在列ID
[zID] [int] NOT NULL , //货柜所在深度
[Size][int] not null, //货柜尺寸
[BayDetail] [varchar] (8000) NULL //货柜所在描述
) ON [PRIMARY]
x,y,z的值是绝对位置的值,不是相对位置的值
例如:集装箱数据如此定义: <ContainerName>CLCU8875938</ContainerName>,查询的时候,使用 like '<ContainerName>CLCU8875938</ContainerName>'查询到的数据就非常准确了
1 2 3 4 5 6
7 8 9 10 11 12
按这种方式牌号然后用集合保存每个号码上的集装箱
按序号开始保存 如 key = 1, value = 1 key = 2 value = 0 key =3 value = 3
该位置如果没有就是0,要是有重的保存序号小的 如:1和7是一个箱子 key =7 value = 1;这样吧集合序列化保存到数据库就行了
取出来的是后返序列化就可以了搞定快给我分! 哈哈!
▋▋▋▋▋▋ ---〉013Bay
▋▋▋▋▋▋ ---〉011Bay
▋▋▋▋▋▋ ---〉009Bay
▋▋▋▋▋▋ ---〉007Bay
▋▋▋▋▋▋ ---〉005Bay
▋▋▋▋▋▋ ---> 003Bay 横切面 然后从这幅图的下方往上方看,可以得到下图
▋▋▋▋ ---〉001Bay我们把这个图称之为BayPlace,每一个层都有编号,每一个列也都有编号
口口 口口
口口口口口口
口口口口口口
============
口口口口口口
口口口口口口
口口口口口口
口口口口详细的编号例如
0010686 0010486 0010386 0010586
0010684 0010484 0010284 0010184 0010384 0010584
0010682 0010482 0010282 0010182 0010382 0010582
0010608 0010408 0010208 0010108 0010308 0010508
0010606 0010406 0010206 0010106 0010306 0010506
0010604 0010404 0010204 0010104 0010304 0010504
0010402 0010202 0010102 0010302 甲板下,从下往上,从02开始,甲板上从下往上,从82开始,双数递增
从中往外,右边从01开始,单数递增,左边从02开始,双数递增我认为还是采用XML比较好其实我也考虑到可以使用硬画的方式画位置,也就是说我可以直接根据这些Bay规则画集装箱的位置图,这个方案就可以去除这个位置表,唯一的问题是大于20尺的不大好处理
to lulz97(田野) 一个大的港口,比如上海港每天都会有三四十艘,如果采用我以前的做法,也就是说当平均一艘船有30个Bay的时候,每个航次的数据将会有600条记录,每天将会有21000的数据,运行两年之后,将会有15330000条记录。数据保存两年很正常的但是,集装箱并不见得有这么多,因为并不是每艘船都是在这里满载
2、船舶的集装箱可装载位置规范,类似AT_ShippingBay,同样是采用了最大20X20的方式
3、船舶的实际装载记录,数据表就是AT_ShippingBay
主要目的是要对集装箱的每次装载进行记录,同时画出直观的位置图,位置图就如
口口 口口
口口口口口口
口口口口口口
============
口口口口口口
口口口口口口
口口口口口口
口口口口
同时标上箱号、尺码、重量、位置编号等等
船舶的Bay位数据表类似我之前提的模式CREATE TABLE [dbo].[AT_ShippingBay] (
[ShippingPropertyID] [int] NOT NULL ,
[VoyageID] [int] NOT NULL ,
[BayID] [int] NOT NULL ,
[ID] [int] NOT NULL ,
[BayDetail] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,
[BayPlaceCode] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
[ShipID] [int] NOT NULL , //船号
[xID] [int] NOT NULL , //货柜所在行ID
[yID] [int] NOT NULL , //货柜所在列ID
[zID] [int] NOT NULL , //货柜所在深度
[goods_id] //货柜ID
) ON [PRIMARY]
--集装箱分为20尺,40尺,45尺,48尺,假设一个“▋”代表一个20尺的的--集装箱,则40尺需要占两个
抽象成三种情况,20尺,40尺,60尺,然后把40尺和60尺的抽象成两个20尺,和3个20尺的基本单位。